更新时间:2022-08-12 11:26:34
无论源副本集实例有几个节点,恢复后均为单节点副本集,若要保持和源实例节点个数一致,则需要手动操作,进行节点扩展,具体步骤如下。
注意:
如果你的原始数据库已经损坏不能访问,你希望数据还存储在原集群的存储位置,建议你先恢复数据到源实例主机下,清空原实例数据文件,然后将恢复出来的数据文件复制到原实例对应的目录下,修改配置文件中 dbpath 后重启数据库,最后再参照文档进行集群重建。
1. 按照如下配置文件进行其它节点配置文件的创建,其中副本集名称需要与恢复的单节点实例副本集名称保持一致,其它参数可自定义配置,如数据存储路径、日志路径、监听端口号等。

2. 找到恢复的单节点副本集实例的 keyfile 文件,并将该文件拷贝至扩展节点 keyfile 文件的配置路径下,如图是恢复实例的配置文件,打开配置文件可看到 keyfile 的路径为:/111/test111/data/mongo_data/mongod@17017/config/mongodb.keyfile

3. 将该文件复制到扩展节点的 keyfile 路径下,如图,新节点的 keyfile 路径指定为:/111/test111/data/mongo_data/mongod@17027/config/mongodb.keyfile。
执行复制命令为:
cp  /111/test111/data/mongo_data/mongod@17017/config/mongodb.keyfile /111/test111/data/mongo_data/mongod@17027/config,如图。

注意
副本集新扩展节点的 keyfile 和恢复出来实例的 keyfile 必须保持一致,如果新扩展节点和恢复出来的实例节点不在同一物理机上,请拷贝 keyfile 文件到新节点物理机上,建议使用 scp 命令进行拷贝。



4. 使用扩展节点的配置文件,启动扩展节点,如图,扩展节点启动成功。

5. 登录恢复的单节点副本集实例,执行添加节点命令,将扩展节点加入到副本集中,添加命令为:rs.add(‘ip:端口’),其中 ip 和端口号分别为扩展节点服务指定监听的 ip 和端口号,如图:

6. 根据实际的副本集节点数量,重复以上步骤 1-5,完成副本集节点的扩展。