MongoDB入门到进阶笔记:07Mongo 副本集的搭建 添加 删除 延时 仲裁 rs.status replSetName
在MongoDB中,副本集是一种高可用性解决方案,它允许将数据分布在多个服务器上,从而提高数据的可靠性和可扩展性,本篇笔记将介绍如何搭建MongoDB副本集,以及如何进行添加、删除、延时和仲裁操作。
搭建MongoDB副本集
1、准备3台服务器,分别安装MongoDB。
2、修改每台服务器的配置文件/etc/mongod.conf
,设置以下参数:
replication: replSetName: "rs0" # 副本集名称
3、重启每台服务器上的MongoDB服务。
4、使用mongo
命令连接到任意一台服务器,执行以下命令创建副本集:
rs.initiate()
添加副本集成员
1、在新的服务器上安装MongoDB,并修改配置文件/etc/mongod.conf
,设置以下参数:
replication: replSetName: "rs0" # 副本集名称
2、重启新服务器上的MongoDB服务。
3、使用mongo
命令连接到任意一台服务器,执行以下命令添加副本集成员:
rs.add("新服务器IP:端口")
删除副本集成员
1、使用mongo
命令连接到任意一台服务器,执行以下命令查看当前副本集的成员状态:
rs.status()
2、根据需要删除某个成员,执行以下命令:
rs.remove("成员ID")
延时与仲裁操作
1、延时操作:当主节点出现故障时,副本集中的其他节点会选举出一个新的主节点,这个过程称为“延时”,可以通过以下命令查看当前副本集的主节点状态:
rs.status()
2、仲裁操作:当副本集中的主节点数量为偶数时,可能会出现无法投票选出主节点的情况,此时,需要手动触发一次选举,选择一个新的主节点,可以使用以下命令进行仲裁操作:
rs.stepDown() # 当前节点主动放弃主节点身份,触发选举
常见问题与解答
问题1:为什么执行rs.add("新服务器IP:端口")
后,新成员的状态仍然是PRIMARY?
答:这是因为在添加新成员时,MongoDB默认将其设置为主节点,如果需要将新成员设置为从节点,可以在添加成员之前,先停止新服务器上的MongoDB服务,然后执行rs.add("新服务器IP:端口")
,之后,再启动新服务器上的MongoDB服务,使用rs.slaveOk()
命令将新成员设置为从节点。
问题2:为什么执行rs.remove("成员ID")
后,副本集中的成员数量没有减少?
答:这是因为在删除成员时,MongoDB不会立即释放该成员的资源,需要等待一段时间(默认为60秒),待该成员的所有数据同步到其他成员后,才会自动释放资源,在此期间,可以通过rs.remove("成员ID")
命令强制删除该成员,需要注意的是,强制删除成员可能会导致数据丢失,因此请谨慎操作。
问题3:为什么执行rs.stepDown()
后,副本集中的主节点数量没有发生变化?
答:这是因为在执行rs.stepDown()
命令时,如果没有指定要降级的节点ID,MongoDB会将当前节点作为主节点进行降级,如果当前节点已经是从节点或者已经降级为主节点的从节点,那么执行此命令不会有任何效果,如果要降级其他主节点,需要指定其ID,rs.stepDown("主节点ID")
。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/506007.html