我现在有两台配有主从configuration的mongo服务器(所有的读写操作都是用Master完成的,Slave只是一个冷备份),服务于一个相当苛刻的Web应用程序。 我想切换到3台服务器的副本 – 我有这3个已经configuration和工作(仍然没有连接到Web应用程序)。 只是想知道什么是最有效的方法(需要最短的停机时间,以及所有数据的无损传输)来将所有数据从主/从传输到RS。
最简单的方法是遵循这里的指示:
唯一的停机时间是用新选项重新启动mongod,然后运行启动命令。 一旦到了,你会添加其他辅助,让他们同步,你会很好去。 如果你愿意同意完成交接,你可以降级并推广其中一台新机器。
另一种select是创build一个新的主文件,然后用它作为副本文件集的主文件。 要做到这一点fsync并locking主机就好像执行备份(这将禁用写入,所以要小心!):
http://www.mongodb.org/display/DOCS/Backups#Backups-WriteLock%2CFsync%2CandBackup
然后,将数据文件从当前主数据库复制到副本集主数据库(首先将其closures),然后正常启动。 然后,应该从那个新的小学从头开始抹去并重新启动。
您必须使用主设备,因为从设备在主/从设备中没有oplog,并且您希望副设备主设备尽可能容易地接pipe。
validation副本集所需执行的testing工作对您来说是您自己决定的,就像您如何pipe理应用程序写入的转换一样。 对于零停机时间(除了fsync和locking,在哪里写不可能),你可以临时写入两个,也许,然后切换,当你快乐。 当然,这将取决于您的应用程序服务器处理双倍的写入量。
关于这一点的好处是,你可以在做任何切换之前testing一下,看看你的performance如何。