在本页面
当副本集成员的复制过程远远落在后面时,主副本将覆盖该成员尚未复制的操作日志条目,从而使副本集成员成为“陈旧” 。该成员无法追赶并变得“陈旧”。发生这种情况时,您必须通过删除其数据并执行初始sync来完全重新同步该成员 。
本教程介绍了重新同步陈旧成员和使用来自另一个成员的种子数据创建新成员的方法,这两种方法都可用于还原副本集成员。同步成员时,请选择系统具有足够带宽来移动大量数据的时间。在使用率较低或维护时段内安排同步。
MongoDB提供了两个用于执行初始同步的选项:
mongod
使用空的数据目录重新启动,然后让MongoDB的常规初始同步功能恢复数据。这是更简单的选项,但替换数据可能需要更长的时间。
请参阅自动同步成员。
使用副本集中另一个成员的最新数据目录副本重新启动计算机。此过程可以更快地替换数据,但需要更多的手动步骤。
此过程依赖于MongoDB的副本集同步的常规过程 。这会将当前数据存储在成员上。有关MongoDB初始同步过程的概述,请参阅 副本集同步部分。
初始同步操作可能会影响集合中的其他成员,并会创建到主要对象的其他流量。同步成员需要集合中的另一个成员,该成员可以访问并且是最新的。
如果实例没有数据,则可以按照将 成员添加到副本集或 替换副本集成员的过程将新成员添加到副本集。
您也可以mongod
通过重新启动实例而不使用目录的内容来强制已经是集合成员的a执行初始同步
dbPath
:
mongod
实例。为了确保干净关闭,请使用外壳程序或Linux系统上
的db.shutdownServer()
方法(可选)。mongo
mongod --shutdown
dbPath
目录中删除所有数据和子目录
。考虑先进行备份。此时,将mongod
执行初始同步。初始同步过程的长度取决于数据库的大小以及副本集成员之间的网络延迟。