我是否需要在每个 mongod 上运行 db.repairDatabase()?

我是否需要在每个 mongod 上运行 db.repairDatabase()?

我正在处理 MongoDB (2.4.10) 分片集群,到目前为止只有 1 个副本集。我在 mongos 上运行了 db.repairDatabase()。

这样,我可以回收主节点上的可用空间。但不能回收辅助节点上的可用空间。我是否必须在副本集的每个成员上运行它?

谢谢,

格雷格。

答案1

是的。您需要停止辅助 mongo 进程,注释掉副本配置参数(replSet、keyFile 等),启动 mongo 进程,然后登录并执行修复。修复完成后,停止 mongod 进程,将配置改回原始设置并启动 mongod。这假设您拥有三成员部署且投票正确等。

另一个选择是简单地重新同步辅助服务器(等待你的 oplog 足够长):

http://docs.mongodb.org/manual/tutorial/resync-replica-set-member/

相关内容