我们正在生产环境中使用MongoDB,现在,由于当前服务器的某些问题,我将更换服务器并启动一个新的MongoDB实例。

我们有一个副本集和一个mongod实例(出于不同目的的两个不同的MongoDB网络)。现在,首先我应该迁移单个mongod实例,然后将整个副本集迁移到新服务器。

我想知道的是,如何在不停机的情况下迁移两个实例?我不想关闭服务器或停止写操作。

提前致谢。

最佳答案

因此,首先,您永远不要将mongodb作为生产的单个实例运行。至少应具有1个主节点,1个辅助节点和1个仲裁器。

其次,即使设置了副本集,在切换主数据库时也总是会有一些写入停机时间,因为在选举过程中无法进行写入。从文档中:



例如,当您关闭主数据库以将其移至新服务器或虚拟实例或升级数据库版本(例如从2.4升级至2.6)时,将发生选举。

您可以通过设置适当的选项以允许针对次要对象运行查询,从而在使用现有副本集的情况下将停机时间降至最低。再次从文档:



这至少需要读取。最好通过让您的应用程序重试失败的写入或将其排队来最好地处理写入。

关于您的独立服务器,已记录的转换为副本集的过程经过了良好的测试,可以非常快速地完成,而停机时间最少:

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

关于mongodb - 无需停机即可迁移MongoDB实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23688043/

10-17 00:07