将从节点转换为仲裁节点

如果副本集中从节点不再需要保存数据但需要保留在集合中以确保该集合可以选择主节点,则可以使用本教程中的任一过程将辅从节点转换为仲裁节点。这两个过程在操作上是等效的:

NOTE

对于以下 MongoDB 版本,与具有仲裁器的副本集相比 (MongoDB 4.0+ 不再支持)pv1增加了回滚的可能性:w:1pv0

  • MongoDB 3.4.1
  • MongoDB 3.4.0
  • MongoDB 3.2.11 或更早版本

请参阅副本集协议版本。

将从节点转换为仲裁节点并重新使用端口号

  1. 如果您的应用程序直接连接到从节点,请修改应用程序,使 MongoDB 查询不会到达从节点。

  2. 关闭从节点。

  3. 通过调用该方法从副本集中删除从节点。在连接到当前 主节点时执行此操作rs.remove()mongosh:

    rs.remove("<hostname><:port>")
    
  1. rs.conf()通过调用中的方法验证副本集不再包含辅助副本mongosh:

    rs.conf()
    
  1. 将辅助数据目录移动到存档文件夹。例如:

    mv /data/db /data/db-old
    

NOTE

您可以改为删除数据。

  1. mongod创建一个新的空数据目录以在重新启动实例时指向该目录 。您可以重复使用以前的名称。例如:

    mkdir /data/db
    
  1. 重新启动mongod从节点实例,指定端口号、空数据目录和副本集。您可以使用之前使用的相同端口号。发出类似于以下的命令:

    WARNING

    在绑定到非本地主机(例如可公开访问的)IP 地址之前,请确保您已保护集群免受未经授权的访问。有关安全建议的完整列表,请参阅 安全清单。至少,考虑 启用身份验证强化网络基础设施。

   mongod --port 27021 --dbpath /data/db --replSet rs  --bind_ip localhost,<hostname(s)|ip address(es)>
  1. mongosh使用以下方法将辅助设备转换为仲裁设备rs.addArb()

    rs.addArb("<hostname><:port>")
    
  1. rs.conf()通过调用方法验证仲裁器是否属于副本集 mongosh.

    rs.conf()
    

仲裁员应包括以下内容:

   "arbiterOnly" : true

将从节点转换为在新端口号上运行的仲裁节点

  1. 如果您的应用程序直接连接到从节点或具有引用从节点的连接字符串,请修改应用程序,以便 MongoDB 查询不会到达从节点。

  2. 创建一个新的空数据目录以用于新的端口号。例如:

    mkdir /data/db-temp
    
  1. 在新端口号上启动一个新mongod实例,指定新数据目录和现有副本集。发出类似于以下的命令:

    WARNING

    在绑定到非本地主机(例如可公开访问的)IP 地址之前,请确保您已保护集群免受未经授权的访问。有关安全建议的完整列表,请参阅 安全清单。至少,考虑 启用身份验证强化网络基础设施。

   mongod --port 27021 --dbpath /data/db-temp --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  1. mongosh连接到当前mongod主节点实例,使用以下方法将新实例转换为仲裁器rs.addArb()

    rs.addArb("<hostname><:port>")
    
  1. rs.conf()通过调用中的方法验证仲裁器是否已添加到副本集 mongosh.

    rs.conf()
    

仲裁员应包括以下内容:

   "arbiterOnly" : true
  1. 关闭从节点。

  2. 通过调用方法从副本集中删除辅助rs.remove()mongosh:

    rs.remove("<hostname><:port>")
    
  1. rs.conf()通过调用方法验证副本集不再包含旧的辅助mongosh:

    rs.conf()
    
  1. 将从节点数据目录移动到存档文件夹。例如:

    mv /data/db /data/db-old
    

NOTE

您可以改为删除数据。

配置非投票副本集成员副本集维护教程

原文链接 - https://docs.mongodb.com/manual/tutorial/convert-secondary-into-arbiter/

译者:陆文龙

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

results matching ""

    No results matching ""