配置自管理辅助节点的同步目标
Overview
从节点从主节点 (primary node in the replica set)节点捕获数据以维护集合数据的最新副本。 但是,默认,从节点可能会根据网络探测(ping)从节点(secondary node from replica set)的变化以及其他节点的复制状态,自动将其同步目标更改为从节点。 有关更多信息,请参阅副本集数据同步和自管理链式复制。
对于某些部署,实现自定义复制同步拓扑可能比默认同步目标选择逻辑更有效。MongoDB 提供指定主机作为同步目标的功能。
要暂时覆盖默认的同步目标选择逻辑,可以手动配置从节点成员的同步目标以临时提取oplog条目。以下内容提供对此功能的访问:
replSetSyncFrom
命令,或rs.syncFrom()
中的助手mongosh
Considerations
同步逻辑
如果在运行 replSetSyncFrom
/rs.syncFrom()
时正在进行初始同步操作,replSetSyncFrom
/rs.syncFrom()
将停止正在进行的初始同步并重新启动与新目标的同步过程。
仅根据需要修改默认同步逻辑,并且始终谨慎操作。
目标
要同步的节点必须是数据集中数据的有效来源。如需从节点同步,节点必须:
有数据。在启动或恢复模式下不能是仲裁节点,必须能够响应数据查询。
可访问。
在副本集配置中是同一集的成员。
使用
members[n].buildIndexes
设置构建索引。集合中的另一个成员,以防止与自身同步。
如果尝试从落后当前节点 10 秒以上的节点复制,mongod
将记录警告,但仍会从落后的节点复制。另请参阅“复制延迟和流量控制”。
持久性
replSetSyncFrom
/rs.syncFrom()
提供默认行为的临时覆盖。在下列情况下,mongod
将恢复为默认同步行为:
步骤
要在 mongosh
中使用replSetSyncFrom
命令
db.adminCommand( { replSetSyncFrom: "hostname<:port>" } );
要在 mongosh
中使用rs.syncFrom()
助手
rs.syncFrom("hostname<:port>");