今天,我正在执行 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/