gpt4 book ai didi

mongodb replicaset new member 在 EC2 上没有显示正确的磁盘使用情况

转载 作者:可可西里 更新时间:2023-11-01 10:00:54 25 4
gpt4 key购买 nike

我有一个包含 2 个成员的 mongodb 副本集。 1 小学和 1 中学。如果我发出 show dbs,它们都显示如下:

local   24.06640625GB
test 0.203125GB
db1 9.94921875GB
db1test 0.953125GB

然后我发出 use db1 -> db.events.count(),结果在两个成员上返回 1003130 文档.

这是有道理的,它们相互反射(reflect)并且两个 dbserver 上的 db1 和 db1test 在每个集合中具有相同的磁盘使用量和相同数量的文档。

然后我决定添加一个新成员(一个新的数据库服务器),它有一个空的/data/db。我使用以下命令启动新服务器:

sudo mongod --replSet rs0 --fork --logpath /var/log/mongodb/mongodb.log

然后在主服务器上,我发布

rs.add('ipOfNewDBServer:27017')

几秒钟后。我的新 mongodb 服务器 shell 从 > -> STARTUP2 -> rs0:SECONDARY 开始同步。

在新的/最近添加的 mongodb 服务器中,我发出 show dbs,如下所示:

local   22.0673828125GB
test 0.203125GB
db1 1.953125GB
db1test 0.453125GB

每个数据库的磁盘使用情况与其他两个(1 个主要和 1 个次要)不同。但是,如果我发出 use db1 -> db.events.count(),结果返回 1003130 与其他两个相同.我检查了这个 db1 中的其他集合。他们都一样。

我想知道为什么数据库磁盘使用率不同并且每个数据库中的集合具有相同数量的文档???如果我在将数据从这两个现有集契约(Contract)步到新集合时做错了什么,请纠正我。 mongodb官方文档说这个过程依赖于MongoDB的初始同步的常规过程,我没有想法,请帮助。谢谢

最佳答案

副本集的新成员将受益于没有碎片,因为他完全同步到 replset。现有的复制 enzyme 很可能由于删除和移动文档的文档更新而产生碎片。

在我们的环境中,我们定期让 replset 的每个成员离线,重击其数据目录,并允许它完全同步以消除碎片。它适用于我们,但我们的数据集相对于其他部署可能“小”。我认为有一种方法可以通过控制台使用一些 db.runCommand 来执行此操作,但我不知道它是什么。

关于mongodb replicaset new member 在 EC2 上没有显示正确的磁盘使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23922225/

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