将自管理的次要成员转换为仲裁者
如果您有一个次要成员 在 副本集 中,该成员不再需要保留数据但需要保留在集合中以确保集合可以 选举主节点,您可以使用本教程中的任一程序将该次要成员转换为 仲裁者。这两种程序在操作上是等效的
您可以在与之前次要成员相同的端口上运行仲裁者。在此过程中,您必须在重新启动并重新配置为仲裁者之前关闭次要成员并删除其数据。
有关此过程,请参阅将次要成员转换为仲裁者并重用端口号.
在新的端口上运行仲裁者。在此过程中,您可以在关闭作为次要成员运行的实例之前重新配置服务器为仲裁者。
有关此过程,请参阅 将次要成员转换为在新端口号上运行的仲裁者。
将次要成员转换为仲裁者并重用端口号
如果您的应用程序直接连接到次要成员,请修改应用程序,以便 MongoDB 查询不达到次要成员。
关闭次要成员。
通过调用次要节点的副本集方法
rs.remove()
将其移除。在连接到当前主节点时执行此操作mongosh
:rs.remove("<hostname><:port>") 通过在
mongosh
中调用rs.conf()
方法来验证副本集中不再包含次要节点rs.conf() 将次要节点的数据目录移动到归档文件夹中。例如
mv /data/db /data/db-old 注意
可选
您也可以选择删除数据。
为在重启
mongod
实例时指向创建一个新的空数据目录。您可以重用之前的名称。例如mkdir /data/db 重启次要节点的
mongod
实例,指定端口号、空数据目录和副本集。您可以使用之前使用的相同端口号。执行类似以下命令警告
在将您的实例绑定到公开可访问的IP地址之前,您必须确保您的集群免受未经授权的访问。有关完整的安全建议列表,请参阅自管理部署的安全清单。至少,考虑启用身份验证和强化网络基础设施。
mongod --port 27021 --dbpath /data/db --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)> 在
mongosh
中使用rs.addArb()
方法将次要节点转换为仲裁者rs.addArb("<hostname><:port>") 通过在
mongosh
.中调用rs.conf()
方法来验证仲裁者属于副本集rs.conf() 仲裁成员应包含以下内容
"arbiterOnly" : true
在新端口上运行从从节点到仲裁者的转换
如果您的应用程序直接连接到从节点或连接字符串引用从节点,则修改应用程序,使其不向从节点发送MongoDB查询。
创建一个新的空数据目录,用于新端口号。例如
mkdir /data/db-temp 在新端口上启动一个新的
mongod
实例,指定新数据目录和现有副本集。执行类似于以下命令的操作警告
在将您的实例绑定到公开可访问的IP地址之前,您必须确保您的集群免受未经授权的访问。有关完整的安全建议列表,请参阅自管理部署的安全清单。至少,考虑启用身份验证和强化网络基础设施。
mongod --port 27021 --dbpath /data/db-temp --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)> 在连接到当前主节点的
mongosh
中,使用mongod
将新的实例转换为仲裁者,使用rs.addArb()
方法rs.addArb("<hostname><:port>") 通过在
mongosh
中调用rs.conf()
方法来验证仲裁者已添加到副本集rs.conf() 仲裁成员应包含以下内容
"arbiterOnly" : true 关闭次要成员。
通过在
mongosh
中调用rs.remove()
方法从副本集中删除从节点rs.remove("<hostname><:port>") 通过在
mongosh
中调用rs.conf()
方法来验证副本集不再包含旧从节点rs.conf() 将次要节点的数据目录移动到归档文件夹中。例如
mv /data/db /data/db-old 注意
可选
您也可以选择删除数据。