前面介绍了两种方法来添加secondary节点,直接rs.add()和一致性备份的方式来实现,接下来介绍第三种方式,具体如下:
方法三:采用secondary的冷备份的方式
找到另外一个secondary数据节点的快照,关闭写操作(冷备份)这里我采用了设置延迟节点的方法来实现关闭写操作的目的。在数据不变化的情况下,获得一致性的备份快照,拷贝至故障节点中,启动MongoDB服务,应用oplog日志!
需要注意两点:
1.保证scp期间,该Secondary节点的oprlog 不被覆盖,2.设置的延迟时间要保证scp数据操作完成
具体步骤如下:
3.1 给某个集合插入数据,来模拟线上业务;
MongoDB Enterprise liuhe_rs:PRIMARY> use liuwenhe
switched to db liuwenhe
MongoDB Enterprise liuhe_rs:PRIMARY> db.hezi.count()
533387
MongoDB Enterprise liuhe_rs:PRIMARY> for (var i = 0; i < 100; i++) { db.hezi.insert({id: i}); }
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise liuhe_rs:PRIMARY> db.hezi.count()
533487
3.2将某个Secondary节点设置为延迟节点;
MongoDB Enterprise liuhe_rs:PRIMARY>cfg = rs.conf()
MongoDB Enterprise liuhe_rs:PRIMARY>cfg.members[1].priority = 0
MongoDB Enterprise liuhe_rs:PRIMARY>cfg.members[1].slaveDelay = 3600
MongoDB Enterprise liuhe_rs:PRIMARY>rs.reconfig(cfg)
查看是否是延迟的,发现确实延迟1个小时,也就是3600秒!
MongoDB Enterprise liuhe_rs:SECONDARY> rs.printReplicationInfo()
configured oplog size: 51200MB
log length start to end: 5461974secs (1517.22hrs)
oplog first event time: Sat Nov 16 2019 16:53:17 GMT+0800 (CST)
oplog last event time: Sat Jan 18 2020 22:06:11 GMT+0800 (CST)
now: Sat Jan 18 2020 23:06:19 GMT+0800 (CST)
数据确实没有insert呢,如下所示:
MongoDB Enterprise liuhe_rs:SECONDARY> db.hezi.count()
533387
3.2直接scp 数据目录到目标服务器
[mongod@beijing-fuli-hadoop-04 ~]$ scp -r db mongod@10.9.21.115:/data/mongodb
3.3 启动新的Secondary节点
[mongod@beijing-fuli-hadoop-03 ~]$ /usr/bin/mongodb/bin/mongod -f /etc/mongod.conf
3.4 验证结果是否正确:
3.4.1查看新的Secondary节点的同步状态,如下无延迟:
MongoDB Enterprise liuhe_rs:SECONDARY> rs.printReplicationInfo()
configured oplog size: 51200MB
log length start to end: 5465940secs (1518.32hrs)
oplog first event time: Sat Nov 16 2019 16:53:17 GMT+0800 (CST)
oplog last event time: Sat Jan 18 2020 23:12:17 GMT+0800 (CST)
now: Sat Jan 18 2020 23:17:48 GMT+0800 (CST)
3.4.2查看数据是否同步成功,如下所示,确实同步成功了
MongoDB Enterprise liuhe_rs:SECONDARY> rs.slaveOk()
MongoDB Enterprise liuhe_rs:SECONDARY> db.hezi.count()
533487
至此通过Secondary节点延迟冷备的方式来实现新加Secondary节点的目的实现了!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29654823/viewspace-2673943/ ,如需转载,请注明出处,否则将追究法律责任。