辅助数据库从主要成员捕获数据,以维护集合数据的最新副本。但是,默认情况下,辅助成员可以根据成员之间的ping时间更改和其他成员复制状态自动将其同步目标更改为辅助成员。有关更多信息,请参见 副本集数据同步和 管理链式复制。
对于某些部署,实现自定义复制同步拓扑可能比默认同步目标选择逻辑更有效。MongoDB提供了指定主机用作同步目标的功能。
要暂时覆盖默认的同步目标的选择逻辑,可以手动配置二级成员的同步目标暂时拉OPLOG条目。以下提供了对此功能的访问:
replSetSyncFrom
命令,或rs.syncFrom()
mongo
外壳中的助手在版本3.4中更改。
如果在运行replSetSyncFrom
/ rs.syncFrom()
,replSetSyncFrom
/ 时正在进行初始同步操作
,则/会rs.syncFrom()
停止正在进行的初始同步并重新启动与新目标的同步过程。在以前的版本中,如果在初始同步期间运行replSetSyncFrom
/ rs.syncFrom()
,MongoDB不会产生任何错误消息,但是同步目标只有在初始同步操作之后才会更改。
仅根据需要修改默认的同步逻辑,请务必谨慎。
要同步的成员必须是集合中数据的有效来源。要与成员同步,该成员必须:
members[n].buildIndexes
设置构建索引
。如果尝试从比当前成员晚10秒以上的成员进行复制,mongod
将记录警告,但仍将从滞后成员复制。另请参见
复制滞后和流控制。
replSetSyncFrom
/ rs.syncFrom()
提供默认行为的临时替代。
mongod
在以下情况下将恢复为默认同步行为: