2013-02-12 53 views
3

我刚刚做了mongodb副本集配置,并且都很好看。所有数据都正确地转移到辅助节点。但是当我查看数据目录时,我可以看到Primary有〜140G的数据,同时Secondary只有〜110G。MongoDB副本集:主节点和次节点中的磁盘大小差异

有没有人在设置副本集时遇到过这类问题。这是正常的行为吗?

回答

6

当您在辅助设备上从头开始初始同步时,它将新写入所有数据。这将删除填充,空白区域(删除的数据)等。因此,在这方面,它类似于运行修复。

如果你对主要进行了修复(阻塞操作,只有在绝对必要的情况下才能完成),那么这两者将会更接近整体。

如果您检查来自db.stats()的输出,您应该看到各种数据库具有相同的对象数量,数据目录大小差异没有什么可担心的。

+0

我们可以做什么来定期优化数据库,而不会影响生产环境? – geek 2013-02-12 23:06:41

+0

@geek嗯不知道,你将不得不发布一个db.stats(),但也许2个大小的分配权力可能会有所帮助,毕竟我会说28GB(考虑2GB的预先分配帐户)可能来自移动文件。 – Sammaye 2013-02-13 08:32:16

+0

除了Sammaye提到的(使用PowerOf2Sizes最初的效率较低,但如果您移动/删除很多,效率会更高),那么完整的副本集将为您提供选项。取出一个辅助设备,执行修复或完成一次完全同步,然后重复,直到完成设置中的所有节点为止(主要步骤在某个位置)。这可以让你定期恢复空间而不会产生很大的影响(选举总会有短暂的考虑)。 – 2013-02-13 11:09:44