Configure a Secondary's Sync Target配置辅助设备的同步目标

On this page本页内容

Overview概述

Secondaries capture data from the primary member to maintain an up to date copy of the sets' data. 次要成员从主要成员获取数据,以维护集合数据的最新副本。However, by default secondaries may automatically change their sync targets to secondary members based on changes in the ping time between members and the state of other members’ replication. 但是,默认情况下,辅助成员可以根据成员之间的ping时间和其他成员的复制状态的变化,自动将其同步目标更改为辅助成员。See Replica Set Data Synchronization and Manage Chained Replication for more information.有关详细信息,请参阅副本集数据同步管理链接复制

For some deployments, implementing a custom replication sync topology may be more effective than the default sync target selection logic. 对于某些部署,实现自定义复制同步拓扑可能比默认同步目标选择逻辑更有效。MongoDB provides the ability to specify a host to use as a sync target.MongoDB提供了指定主机作为同步目标的能力。

To temporarily override the default sync target selection logic, you may manually configure a secondary member's sync target to temporarily pull oplog entries. 要临时覆盖默认的同步目标选择逻辑,可以手动配置secondary成员的同步目标以临时拉取oplog条目。The following provide access to this functionality:以下内容提供了此功能的访问权限:

Considerations注意事项

Sync Logic同步逻辑

Changed in version 3.4.在版本3.4中更改

If an initial sync operation is in progress when you run replSetSyncFrom/rs.syncFrom(), replSetSyncFrom/rs.syncFrom() stops the in-progress initial sync and restarts the sync process with the new target. 如果在运行replSetSyncFrom/rs.syncFrom()时正在进行初始同步操作,则replSetSyncFrom/rs.syncFrom()将停止正在进行的初始同步,并重新启动与新目标的同步过程。In previous versions, if you run replSetSyncFrom/rs.syncFrom() during initial sync, MongoDB produces no error messages, but the sync target will not change until after the initial sync operation.在以前的版本中,如果在初始同步期间运行replSetSyncFrom/rs.syncFrom(),MongoDB不会生成错误消息,但同步目标在初始同步操作之后才会更改。

Only modify the default sync logic as needed, and always exercise caution.仅根据需要修改默认同步逻辑,并始终保持谨慎。

Target目标

The member to sync from must be a valid source for data in the set. 要从中同步的成员必须是集合中数据的有效源。To sync from a member, the member must:要从成员同步,成员必须:

  • Have data. It cannot be an arbiter, in startup or recovering mode, and must be able to answer data queries.有数据。在启动或恢复模式下,它不能是仲裁器,必须能够回答数据查询。
  • Be accessible.易于接近。
  • Be a member of the same set in the replica set configuration.成为副本集配置中同一集的成员。
  • Build indexes with the members[n].buildIndexes setting.使用members[n].buildIndexes设置生成索引。
  • A different member of the set, to prevent syncing from itself.集合中的其他成员,以防止与自身同步。

If you attempt to replicate from a member that is more than 10 seconds behind the current member, mongod will log a warning but will still replicate from the lagging member. 如果您尝试从比当前成员晚10秒以上的成员复制,mongod将记录警告,但仍将从滞后成员复制。See also Replication Lag and Flow Control.另请参阅复制滞后和流量控制

Persistence坚持力

replSetSyncFrom/rs.syncFrom() provide a temporary override of default behavior. 提供默认行为的临时覆盖。mongod will revert to the default sync behavior in the following situations:将在以下情况下恢复为默认同步行为:

  • The mongod instance restarts.mongod实例重新启动。
  • The connection between the mongod and the sync target closes.mongod和同步目标之间的连接关闭。
  • If the sync target falls more than 30 seconds behind another member of the replica set.如果同步目标落后副本集的另一个成员30秒以上。

Procedure过程

To use the replSetSyncFrom command in mongosh:要在mongosh中使用replSetSyncFrom命令:

db.adminCommand( { replSetSyncFrom: "hostname<:port>" } );

To use the rs.syncFrom() helper in mongosh:要在mongosh中使用rs.syncFrom()助手,请执行以下操作:

rs.syncFrom("hostname<:port>");
←  Change Hostnames in a Replica SetRename a Replica Set →