一、mondodb 副本集
primary(主) secondary(从),可以设置权重
arbiter(仲裁)只负责裁决,不存储数据
从的机子上:
vim /etc/mongod.conf 添加
replication:
#oplog大小
oplogSizeMB: 20
#复制集名称
replSetName: aminglinux
重启 /etc/init.d/mongod restart
到主的机子上:
mongo
> use admin
> config={_id:"adminglinux",members:[{_id:0,host:"192.168.32.111:27017"},{_id:1,host:"192.168.32.112:27017"}]}
_id 副本集名字,members:从的机子
> rs.initiate(config) 加载 config
> rs.status() 如果有将从机子加进去,就不用下面的命令
> rs.add("192.168.32.112")
> rs.config() 查看相关的配置
如果配置成功之后,mongo 进入之后主会有 promary, 从会有 secondry
> var config=....
> rs.reconfig(config) 重新加载
二、副本集测试
主上面:
> use mydb
> db.createCollection('testc')
> show dbs
从上面:
> show dbs 失败,因为没有权限
> rs.slaveOk() 赋予从权限
> show dbs 可以查看
> use mydb
> show tables
主上面:
> rs.status() 查看从的health 如果是1 就说明是健康的
> rs.config() 查看权重 (priority),权重越高就会变成主
> cfg=rs.conf()
> cfg.members[0].priority = 3 设置第一个从机子上的权重为 3
> rs.reconfig(cfg)
> rs.config() 此时查看从的权重是否不同
禁掉主上面的端口
iptables -I INPUT -p tcp --dport 27017 -j DROP
从上面:
权重最高的从变成主,此时查看 rs.status() 就会看到原来的主 health 变成 0
主上面:
iptables -D INPUT -p tcp --dport 27017 -j DROP
主恢复之后,从上面添加的数据会自动添加到主上面