mongodb - 虚拟机上的 mongodump 文件损坏

标签 mongodb mongodump database

今天,我正在执行 mongodump 来备份文件大小约为 2GB 的数据库,但转储文件中只有大约 600 MB。 mongodump操作没有任何错误信息,后来发现缺少一些文档。如果不是因为文件大小的巨大差异,我不会知道转储是否成功。

是否有标准方法来检查转储的文件是否正确?

p.s: 好像可以用db.stats()检查原始数据库信息,然后 mongorestore 转储的数据库并执行 db.stats()比较总文件大小。两个文件大小是相同的(我是对的吗)?

p.s:另外,如果我的虚拟机内存为 500 MB,它可以成功转储 2GB 文件吗?

最佳答案

您有一个文件大小为 2GB 的数据库,但 MongoDB 以 block (如 2GB)分配数据文件,并且可能在一段时间内无法填充它们。您的数据库中可能只有 600MB 的数据(请参阅 db.stats() 以获取一些指导)。您还应该注意,索引不会被转储,只会转储它们用于在恢复时重建的定义,因此删除这些索引将影响您的转储大小。由于您没有错误,我怀疑您这里有一个完全有效的转储,它反射(reflect)了 2GB 文件中实际存在的数据量。

if my VM has memory 500 mb can it successfully dump a 2GB file?

是的,但是如果所有数据都可以放入内存中,速度会更快

关于mongodb - 虚拟机上的 mongodump 文件损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34330204/

相关文章:

mongodb - Golang BSON 转换

mongodb - 为集合中的过期数据设置 TTL

mongodb - Meteorjs 显示引用文档字段

mongodb - 带有副本集 : how to force on secondary? 的 Mongodump

mongodb - 如何恢复压缩的 Mongodb 单个集合?

php - 这是我的 laravel 项目中的一个额外的 ")",它为我查询 laravel

c# - SQL Anywhere 错误 -157 : Cannot convert '08/10/09' to a timestamp

javascript - 服务器端 setInterval/clearInterval 与 Meteor

android - 什么会导致使用 Android Studio 在 RoomDatabase 文件中不允许使用修改器 'abstract'?

mongodb - mongodump 和 mongorestore 更改文档的顺序