文档菜单
文档首页
/
MongoDB 手册
/ / /

将自管理的次要成员转换为仲裁者

本页内容

  • 将次要成员转换为仲裁者并重用端口号
  • 将次要成员转换为在新端口号上运行的仲裁者

如果您有一个次要成员副本集 中,该成员不再需要保留数据但需要保留在集合中以确保集合可以 选举主节点,您可以使用本教程中的任一程序将该次要成员转换为 仲裁者。这两种程序在操作上是等效的

  • 您可以在与之前次要成员相同的端口上运行仲裁者。在此过程中,您必须在重新启动并重新配置为仲裁者之前关闭次要成员并删除其数据。

    有关此过程,请参阅将次要成员转换为仲裁者并重用端口号.

  • 在新的端口上运行仲裁者。在此过程中,您可以在关闭作为次要成员运行的实例之前重新配置服务器为仲裁者。

    有关此过程,请参阅 将次要成员转换为在新端口号上运行的仲裁者。

  1. 如果您的应用程序直接连接到次要成员,请修改应用程序,以便 MongoDB 查询不达到次要成员。

  2. 关闭次要成员。

  3. 通过调用次要节点副本集方法rs.remove()将其移除。在连接到当前主节点时执行此操作mongosh:

    rs.remove("<hostname><:port>")
  4. 通过在mongosh中调用rs.conf()方法来验证副本集中不再包含次要节点

    rs.conf()
  5. 将次要节点的数据目录移动到归档文件夹中。例如

    mv /data/db /data/db-old

    注意

    可选

    您也可以选择删除数据。

  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. mongosh中使用rs.addArb()方法将次要节点转换为仲裁者

    rs.addArb("<hostname><:port>")
  9. 通过在mongosh.中调用rs.conf()方法来验证仲裁者属于副本集

    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中,使用mongod将新的实例转换为仲裁者,使用rs.addArb()方法

    rs.addArb("<hostname><:port>")
  5. 通过在mongosh中调用rs.conf()方法来验证仲裁者已添加到副本集

    rs.conf()

    仲裁成员应包含以下内容

    "arbiterOnly" : true
  6. 关闭次要成员。

  7. 通过在mongosh中调用rs.remove()方法从副本集中删除从节点

    rs.remove("<hostname><:port>")
  8. 通过在mongosh中调用rs.conf()方法来验证副本集不再包含旧从节点

    rs.conf()
  9. 将次要节点的数据目录移动到归档文件夹中。例如

    mv /data/db /data/db-old

    注意

    可选

    您也可以选择删除数据。

返回

阻止次要优先级