Mongodb 转储大小比数据库中的小
Mongodb dump size too smaller than it was in the database
我想将旧的 Mongodb2.6.8 数据库迁移到新的 Mongodb4.4。所以我尝试用 mongodump 备份下面的“okapp”数据库。
[okapp@centos101 bin]$ ./bin/mongo localhost:27018
MongoDB shell version: 2.6.8
connecting to: localhost:27001/test
> show dbs
admin (empty)
okapp 6.497GB
ca423 0.031GB
local 0.031GB
>
如您所见,okapp 大小为 6.497GB。但是在我 运行 之后:
./mongodump -h localhost:27001 -d okapp
我会得到一个转储:
2021-11-02T15:47:14.550+0100 DATABASE: okapp to dump/okapp
2021-11-02T15:47:14.550+0100 okapp.system.indexes to dump/okapp/system.indexes.bson
2021-11-02T15:47:14.551+0100 5 documents
2021-11-02T15:47:14.551+0100 okapp.findjobsee to dump/okapp/findjobsee.bson
2021-11-02T15:47:14.551+0100 10 documents
2021-11-02T15:47:14.551+0100 Metadata for okapp.findjobsee to dump/okapp/findjobsee.metadata.json
2021-11-02T15:47:14.552+0100 okapp.findtasksee to dump/okapp/findtasksee.bson
2021-11-02T15:47:14.552+0100 0 documents
2021-11-02T15:47:14.552+0100 Metadata for okapp.findtasksee to dump/okapp/findtasksee.metadata.json
2021-11-02T15:47:14.552+0100 okapp.findresultsee to dump/okapp/findresultsee.bson
2021-11-02T15:47:14.614+0100 2937 documents
2021-11-02T15:47:14.614+0100 Metadata for okapp.findresultsee to dump/okapp/findresultsee.metadata.json
2021-11-02T15:47:14.615+0100 okapp.findjobarchivesee to dump/okapp/findjobarchivesee.bson
2021-11-02T15:47:14.618+0100 751 documents
2021-11-02T15:47:14.618+0100 Metadata for okapp.findjobarchivesee to dump/okapp/findjobarchivesee.metadata.json
[okapp@centos101 somedir]$ cd ./mongodb-linux-x86_64-2.6.8/dump/okapp
[okapp@centos101 somedir]$ du -sh okapp
7.7MB okapp
[okapp@centos101 somedir]$ cd ./mongodb-linux-x86_64-2.6.8/dump/okapp
[okapp@centos101 okapp]$ du -sh *
316K findalljobarchivesee.bson
4.0K findalljobarchivesee.metadata.json
4.0K findalljobsee.bson
4.0K findalljobsee.metadata.json
7.4M findallresultsee.bson
4.0K findallresultsee.metadata.json
0 findalltasksee.bson
4.0K findalltasksee.metadata.json
4.0K system.indexes.bson
[okapp@centos101 okapp]$
[okapp@centos101 okapp]$
注意:我已经检查了 Mongodb
中的集合
> db.findjobarchivesee.count()
751
> db.findjobsee.count()
10
> db.findresultsee.count()
2937
> db.findtasksee.count()
0
> db.system.indexes.count()
5
有谁知道为什么尺寸缩小太多?它在数据库中是 6.497GB,但在 mongodump 之后只有 7.7 MB。
我认为造成差异的原因有以下几点:
- MMAP 不压缩。
show dbs
报告的大小包括文件中的空 space,这可能是由于文件被删除。
- MongoDB 使用 MMAP 填充每个文档,因此它们之间有自由 space 以允许文档增长。导出时,此填充不会包含在文档中。
mongodump
不导出索引数据。它导出 mongorestore 需要的信息,以便在恢复时重新创建索引。
我想将旧的 Mongodb2.6.8 数据库迁移到新的 Mongodb4.4。所以我尝试用 mongodump 备份下面的“okapp”数据库。
[okapp@centos101 bin]$ ./bin/mongo localhost:27018
MongoDB shell version: 2.6.8
connecting to: localhost:27001/test
> show dbs
admin (empty)
okapp 6.497GB
ca423 0.031GB
local 0.031GB
>
如您所见,okapp 大小为 6.497GB。但是在我 运行 之后:
./mongodump -h localhost:27001 -d okapp
我会得到一个转储:
2021-11-02T15:47:14.550+0100 DATABASE: okapp to dump/okapp
2021-11-02T15:47:14.550+0100 okapp.system.indexes to dump/okapp/system.indexes.bson
2021-11-02T15:47:14.551+0100 5 documents
2021-11-02T15:47:14.551+0100 okapp.findjobsee to dump/okapp/findjobsee.bson
2021-11-02T15:47:14.551+0100 10 documents
2021-11-02T15:47:14.551+0100 Metadata for okapp.findjobsee to dump/okapp/findjobsee.metadata.json
2021-11-02T15:47:14.552+0100 okapp.findtasksee to dump/okapp/findtasksee.bson
2021-11-02T15:47:14.552+0100 0 documents
2021-11-02T15:47:14.552+0100 Metadata for okapp.findtasksee to dump/okapp/findtasksee.metadata.json
2021-11-02T15:47:14.552+0100 okapp.findresultsee to dump/okapp/findresultsee.bson
2021-11-02T15:47:14.614+0100 2937 documents
2021-11-02T15:47:14.614+0100 Metadata for okapp.findresultsee to dump/okapp/findresultsee.metadata.json
2021-11-02T15:47:14.615+0100 okapp.findjobarchivesee to dump/okapp/findjobarchivesee.bson
2021-11-02T15:47:14.618+0100 751 documents
2021-11-02T15:47:14.618+0100 Metadata for okapp.findjobarchivesee to dump/okapp/findjobarchivesee.metadata.json
[okapp@centos101 somedir]$ cd ./mongodb-linux-x86_64-2.6.8/dump/okapp
[okapp@centos101 somedir]$ du -sh okapp
7.7MB okapp
[okapp@centos101 somedir]$ cd ./mongodb-linux-x86_64-2.6.8/dump/okapp
[okapp@centos101 okapp]$ du -sh *
316K findalljobarchivesee.bson
4.0K findalljobarchivesee.metadata.json
4.0K findalljobsee.bson
4.0K findalljobsee.metadata.json
7.4M findallresultsee.bson
4.0K findallresultsee.metadata.json
0 findalltasksee.bson
4.0K findalltasksee.metadata.json
4.0K system.indexes.bson
[okapp@centos101 okapp]$
[okapp@centos101 okapp]$
注意:我已经检查了 Mongodb
中的集合> db.findjobarchivesee.count()
751
> db.findjobsee.count()
10
> db.findresultsee.count()
2937
> db.findtasksee.count()
0
> db.system.indexes.count()
5
有谁知道为什么尺寸缩小太多?它在数据库中是 6.497GB,但在 mongodump 之后只有 7.7 MB。
我认为造成差异的原因有以下几点:
- MMAP 不压缩。
show dbs
报告的大小包括文件中的空 space,这可能是由于文件被删除。 - MongoDB 使用 MMAP 填充每个文档,因此它们之间有自由 space 以允许文档增长。导出时,此填充不会包含在文档中。
mongodump
不导出索引数据。它导出 mongorestore 需要的信息,以便在恢复时重新创建索引。