我最近开始为一家拥有大型 mongoDB 实例的公司工作。选择的文档密钥存在一些问题,特别是单个文档有可能永远继续增长。经过数百万次更改后,单个文档可以达到 130MB 以上。
我们正在使用 MongoDB 2.2.1。我要做的是修复平衡,因为平衡器处于一个循环中,试图迁移一些大块。它失败是因为块大小大于默认的最大允许块大小 (64MB)。该块也不能拆分,因为它包含单个文档。
真正的解决方法是更改文档键(创建一个新的数据库实例并迁移到它),但这需要很长时间才能完成,我想进行短期修复以帮助平衡。我唯一能想到的是将默认块大小从 64MB 增加到 160MB 左右,这样我们的一些大块就可以迁移。
我的问题是,是否更好:
- 将最大块大小增加到 160MB,手动移动块,然后减小最大块大小。(此时大文档 ID 将恢复为不可迁移)。
- 将最大块大小永久增加到 160MB 并保留在那里,直到我们可以迁移到新密钥。(据我了解,增加块大小会产生非常剧烈的 IO 影响)
- 还有什么?