查看复制情况:从库都有哪些,以及每台从库与主库的同步时间差
db.printSlaveReplicationInfo()
查看副本集状态:查看复制集拓扑、及运行情况
rs.status()
查看复制集配置:查看各节点的详细配置情况
rs.config()
rs.conf()
##查看复制集各节点的启动参数和配置情况
db.serverCmdLineOpts()
##mongo shell登陆从后需要进行操作需运行下面命令,程序driver无需
rs.slaveOk()
##删除节点
rs.remove("10.1.8.69:27018")
##主节点退位
rs.stepDown()
##查看本节点是否为主节点,及所有可见节点,及本节点是哪个。driver每次连接都会执行以选取相应的节点
db.isMaster()
从节点不建立索引:此选项为永久选项,配置后需要更改则必须先移除该节点、删除所有数据、再重新加入才可以。并且不建立索引的节点不能成为主节点(所以priority必须为0)。适用范围:性能较低服务器或者只用于备份或离线任务处理的机器可以配置。
1、rs.remove("10.1.8.69:27018")
2、登录被移除的节点上
3、关闭该节点
use admin
db.shutdownServer()
4、移除该节点数据目录下的所有数据
rm MONGODB_DATA_DIR/*
5、重新启动
6、rs.add({"host":"10.1.8.69:27018","priority":0,"buildIndexes":false})
配置延迟节点:该节点必须被隐藏,并且不能成为主节点。适用范围:处理一定时间段内的误操作(个人感觉意义不大)
cfg=rs.conf()
cfg.members[1].slaveDelay=60 ##延迟60秒
cfg.members[1].priority=0
cfg.members[1].hidden=true
rs.reconfig(cfg)
rs.conf()
配置隐藏节点或者备份节点:对driver不可见,适用范围:性能较低的机器或者仅用于备份及批量处理的机器。一般这样的机器不适合做主节点(会配置其优先级为0)
cfg=rs.conf()
cfg.members[1].hidden=true
cfg.members[1].priority=0
rs.reconfig(cfg)
rs.conf()
#也可以用添加的方式进行配置备份节点或者隐藏节点
rs.add({"_id":2,"host":"192.168.199.164:27019","priority":0,"hidden":true})
配置优先级:一般在主节点进行配置(优先级配置范围0-100),优先级较高并且数据是最新的节点会变成主节点。对于优先级都为0的复制集不可以执行reconfig
cfg=rs.conf()
cfg.members[1].priority=3
rs.reconfig(cfg)
rs.conf() ##查看配置是否生效
添加仲裁节点:在复制集数量为偶数时添加,复制集为奇数时完全不用加。一般仲裁节点机器性能要求不高,并且仲裁节点只能有一个
rs.addArb("192.68.199.163:27020")
##更改成员host,更换了IP的,或者用于替换某个成员。被添加的成员要启动时指定replSet选项。
cfg=rs.conf()
cfg.members[2].host="10.1.8.69:27018"
rs.reconfig(cfg)
rs.conf() ##查看配置是否生效
#等待写入复制,保证复制集大部分节点间的数据一致性防止数据丢失,会牺牲写入性能
每个连接独享
db.products.insert( { item: "envelopes", qty : 100, type: "Clasp" }, { writeConcern: { w: "majority", wtimeout: 5000 } } )
#永久配置
cfg=rs.conf()
cfg.settings = {}
cfg.settings.getLastErrorDefaults = { w: "majority", wtimeout: 5000 }
rs.reconfig(cfg)
##将复制集中的某台机器暂时退出维护(单机模式启动)
登录主节点并移除要维护的节点
rs.remove("10.1.8.69:27019")
登录要维护的节点关闭节点
use admin
db.shutdownServer()
重指定其它端口 --port 并去掉replSet配置后启动就可以对本节点进行单机模式的维护。维护完毕后,恢复之前的配置,重新启动后自动加入复制集
##强制重新配置
当复制集不满足大多数要求后,将不能选举出主节点。可以用强制重新配置进行重配置(必须在从几点进行)
rs.reconfig(cfg,{"force":true})
##阻止选举,需要对主节点进行维护时,又不希望其它节点进行选举,可以在所有其他节点
执行下方命令,将会阻止该节点选举成为主节点。
rs.freeze(10000) ##禁止10000秒该节点进行主节点选举
rs.freeze(0) ##恢复其它节点的被选举权利,或者让退位的主节点恢复