gpt4 book ai didi

mongodb mongodump mongorestore

转载 作者:可可西里 更新时间:2023-11-01 09:13:41 26 4
gpt4 key购买 nike

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

我的 mongodump 命令是这样的:

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

block 几乎平均分布在所有 3 个分片中。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

然后我将转储文件移动到一个新的集群,并在新的 2-shard 集群上执行这个转储文件的“mongorestore”。这个数据库的大小现在只有 80 GB。我想这是预料之中的(紧凑的 Action )。但这是我的问题:在新的 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.状态()--- 分片状态 --- 分片版本:{ “_id”:1, “版本”:3, “最小兼容版本”:3, “当前版本”:4, “clusterId”:ObjectId(“52efaaa0a83668acafc3bcb0”)} 碎片: { “_id”:“sh1”,“主机”:“sh1/hfdvmprmongodb1:27000,hfdvmprmongodb2:27000”} { “_id”:“sh2”,“主机”:“sh2/hfdvmprmongodb1:27001,hfdvmprmongodb2:27001”} 数据库: {“_id”:“管理员”,“分区”:假,“主要”:“配置”} {“_id”:“测试”,“分区”:假,“主要”:“sh1”} {“_id”:“定价”,“分区”:真实,“主要”:“sh2”} { "_id": "mokshapoc", "partitioned": true, "primary": "sh1"}

mongos> isBalancerRunning()2 月 4 日星期二 11:09:39.242 ReferenceError:未定义 isBalancerRunning蒙戈斯> sh.isBalancerRunning()是的

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

我很困惑,因为我没有看到任何 block 。(尺寸预计会更小,而且小了很多)

两个集群上的版本相同:MongoDB 外壳版本:2.4.6

谢谢,虚拟机

最佳答案

mongodump 转储数据库中所有集合的数据和索引(如果转储很多,则为数据库)。它不会转储索引以外的任何元数据,这意味着如果您将转储恢复到分片集合中,它将被分片(分成 block ,平衡)。如果您将数据恢复到未分片的集合中,那么它将保持未分片状态。

转储是否来自分片集合并不重要,因为该信息保留在集群中,不会随数据一起移动。

关于mongodb mongodump mongorestore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com