mongodb副本集移除已有的节点

MongoDB副本集移除节点

 

前一篇文章学习了mongodb副本集添加新节点:mongodb副本集添加新节点,接下来学习下如何移除有问题的节点,先看官方文档:https://docs.mongodb.com/manual/tutorial/remove-replica-set-member/,里面记录了比较详细的步骤,大概如下(移除之前确保业务流量已经从这个已有的节点全部迁移走了):

 

 

用rs.remove()方法移除:

  1. Shut down the mongod instance for the member you wish to remove. To shut down the instance, connect using the mongo shell and the db.shutdownServer() method.
  2. Connect to the replica set's current primary. To determine the current primary, use db.isMaster() while connected to any member of the replica set.
  3. Use rs.remove() in either of the following forms to remove the member:

    rs.remove("mongod3.example.net:27017")
    rs.remove("mongod3.example.net")

 

使用rs.reconfig()方法移除节点

在mongodb4.4之后,rs.config()也可以及时移除一个投票节点,也可以及时添加一个投票节点。

大概步骤如下:

  1. Shut down the mongod instance for the member you wish to remove. To shut down the instance, connect using the mongo shell and the db.shutdownServer() ,method.关闭mongodb服务
  2. Connect to the replica set's current primary. To determine the current primary, use db.isMaster() while connected to any member of the replica set.,连接到primary节点
  3. Issue the rs.conf() method to view the current configuration document and determine the position in the members array of the member to remove: 执行rs.conf()命泠

    {
        "_id" : "rs",
        "version" : 7,
        "members" : [
            {
                "_id" : 0,
                "host" : "mongod_A.example.net:27017"
            },
            {
                "_id" : 1,
                "host" : "mongod_B.example.net:27017"
            },
            {
                "_id" : 2,
                "host" : "mongod_C.example.net:27017"
            }
        ]
    }

     

  4. 开始操作,拿到cfg对象,移除

    cfg = rs.conf()
    cfg.members.splice(2,1)

     

  5. 加载config生效

    rs.reconfig(cfg)

     

可以看到成员2已经被移除出去了。

MongoDB 副本详细指南与 Windows 搭建 步骤 概念见教材。 一、MongoDB 节点概述 1.1 节点类型 在 MongoDB 副本架构中,节点类型决定了其在数据存储、读写处理以及群管理中的角色,各类型 节点分工明确,协同保障系统的稳定运行。 主节点(Primary):主节点是整个副本的核心,承担着写操作的唯一入口职责。当客户端发起写请 求时,只有主节点能够接收并处理这些操作,如插入新数据、更新已有记录、删除文档等。每一次写操 作完成后,主节点会将该操作详细记录到 oplog 日志中, oplog 是一个特殊的合,存储在 库里,它记录了所有的写操作历史。主节点会通过内部的通信机制,将 local 数据 oplog 中的操作同步给其他从节 点,确保副本内的数据一致性 。例如,当一个电商应用向数据库插入新的订单数据时,该操作首先由 主节点接收,记录到 oplog 后再同步给其他节点。 从节点(Secondary):从节点的主要任务是从主节点复制数据和 oplog 日志。它通过定期拉取主节点 的oplog,并按照操作顺序在本地数据库上应用这些操作,从而实现与主节点数据的实时同步。从节点 可以接收客户端的读请求,分担主节点的负载压力,提高系统的并发处理能力。在一些大型的内容管理 系统中,从节点常被用于提供文章、图片等静态资源的读取服务,减轻主节点的负担 。同时,从节点还 起到数据备份的作用,当主节点出现故障时,从节点可以参与选举,有可能被推举成为新的主节点。 仲裁节点(Arbiter):仲裁节点本身不存储任何数据,它的核心作用在于参与副本的选举过程。在副 本选举主节点时,每个节点都会参与投票,而仲裁节点的投票在特定情况下会起到决定性作用。当副 本中的节点数量为偶数时,可能会出现投票平局的情况,导致选举无法顺利进行。此时引入仲裁节 点,它的一票可以打破僵局,确保选举能够正常完成,维护副本的高可用性。例如,在一个包含两个 数据节点副本中,添加一个仲裁节点,就能避免选举时因票数相同而陷入停滞的问题。 1.2 节点功能 不同类型的节点相互协作,构建起 MongoDB 副本的完整功能体系。主节点作为写操作中枢,协调数 据同步流程;从节点一方面为读操作提供支持,另一方面保障数据的冗余备份;仲裁节点则专注于选举 机制,确保副本在面对节点故障
04-26
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值