mongodb mongodump mongorestore

时间:2014-02-04 18:54:52

标签: mongodb mongodump mongorestore

我已经在3-shard集群上对大小为600GB的数据库执行了“mongodump”,并且在所有3个分片中均匀分布了块。

我的mongodump命令是这样的:

mongodump --db mydb123 --authenticationDatabase admin --journal -u root -p password123 -o mydb123

Chunks分布在所有3个碎片上。 ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++

然后我将转储文件移动到新的集群,并在新的2-shard集群上执行此转储文件的“mongorestore”。此数据库的大小现在只有80 GB。我想这是预期的(紧凑动作)。 但这是我的问题:在新的2-shard集群上,执行命令“sh.status()”不会显示该数据库的任何CHUNKS。 我的mongorestore命令是这样的:

mongorestore -u root -p newpass123 --authenticationDatabase admin --verbose / data / db / backups / new_dir / mydumpfile

++++++++++++++++++++++++++++++++++++ 执行此mongorestore命令时没有错误。 SH.STATUS()的实际输出如下所示:

mongos> sh.status() ---分片状态---   分片版本:{         “_id”:1,         “版本”:3,         “minCompatibleVersion”:3,         “currentVersion”:4,         “clusterId”:ObjectId(“52efaaa0a83668acafc3bcb0”) }   碎片:         {“_ id”:“sh1”,“host”:“sh1 / hfdvmprmongodb1:27000,hfdvmprmongodb2:27000”}         {“_ id”:“sh2”,“host”:“sh2 / hfdvmprmongodb1:27001,hfdvmprmongodb2:27001”}   数据库:         {“_ id”:“admin”,“partitioned”:false,“primary”:“config”}         {“_ id”:“test”,“partitioned”:false,“primary”:“sh1”}         {“_ id”:“定价”,“分区”:true,“primary”:“sh2”}         {“_ id”:“mokshapoc”,“partitioned”:true,“primary”:“sh1”}

mongos> isBalancerRunning() 2月4日星期二11:09:39.242 ReferenceError:未定义isBalancerRunning mongos> sh.isBalancerRunning() 真

+++++++++++++++++++++++++++++++++++++++++++++++ +++++ 所以,我已经完全完成了mongorestore并且没有为80 GB数据库显示CHUNKS(在mongodump执行时曾经是600 GB数据库)

我很不清楚我没有看到任何块。 (预计尺寸会更小,而且更小)

两个集群上的

版本是相同的: MongoDB shell版本:2.4.6

谢谢你, VR

1 个答案:

答案 0 :(得分:3)

mongodump转储数据库中的所有集合的数据和索引(如果要转储许多集合,则转储数据库)。它不会转储除索引之外的任何元数据,这意味着如果将转储还原为分片集合,它将被分片(拆分为块,平衡)。如果将数据恢复为未加密的集合,则它将保持未加密状态。

转储是否来自分片收集无关紧要,因为该信息保留在群集中并且不与数据一起使用。