Mongodb 副本集配置

配置

数据目录: /data02/mongodb/data_27018
配置文件:
#端口号,使用默认端口
port = 27018
#绑定ip
bind_ip = 10.0.0.25
dbpath = /data02/mongodb/data_27018
#日志目录
logpath = /data/mongodb/logs/mongodb_27018.log
logappend = true
#是否以守护进程的方式运行
fork = true
#是否关闭http管理接口
#nohttpinterface=true
# 副本集名称, 一致
replSet=rs0

三个MongoDb实例: 修改如下四项,达到目的;
端口、数据目录、日志文件、整个集名称,同一个必需一样

端口为: 27017 | 27018 | 27019 ==> 修改好的,启动【略】

初始化

rs.initiate(
{"_id" : "rs0",
"members" : [
{"_id" : 0, "host" : "192.168.100.101:27017"},
{"_id" : 1, "host" : "192.168.100.101:27018"}
]
});

上面的命令会初始化一个副本集,两台机子会是标准的副本主机,rs.isMaster() 中的 host 段,可查看到

上面的初化之后,并不会自动切换主从,即:在主Mongo下线后,并不会从Mongo并不会自动升级为主,可能是因为没有仲裁节点

添加仲裁节点,可在初始化的时候指定

仲裁节点,只会进行选举投票,不进行数据同步,命令:

rs.add( { host: "192.168.100.101:27019", "arbiterOnly":true } );

此时在主Mongo上使用: rs.isMaster() 就可以在:arbiters 段查看到

直接指定一个主MongoDb实例:

rs.add( { host: "10.0.0.28:27018", priority: 1, votes: 1 } );
# priority 值越大,越优先
# votes 选举投票数,越多,则越优先
# 如果两个参数都为:0, 则表示此节点为一个普通复制节点

数据同步状态查询

rs.printSlaveReplicationInfo()
#从库的IP及端口
source: 192.168.100.76:27018
#目前的同步情况,延迟了多久等信息
syncedTo: Wed Sep 12 2018 18:59:27 GMT+0800 (CST)
0 secs (0 hrs) behind the primary