MongoDB-从Master-Slave更改为ReplicaSet的最安全,最有效的方法是什么?

MongoDB-从Master-Slave更改为ReplicaSet的最安全,最有效的方法是什么?

我现在有两台 mongo 服务器,采用主从配置(所有读写操作都由主服务器完成,从服务器只是冷备份),为要求相当高的 Web 应用程序提供服务。我想切换到 3 台服务器的 ReplicaSet - 我已经配置了这 3 台服务器,它们正在运行(仍未连接到 Web 应用程序)。我只是想知道将所有数据从主/从服务器传输到 RS 的最有效方法是什么(所需的停机时间最短,所有数据的无损传输)。

答案1

最简单的方法是按照此处的说明进行操作:

http://www.mongodb.org/display/DOCS/Upgrading+to+Replica+Sets#UpgradingtoReplicaSets-UpgradingFromReplicaPairsorMaster%2FSlave

唯一的停机时间是使用新选项重新启动 mongod,然后运行启动命令。启动后,您将添加其他辅助服务器,使它们同步,然后就可以开始了。如果您愿意,您可以在同步后将其关闭并升级其中一台新机器以完成切换。

另一个选项是创建一个新的主服务器,然后将其用作副本集的主服务器。要执行此操作,请 fsync 并锁定主服务器,就像执行备份一样(这会禁用写入,因此请小心!):

http://www.mongodb.org/display/DOCS/Backups#Backups-WriteLock%2CFsync%2CandBackup

然后,将数据文件从当前主服务器复制到副本集主数据库(先将其关闭),然后正常启动。然后应擦除辅助服务器并从新主服务器重新同步。

您必须使用主服务器,因为在主/从服务器设置中从服务器没有 oplog,并且您希望副本集主服务器尽可能轻松地接管 oplog。

您需要进行哪些测试来验证副本集是否正常工作取决于您,就像您如何管理应用程序的写入切换一样。为了实现零停机时间(除了 fsync 和 lock,在这些情况下不可能进行写入),您可以暂时同时写入两者,然后在您满意时进行切换。当然,这取决于您的应用服务器是否能够处理两倍的写入量。

这样做的好处是,您可以在进行任何实际切换之前对其进行测试,并查看效果如何。

相关内容