Mongodb副本集管理

仓廪实则知礼节,衣食足则知荣辱。这篇文章主要讲述Mongodb副本集管理相关的知识,希望能为你提供帮助。
添加副本集节点
1、副本集最小架构副本集上一次配置完成,架构如下P-S-A,两个节点提供数据的访问,一个节点为仲裁节点(不存储数据),也是副本集的最小架构。

Mongodb副本集管理

文章图片

2、正式环境建议使用:P-S-S架构
Mongodb副本集管理

文章图片

3、添加新节点对于读多写少的业务,可以通过添加复制集节点来均衡读负载,新节点版本应和复制集成员保持一致。添加操作命令在Primary节点执行。数据库操作尽量在业务低峰期操作,如果数据量较大复制会很慢,如果oplog设置过小还会导致数据同步失败,修改oplog大小,也可以停掉一个secondary节点将数据复制到新节点,云主机可以做磁盘镜像方式,然后进行节点的添加,添加为隐藏节点程序不可见,待数据同步完成,在设置为可见节点设置为secondary节点。
命令: rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } ) //添加仲裁节点 rs.add( { host: "mongodbd4.example.net:27017", priority: 0 } ) //添加secondary节点,权重为0,

priority为0的节点,如果其它节点出现故障,该节点不能被选举成主节点(副本集节点个数尽量保持奇数)。
Mongodb副本集管理

文章图片

3.1、添加延迟备份节点(如数据误删除,一小时内发现可以使用延迟节点进行恢复)
rs.add( { "_id" : < num> ,//指定一个id "host" : < hostname:port> ,//新节点的ip:端口 "priority" : 0,//该节点权重为0 "slaveDelay" : < seconds> ,//延迟复制,延迟Primary节点多少秒 "hidden" : true//设置为隐藏节点(程序员不可见) })> rs.add({_id:5,host:\'10.0.1.9:27040\',"slaveDelay":3600,"priority":0,"hidden":true,"buildIndexes":true}); //添加新节点延迟复制1小时,权重为0,该节点程序不可见,索引也进行同步

3.2、修改现有复制集节点信息
cfg = rs.conf() cfg.members[1].priority = 0//权重设置为0 cfg.members[1].hidden = true//设置为隐藏节点 rs.reconfig(cfg)

test:PRIMARY> rs.conf() { "_id" : "test", "version" : 1, "protocolVersion" : NumberLong(1), "members" : [ { "_id" : 0, "host" : "192.168.5.74:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 90, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 1, "host" : "192.168.5.49:27017", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 90, "tags" : {}, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "192.168.5.3:27017", "arbiterOnly" : true, "buildIndexes" : true, "hidden" : false, "priority" : 0, "tags" : {}, "slaveDelay" : NumberLong(0), "votes" : 1 } ],

4、查看副本集复制是否有延迟
test:PRIMARY> db.printReplicationInfo() configured oplog size:23214.042724609375MB log length start to end: 17722secs (4.92hrs) oplog first event time:Fri Aug 27 2021 11:41:14 GMT+0800 (CST) oplog last event time:Fri Aug 27 2021 16:36:36 GMT+0800 (CST) now:Fri Aug 27 2021 16:36:38 GMT+0800 (CST)test:PRIMARY> db.printSlaveReplicationInfo() source: 192.168.5.74:27017 syncedTo: Fri Aug 27 2021 16:38:36 GMT+0800 (CST) 0 secs (0 hrs) behind the primary//和主节点同步没有延迟 test:PRIMARY>

5、更改同步源新添加节点默认的同步源为Primary节点,也可以手动设置从其它节点进行数据同步,可以设置从secondary节点进行数据同步,连接到新添加的节点,
test:SECONDARY> use admin test:SECONDARY> db.getMongo().setSlaveOk()//默认不可读 mongo> db.adminCommand( { replSetSyncFrom: "192.168.5.49:27017" })//设置新节点的同步源为

6、移除复制集节点【Mongodb副本集管理】移除节点操作需要谨慎,如正常运行的节点需要移除,先进行节点stop在进行移除。
test:PRIMARY> rs.remove("192.168.5.49:27018") { "ok" : 1, "operationTime" : Timestamp(1630056399, 1), "$clusterTime" : { "clusterTime" : Timestamp(1630056399, 1), "signature" : { "hash" : BinData(0,"58s85u53HFuEjB9vF2Ex1J/BDXk="), "keyId" : NumberLong("7000949962682925057") } } } test:PRIMARY>


    推荐阅读