MongoDB节点如何快速克隆?

2022-09-23 15:35:40 浏览数 (1)

常见的方法,直接把新的节点加入到现有的MongoDB集群中,让它自己去同步数据,这个方法最简单省事。

但是,也会存在一些缺点:

1、全量同步期间,集群的负载会变高,如果业务程序的read_timeout write_timeout 设置的比较低可能会有感知。对此可以调大业务程序链接mongodb的几个timeout参数。

2、需要事先估算下oplog的大小,防止出现新的节点还处于全量同步的过程中,现有集群的oplog被覆盖的情况。这样的话,新的节点永远也加不进集群里。

鉴于上述2个原因,生产上大库(例如1T以上)的加节点,我一般采样下面的方法:

假设节点标识为:主节点:M  2个备节点:S1 S2 , 新加入的节点为S3

1、关停一个从节点S1的MongoDB进程。 生产基本上都是一主两备(PSS架构)吧,如果还是一主一备一仲裁(PSA架构),建议乘早改掉,官方都不推荐了。

2、scp拷贝这个S1的数据到新的节点S3。

3、启动step1关停的从节点S1的MongoDB进程,自动加回集群。

4、启动新的节点S3的MongoDB进程。

5、在原先的主节点M上,执行添加S3节点的操作。

6、S3节点会加入后会根据oplog中的信息,尝试增量同步,等一段时间完成增量同步后即可加入集群。

TIPS:

oplog 在MongoDB>=3.6 版本(希望没记错)已经可以在线调整的。看下当前的oplog存多久的,就可估算出能不能撑到拷完数据,如果担心不够大就先在线调整下就行。

0 人点赞