配置从节点的同步目标
概述
从节点从主节点捕获数据以维护集合数据的最新副本。但是,默认情况下,从节点可能会根据节点之间的 ping 时间变化和其他节点复制的状态自动将其同步目标更改为从节点。有关详细信息,请参阅 副本集数据同步和 管理链式复制。
对于某些部署,实现自定义复制同步拓扑可能比默认同步目标选择逻辑更有效。MongoDB 提供了指定主机作为同步目标的能力。
要临时覆盖默认同步目标选择逻辑,您可以手动配置从节点的同步目标以临时拉取oplog条目。以下提供对此功能的访问:
注意事项
同步逻辑
如果在您运行时初始同步正在进行中操作replSetSyncFrom
/rs.syncFrom()
,replSetSyncFrom
/rs.syncFrom()
将停止正在进行的初始同步并重新启动与新目标的同步过程。
仅根据需要修改默认同步逻辑,并始终谨慎行事。
目标
要同步的节点必须是集合中数据的有效来源。要从节点同步,节点必须:
- 有资料。在启动或恢复模式下,它不能成为仲裁者,并且必须能够回答数据查询。
- 易于访问。
- 成为副本集配置中同一集的节点。
- 使用设置构建索引
members[n\].buildIndexes
。 - 该集合的不同节点,以防止与自身同步。
如果您尝试从落后于当前节点 10 秒以上的节点进行复制,mongod
将记录警告但仍会从滞后的节点 进行复制。另请参阅 复制滞后和流量控制。
Persistence
replSetSyncFrom
/rs.syncFrom()
提供默认行为的临时覆盖。 mongod
在以下情况下将恢复为默认同步行为:
程序
在中使用replSetSyncFrom
命令mongosh
:
db.adminCommand( { replSetSyncFrom: "hostname<:port>" } );
在中使用rs.syncFrom()
助手mongosh
:
rs.syncFrom("hostname<:port>");
← 更改副本集中的主机名 重命名副本集 →
原文链接 - https://docs.mongodb.com/manual/tutorial/configure-replica-set-secondary-sync-target/
译者:陆文龙