MongoDB复制集常用操作

查看复制情况:从库都有哪些,以及每台从库与主库的同步时间差

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)。适用范围:性能较低服务器或者只用于备份或离线任务处理的机器可以配置。

1rs.remove("10.1.8.69:27018")

2、登录被移除的节点上

3、关闭该节点

use admin

db.shutdownServer()

4、移除该节点数据目录下的所有数据

rm  MONGODB_DATA_DIR/*

5、重新启动

6rs.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) ##恢复其它节点的被选举权利,或者让退位的主节点恢复

猜你喜欢

转载自blog.csdn.net/donghaixiaolongwang/article/details/79884980