我对MongoDB迁移有疑问。 我实际上正在准备两个mongoDB数据库的合并。 两个mongoDB版本相同:2.6。
两个数据库都很重:
-
DB A
:90Go -
DB Z
:130Go
基本上,我们想要./mongodump
DB A
和./mongorestore
在DB Z
中。
我们将关闭mongoDB Z
实例以进行恢复。
为确保操作正常运行,我们要模拟合并操作 在开发环境中。
要存档:
- 使用mongodump转储
DB Z
数据库 - 将其还原到其他服务器(具有mongorestore)
这时,我将处于与生产服务器相同的配置。
- 使用mongodump转储
DB A
数据库 - 使用mongorestore将其恢复到新的
DB Z
数据库中
但是当我还原DB Z
时,生产服务器上的原始大小和转储为140Go时,大小会增加到250Go。
尺寸如何增加这么多?
我做了多次(4x),并通过以下命令获得始终相同的结果:
-
./mongorestore --dbpath ./dbdirectory/ --db dbname ../dbdumps/
-
./mongorestore --dbpath ./dbdirectory/ --db dbname --keepIndexVersion --noIndexRestore --noOptionsRestore ../dbdumps/
-
./mongorestore --dbpath ./dbdirectory/ --db dbname --noIndexRestore --noOptionsRestore ../dbdumps/
我也是在两台不同的服务器上完成的,一次是在本地docker容器中,另一次是在开发服务器上。
重要的一点:以前,DB Z
是2.4版。我们将其升级到2.6以与DB A
版本匹配。大小没有改变(就像转储显示的一样。)
所有服务器/容器都具有与生产服务器相同的操作系统和版本。
如果我执行db.printCollectionsStats(),这是集合大小和索引大小的总和
DEV SERVER
sumStorageSize ~= 265Gb
sumIndexSize ~= 0,03Gb
total ~= 265Gb
PROD SERVER
sumStorageSize ~= 139Gb
sumIndexSize ~= 0,05Gb
total ~= 139Gb