我已经在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
答案 0 :(得分:3)
mongodump
转储数据库中的所有集合的数据和索引(如果要转储许多集合,则转储数据库)。它不会转储除索引之外的任何元数据,这意味着如果将转储还原为分片集合,它将被分片(拆分为块,平衡)。如果将数据恢复为未加密的集合,则它将保持未加密状态。
转储是否来自分片收集无关紧要,因为该信息保留在群集中并且不与数据一起使用。