如果你有一个次要的副本集不再需要保存的数据,但需要保持在设定以确保集可以选择一个主,你可以将二次转换为 仲裁者使用本教程中任一过程。这两个过程在操作上是等效的:
您可以在与前一个备用服务器相同的端口上操作仲裁器。在此过程中,您必须先关闭辅助节点并删除其数据,然后重新启动并将其重新配置为仲裁程序。
有关此过程,请参阅将辅助转换为仲裁器并重新使用端口号。
在新端口上运行仲裁程序。在此过程中,您可以在关闭作为辅助服务器运行的实例之前将服务器重新配置为仲裁服务器。
有关此过程,请参阅在新端口号上运行将辅助转换为仲裁器。
注意
对于以下版本的MongoDB,
与带有仲裁器的副本集相比(在MongoDB 4.0+中不再支持)pv1
,w:1
回滚的可能性增加了pv0
:
请参见副本集协议版本。
如果您的应用程序直接连接到辅助服务器,请修改应用程序,以使MongoDB查询不会到达辅助服务器。
关闭辅助服务器。
将辅助数据库的数据目录移动到存档文件夹。例如:
可选的
您可以改为删除数据。
重新启动mongod
实例时,创建一个新的空数据目录以指向
。您可以重用以前的名称。例如:
重新启动mongod
辅助服务器的实例,并指定端口号,空数据目录和副本集。您可以使用以前使用的相同端口号。发出类似于以下内容的命令:
在mongo
shell中,使用以下rs.addArb()
方法将辅助节点转换为仲裁器:
通过调用外壳程序中的rs.conf()
方法,验证仲裁程序是否属于副本集
mongo
。
仲裁员应包括以下内容:
如果您的应用程序直接连接到辅助服务器或具有引用辅助服务器的连接字符串,请修改应用程序,以使MongoDB查询不会到达辅助服务器。
创建一个新的空数据目录,以与新的端口号一起使用。例如:
mongod
在新的端口号上启动新实例,指定新的数据目录和现有的副本集。发出类似于以下内容的命令:
在mongo
连接到当前主节点的shell中,mongod
使用以下rs.addArb()
方法将新实例转换为仲裁器:
通过调用外壳程序中的rs.conf()
方法,验证仲裁程序已添加到副本集
mongo
。
仲裁员应包括以下内容:
关闭辅助服务器。
通过在Shell中调用方法,从副本集中删除辅助副本:rs.remove()
mongo
将辅助数据库的数据目录移动到存档文件夹。例如:
可选的
您可以改为删除数据。