错误10334" BSONObj大小无效"使用mongorestore导入备份时

时间:2015-06-01 05:52:06

标签: mongodb backup restore mongodump mongorestore

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

  

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

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

3 个答案:

答案 0 :(得分:8)

每次使用--batchSize=100都可以解决这个问题。

e.g。 mongorestore -d my-database --batchSize=100 ./database-dump-directory

答案 1 :(得分:1)

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

答案 2 :(得分:1)

mongorestore{"applyOps", entries}文档中按批处理发送插入命令。该文件(AFAIK)仅限于16MB,与任何其他文件一样。

根据the sources,存在"病态情况,其中许多小操作的数组开销可能溢出最大命令大小" 。变量oplogMaxCommandSize用于帮助mongorestore 在这种情况下失败。在3.0开发期间的某个时刻,它被提升到了16.5M。这太乐观了。它被降低到8M(JIRA TOOLS-754)。

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