对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

将自管理从节点转换为仲裁节点

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

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

  2. 关闭从节点。

  3. 通过调用 方法从副本集删除从从节点(secondary noders.remove() from replica set)。在连接到 中的当前主节点 (primary node in themongosh replica set)时执行此操作:

    rs.remove("<hostname><:port>")
  4. 通过调用rs.conf() 中的 方法,验证副本集是否不再包含从节点(secondary node from replicamongosh set):

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

    mv /data/db /data/db-old

    注意

    Optional

    您可以改为删除数据。

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

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

    警告

    将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

    mongod --port 27021 --dbpath /data/db --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  8. mongoshrs.addArb() 中,使用 方法从从节点(secondary node from replica set)转换为仲裁节点:

    rs.addArb("<hostname><:port>")
  9. 通过调用rs.conf() 中的mongosh 方法,验证仲裁节点是否属于副本集。

    rs.conf()

    仲裁节点应包括以下内容:

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

  2. 创建一个新的空数据目录,以便与新端口号一起使用。例如:

    mkdir /data/db-temp
  3. 在新的端口号上启动新的 mongod 实例,并指定新数据目录和现有的副本集。发出如下所示的命令:

    警告

    将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

    mongod --port 27021 --dbpath /data/db-temp --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  4. mongosh在连接到当前主节点 (primary node in the replica set)的 中,使用 方法将新的mongod rs.addArb()实例转换为仲裁节点节点:

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

    rs.conf()

    仲裁节点应包括以下内容:

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

  7. 通过调用 中的 方法从副本集删除从节点(secondary node from replica rs.remove()mongoshset):

    rs.remove("<hostname><:port>")
  8. 通过调用rs.conf() 中的 方法,验证副本集是否不再包含旧的从节点(secondary node from replicamongosh set):

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

    mv /data/db /data/db-old

    注意

    Optional

    您可以改为删除数据。