ITPub博客

首页 > 数据库 > NoSQL > 采用secondary的冷备份的方式来添加新的secondary节点

采用secondary的冷备份的方式来添加新的secondary节点

原创 NoSQL 作者:贺子_DBA时代 时间:2020-01-18 23:24:14 0 删除 编辑

前面介绍了两种方法来添加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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
10年数据库管理员从业经历,熟悉Oracle、mysql、tidb、oceanbase、redis、 mongodb 、python等技术栈,持有11g ocm 、mysql 5.7 ocp 、tidb 5.0 ptcp、tidb 6.0 ptca、oceanbase obcp等

注册时间:2014-05-12

  • 博文量
    327
  • 访问量
    2148929