1

我试图 mongodump 我的数据库:

sudo mongodump -v --dbpath /var/lib/mongodb --out ~/backups/mongodb_dump/

但是每个集合都有有趣的输出(很冗长),有一些有趣的行:

Tue Dec  3 06:32:32 [tools] query my_db.my_collection nreturned:101 reslen:43408 0ms
Tue Dec  3 06:32:32 [tools] getmore my_db.my_collection cursorid:7364310293552401077 nreturned:8565 reslen:4194597 77ms
Tue Dec  3 06:32:32 [tools] getmore my_db.my_collection cursorid:7364310293552401077 nreturned:8053 reslen:4194704 75ms
Tue Dec  3 06:32:32 [tools] getmore my_db.my_collection cursorid:7364310293552401077 nreturned:7936 reslen:4194704 82ms
Tue Dec  3 06:32:32 [tools] getmore my_db.my_collection cursorid:7364310293552401077 nreturned:7932 reslen:4194524 83ms
Tue Dec  3 06:32:32 [tools] getmore my_db.my_collection cursorid:7364310293552401077 nreturned:9201 reslen:4194491 201ms
Tue Dec  3 06:32:33 [tools] getmore my_db.my_collection cursorid:7364310293552401077 nreturned:7253 reslen:3078796 544ms
         49041 objects
Tue Dec  3 06:32:33 [tools]     skipping collection: my_db.my_collection.$_id_
    flickr-app-development-production.download_stats to /home/user/backups/mongodb_dump/my_db/my_collection.bson

这是什么意思:skipping collection: my_db.my_collection.$_id_,为什么是id字段?这是否意味着某些数据没有被转储,或者备份中没有 ID(所以在恢复数据库时,将分配新的 ID?

奇怪的是mongo show dbs返回的大小my_db约为 1Gb,但.bson文件的整体大小只有 150Mb?

4

1 回答 1

1

这是什么意思:跳过集合:my_db.my_collection.$ id,为什么是 id 字段?这是否意味着某些数据没有被转储,或者备份中没有 ID(所以在恢复数据库时,将分配新的 ID?)

带有 a$的集合由系统命名空间(在本例中id_为集合的索引)使用,可以安全地跳过。您只会看到此信息性消息,因为您包含了-v(verbose) 选项。

mongodump(2.2+) 将索引定义导出到一个<dbname>.metadata.json文件,当您恢复转储时,该文件将用于mongorestore重新创建索引。

奇怪的是 mongo show dbs 返回 my_db 的大小约为 1Gb,但 .bson 文件的整个大小只有 150Mb?

默认情况下,MongoDB 预先分配存储以防止文件系统碎片并减少需要创建新数据文件时的延迟。分配的文件大小将大于您的数据大小。此外,MongoDB 为文档分配记录填充,以便文档有一定的增长空间。MongoDB 手册中的Storage FAQ有更多详细信息。

如果您运行db.stats()数据库,您应该看到两者fileSizedataSize用于比较的值。您的 BSON 文件的 150Mb 应该接近该dataSize值,而 1Gb inshow dbs将是fileSize.

于 2013-12-31T22:45:00.513 回答