我正在考虑采用 Mongo 集群并进行研究。我们希望拥有一个可以在写入流量非常大的情况下从每秒 10k 次更新扩展到每秒 100k 次更新的集群。
主要问题是,如果我们想迁移到较新的版本,是否可以在不停机的情况下实现?
我们是否应该一次升级一个分片/副本并让其重新加入组,并希望它向后兼容并且不会混淆数据?
另外,每秒 10k 次更新的集群估计是多少?100k?
我在看http://www.mongodb.org/display/DOCS/Sharding+FAQ但找不到升级程序。
答案1
您必须检查每个版本的发行说明,但 2.0 的升级说明在这里:
http://www.mongodb.org/display/DOCS/2.0+Release+Notes#2.0ReleaseNotes-Upgrading
最后两点专门回答了你的问题:
升级副本集。首先一次升级一个辅助服务器,然后逐步降低主服务器并升级主服务器。使用逐步降低命令比简单地关闭它更好,因为故障转移会更快发生。为了避免在故障转移时丢失最后几个更新,您可以暂时停止应用程序(故障转移应该少于 10 秒)或更改应用程序代码以确认每个更新都到达多个服务器。注意,升级到 2.0 后,您可以使用关机命令关闭主服务器而不会丢失任何安全更新。
升级分片集群。按任意顺序一次升级一个配置服务器。由于配置服务器使用两阶段提交,因此分片配置元数据更新将暂停,直到所有服务器都启动并运行为止。mongos 路由器可以按任意顺序升级。
停机时间很短,仅花费副本集确认已发生降级以及发生选举/晋升的时间。