2010-12-02 87 views
3

我目前有一个mongoDB安装程序,每个mongos服务器,一个配置服务器和2个3 mongod(主 - 从)服务器碎片。我想确保当我关闭它们时,它们会被关闭干净,从而不会丢失排队的数据或服务器正在确定要写入的碎片等。清理关闭分片MongoDB群集

什么是当前最佳实践关闭一组MongoDB服务器?

哪个顺序是最好的东西在,问题FSYNC被关闭,写锁等。

我想编写一个脚本来自动完成这个,便于备份,新的代码推,和其他任何否则需要数据库处于一致状态。

+0

我不确定你的确切需求,但我相信最好的做法是*不*关闭任何碎片。如果是为了备份的目的,最好取下从机并备份,这不是一种选择吗? – 2010-12-02 07:51:39

回答

3

这些最佳实践仍然真正被清除。

用你的设置,我将如何做服务器维护。

备份

查找非主要在每个副本集。执行fsync & lock。复制,tar,备份。解锁数据库。

您应该可以在副本集上成功完成此操作。如果你真的担心,你可以做fsync &锁定然后关机。

压缩

你可能需要在某些时候对数据进行压缩。最简单的方法是再次执行fsync &锁定,然后执行db.repairDatabase()。修复命令基本上会为你做“碎片整理/压缩”。如上所述,这也可以在关机时关闭。

码推

理想的情况下,很少有需要与问候代码推一致。最糟糕的是,您需要管理索引创建/删除。但是,这确实需要分开管理,因为您不希望开发人员随便在生产数据库中添加索引。

监测

这是一种更复杂的问题,但你可能会想观赏的东西,如“谁是主人”,“什么每个节点上的写入吞吐量”,“多少RAM上午我使用“,”节点之间有多少数据正在移动“。目前有这样做的工具很有限,所以期望能够推出自己的产品。