环境配置
架构: 一主两从 (三台虚拟机)
系统版本: CentOS Linux release 7.4.1708 (Core)
MongoDB 版本: 3.0.15
MongoDB 安装
以下操作在三台虚拟机都进行
下载 yum 源配置
- wget https://repo.mongodb.org/yum/redhat/mongodb-org-3.0.repo
- mv mongodb-org-3.0.repo /etc/yum.repos.d/
安装 mongodb
yum -y install mongodb-org
修改 mongodb 配置文件
- # 修改监听地址为 0.0.0.0
- net:
- port: 27017
- bindIp: 0.0.0.0
- # 修改副本集配置, 此项为之后配置副本集所需要的配置
- replication:
- oplogSizeMB: 20480
- replSetName: gogen
修改内核配置
- # 最好加入开机自启动配置文件
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
修改文件描述符 / etc/security/limits.conf
- # 在配置文件最后加入以后内容
- mongod soft nofile 64000
- mongod hard nofile 64000
- mongod soft nproc 32000
- mongod hard nproc 32000
启动服务
- chkconfig mongod on
- service mongod start
副本集部署
在任何一台服务器上面执行下面命令登录至 monogdb
mongo
切换至 admin 库
> use admin
定义一个 config 变量
> config={_id:"gogen",members:[{_id:0,host:"192.168.6.91:27017"},{_id:1,host:"192.168.6.92:27017"},{_id:2,host:"192.168.6.93:27017"}]}
初始化配置, 返回 { "ok" : 1 } 则创建成功
- > rs.initiate(config)
- { "ok" : 1 }
- gogen:OTHER>
- gogen:PRIMARY>
副本集权重配置
在任何一台服务器上面登录至 monogdb 再执行下面的命令, 首先定义一个变量
gogen:PRIMARY> cfg=rs.config()
更改第一个主机的权重为 100
gogen:PRIMARY> cfg.members[0].priority=100
更改第二个主机的权重为 90
gogen:PRIMARY> cfg.members[1].priority=90
更改第三个主机的权重为 1
gogen:PRIMARY> cfg.members[2].priority=1
刷新配置
gogen:PRIMARY> rs.reconfig(cfg)
副本集基本命令使用
查看副本集状态
gogen:PRIMARY> rs.status()
查看副本集配置
gogen:PRIMARY> rs.config()
测试
在主上面写入一些数据, 查看从是否可以从主同步
测试主宕机 (直接关机, 或者停止服务), 是否可以在另外两台从里同重新选举出新主
在新主上面再写入数据, 查看另外一个从是否可以同步
恢复宕机的旧主服务器, 查看新写入的数据是否可以同步到旧主, 另外查看是否会将主夺取回来
来源: http://www.bubuko.com/infodetail-2517783.html