【问题标题】:Error 10334 "BSONObj size is invalid" when importing a back up with mongorestore使用 mongorestore 导入备份时出现错误 10334“BSONObj 大小无效”
【发布时间】:2015-06-01 05:52:06
【问题描述】:

我有一个包含许多小文档的 MongoDB 集合备份。备份是由mongodump 生成的,但是当我尝试使用mongorestore 导入它时出现错误:

AssertionException 处理请求,关闭客户端连接:10334 BSONObj 大小:18039019 (0x11340EB) 无效。大小必须在 0 到 16793600(16MB) 之间

我正在运行 MongoDB 版本 3.0.3(来自主干)。

【问题讨论】:

标签: mongodb backup restore mongodump mongorestore


【解决方案1】:

使用--batchSize=100 每次都能为我解决这个问题。

例如mongorestore -d my-database --batchSize=100 ./database-dump-directory

【讨论】:

    【解决方案2】:

    基本上 mongoDB 接受文件的大小应该小于 16MB。如果你打算使用大于 16MB 的文件,你可以使用 gridfs。 每个文档占用 2 大小分配的内存能力。 您的应用程序应确保生成的 bson 文档的大小。否则您可以使用不同的数据模型,而不是将所有数据嵌入到一个文档中。

    【讨论】:

      【解决方案3】:

      mongorestore{"applyOps", entries} 文档中批量发送插入命令。与任何其他文档一样,此文档 (AFAIK) 限制为 16MB。

      根据the sources,有“许多小操作的数组开销会溢出最大命令大小的病态情况”。变量oplogMaxCommandSize 用于帮助mongorestore 在这种情况下失败。在 3.0... 开发过程中的某个时间点,它被提升到了 1650 万。那太乐观了。后来又降到了 8M (JIRA TOOLS-754)。

      如果需要,您可以根据需要自行调整该值。然后重新编译工具。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-13
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 2023-02-14
        • 1970-01-01
        • 2021-08-10
        相关资源
        最近更新 更多