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

我正在处理一个MongoDB(2.4.10)分片集群,直到现在只有一个副本集合。 我在mongos上运行db.repairDatabase()。

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

谢谢,

格雷格。

是。 您将要停止辅助mongo进程,注释副本configuration参数(replSet,keyFile等),启动mongo进程,然后login并执行修复。 完成后,停止mongod进程,将configuration更改回原始设置并启动mongod。 这假设你有一个正确的投票等三人成员部署

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

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