mongodb副本集搭建
mongodb单台服务器
数据会有丢失的风险
单台服务器无法做高可用
mongodb副本集能够预防数据丢失,多台mongodb数据一致。
mongodb副本集能够在有问题的时候自动切换。
每台服务器的内核设置必须一样,不然可能会报错。
mongodb配置
systemLog:
destination: file #日志路径
logAppend: true #每次启动用追加的模式生成日志
path: /data/mongodb/27017/mongodb.log
storage:
dbPath: /data/mongodb/27017/
journal:
enabled: true #数据日志,避免数据丢失
processManagement:
fork: true
net:
port: 27017
bindIp: 127.0.0.1,172.16.1.51 #监听的ip
replication:
replSetName: liangqicong
进入mongodb
设置变量
config = {_id:"liangqicong",members:[{ _id:0,host:"172.16.1.51:27017" },{ _id:1,host:"172.16.1.52:27017" },{ _id:2,host:"172.16.1.53:27017" }]}
初始化副本集
rs.initiate(config); #需要一定时间
rs.status() #查看集群状态 集群只有一个primary,其他都是secondary,secondary是不允许读写的,如果非要解决,可以输入命令rs.slaveOk()。
rs.slaveOk() #声明slave
rs.printSlaveReplicationInfo() #查看slave的延时状况
mongodb的副本集故障自动切换
mongodb的切换是全自动的,当主挂掉之后从自然后替代上来,无需配置和干预。
mongodb的副本集优先级
默认的权重都是1
rs.config() #查看当前配置
conf = rs.config() #将当前配置赋值给conf这个变量
conf.members[0].priority= 10 #将配置里面的第一个数组(member0)里面的priority设置成10
conf.members[1].priority= 5
conf.members[2].priority= 2
重新读取配置
rs.reconfig(conf)