使用不可用节点重新配置副本集

要在大多数节点可用时重新配置副本集,请按照副本集重新配置过程中的示例 使用 当前主节点上的操作rs.reconfig()

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

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

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

此过程允许您在大多数副本集节点关闭或无法访问时进行恢复。您连接到任何幸存的节点并使用该方法的force选项rs.reconfig()

force选项将新配置强制应用到节点上。仅使用此过程从灾难性中断中恢复。force每次重新配置时不要使用。此外,不要force在任何自动脚本中使用该选项,并且force在仍然存在主节点.

强制重新配置:

  1. 备份一个幸存的节点。

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

    cfg = rs.conf()
    
    printjson(cfg)
    
  1. 在同一节点上,members通过将数组设置为仅等于幸存节点,从数组中删除副本集的已关闭和无法访问的节点。考虑以下示例,它使用cfg在上一步中创建的变量:

    cfg.members = [cfg.members[0] , cfg.members[4] , cfg.members[7]]
    
  1. 在同一节点上,使用选项设置为以下的rs.reconfig()命令重新配置集合:force``true

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

此操作强制从属服务器使用新配置。然后将配置传播到members数组中列出的所有幸存节点。然后副本集选出一个新的主节点。

NOTE

当你使用force : true时,副本集配置中的版本号显着增加,数万或数十万。这是正常的,旨在防止设置版本冲突,如果您不小心在网络分区的两侧强制重新配置,然后网络分区结束。

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

TIP

也可以看看:

重新同步副本集的节点

配置副本集标签集 管理链式复制

原文链接 - https://docs.mongodb.com/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

译者:陆文龙

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""