Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

重新配置具有不可用成员的自管理副本集

在此页面上

  • 通过强制重新配置来重新配置

要在 大多数 成员可用时重新配置 副本集 ,请按照 副本集重新配置过程 中的示例,对当前 主节点 rs.reconfig()(primary node in the replica set) 节点使用 操作。

本文档提供了当只有少数节点可访问时重新配置副本集的步骤。

您可能需要使用该过程,例如在地理上分布的副本集中,任何本地成员群组都无法达到多数。有关这种情况的更多信息,请参阅副本集选举

此程序可让您在大多数副本集成员关闭或无法访问时进行恢复。您可以连接任何幸存成员,并对 rs.reconfig() 方法使用 force 选项。

force 选项强制对节点进行新配置。此过程仅用于从灾难性中断中恢复。请勿在每次重新配置时都使用 force。此外,请勿在任何自动脚本中使用 force 选项,也请勿在仍主节点时使用 force

强制重新配置:

  1. 备份幸存节点。

  2. 连接到幸存节点并保存当前配置。请考虑以下用于保存配置的示例命令:

    cfg = rs.conf()
    printjson(cfg)
  3. 在同一节点上,通过将 members 数组设置为仅包含幸存节点,从该数组中移除副本集的下线和无法访问的节点。以下示例使用了在上一步中创建的 cfg 变量:

    cfg.members = [cfg.members[0] , cfg.members[4] , cfg.members[7]]
  4. 在同一成员上,使用 rs.reconfig() 命令并将 force 选项设置为 true,重新配置该集:

    rs.reconfig(cfg, {force : true})

    此操作将强制辅助成员使用新配置。然后,将配置传输到 members 数组所列的所有幸存成员。副本集将选举新的主副本。

    注意

    使用 force : true 时,副本集配置中的版本号会显著增加,增加数万或数十万。这是正常现象,旨在防止设置版本冲突(如果意外在网络分区的两侧强制重新配置,则网络分区结束)。

  5. 如果故障或分区只是暂时性的情况,请尽快关闭或停用已删除的节点。

提示

另请参阅:

后退

重新同步成员