我在我的生产服务器上有一个大型的MongoDB数据库,我想将它设置为一个副本集。我理解,如果在两个服务器上启用replica选项,它将自动从零开始同步数据。但是我不想从一开始就同步;相反,我希望像MySQL复制一样配置它。
我想遵循以下程序:
这是可能的吗?还是有其他替代的解决方案?
发布于 2017-02-14 20:54:46
为什么两组重吊?让MongoDB来做吧。
在本例中,假设SECONDARY的IP是具有主机名myslave的10.30.50.70
上启用副本集
在主服务器上对/etc/mongodb.conf进行以下更改
/etc/mongodb.conf 中启用授权authorization: enabled (MongoDB 2.6+)auth=true (如果您使用的是MongoDB 2.4)myreplica) replSetName: myreplica置于复制YAML标记下(MongoDB 2.6+)replSet = myreplica (MongoDB 2.4)PRIMARY上重新启动MongoDB
service mongod restartPRIMARY上启动副本集
rs.initiate();。
上执行步骤01和02
SECONDARY已启用复制集,但未复制。
SECONDARY添加到PRIMARY转到主站并运行
rs.add("10.30.50.70:27017")或
rs.add("myslave:27017")的状态
重复运行这个
rs.status()如果这个命令被冻结了,别担心。它重建了所有的索引。
您可以在SECONDARY上打开另一个ssh会话,在mongodb.log文件上运行tail -f并查看索引重建进度。
MongoDB实际上将在一个操作中启动复制、复制数据和重建索引。如图所示,在构建初始副本集时,此过程绝不是自动的。这样做不太容易出错。
发布于 2017-02-15 10:14:47
谢谢罗兰多。
幸运的是,我在Google上发了同样的帖子,MongoDB的人帮我解决了我的问题。我们不能直接转储、还原和配置复制。请按照以下步骤为大型数据库启用复制。
1.将MongoDB目录复制到辅助服务器。
2.启用主配置文件中的复制并重新启动主monogDB。
3.在主目录中运行rs.initiate()。
4.在辅助目录中停止MongoDB,将数据目录替换为主数据目录。
5.在配置文件中启用复制并启动mongod服务。
6.转到primary和rs.add(次要:端口)。
https://dba.stackexchange.com/questions/164336
复制相似问题