【问题标题】:MongoDB how to migrate chunk if the chunk only has one document in it and is larger than the max chunk size如果块中只有一个文档并且大于最大块大小,MongoDB如何迁移块
【发布时间】:2013-08-05 22:03:09
【问题描述】:

我最近开始为一家拥有大型 mongoDB 实例的公司工作。选择的文档密钥存在一些问题,特别是单个文档有可能永远继续增长。经过数百万次更改后,单个文档可以达到 130MB 以上。

我们使用的是 MongoDB 2.2.1。我要做的是修复平衡,因为平衡器处于一个循环中,试图迁移一些大块。它失败是因为块大小大于默认的最大允许块大小 (64MB)。该块也不能被拆分,因为它包含一个文档。

真正的解决方法是更改​​文档键(创建一个新的数据库实例并迁移到它),但这需要很长时间才能完成,我想进行短期修复以帮助平衡。我唯一能想到的是将默认块大小从 64MB 增加到 160MB 左右,这样我们的一些大块就可以迁移。

我的问题是,这样做更好吗:

  1. 将最大块大小增加到 160MB,手动移动块,然后减小最大块大小。 (此时大文档 ID 将恢复为不可迁移)。
  2. 将最大块大小永久增加到 160MB 并保留在那里,直到我们可以迁移到新密钥。 (据我了解,增加块大小可能会产生非常剧烈的 IO 影响)
  3. 还有别的吗?

【问题讨论】:

    标签: mongodb amazon-ec2 ubuntu-12.04 sharding


    【解决方案1】:

    单个文档永远不能超过 16MB,但是共享相同 shard key 的一组文档当然可以超过 16MB。

    我不明白你为什么要移动那个大块,它应该在它当前所在的分片上完全没问题。目前,我建议使用方案 1,因为它的影响最小,但您当然应该修复分片键,这样共享相同键的文档就不会超过 64MB。

    【讨论】:

    • 我很高兴将它留在原处...... mongos 平衡想要移动它。 :) 有没有办法告诉平衡器跳过特定的分片键?
    • 不,我不认为有,但令我惊讶的是它不只是移动其他块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2015-02-07
    相关资源
    最近更新 更多