Step into MongoDB - 13 - 副本集

目录

摘要

副本集,与从主复制的区别,投票机制,偶数节点

副本集

副本集和主从复制

  • 副本集是具有故障恢复功能的主从集群
  • 而主从复制的目的是提高读写效率
  • 副本集不像主从复制没有固定主节点
  • 本质上是具有 HA 功能的主从集群

创建副本集

多次使用同一个副本集名执行下列语句,就会生成一个包含多个节点的副本集

--port yourport --dbpath yourdbPath --replSet 副本集名

创建完副本集后控制台会显示如下语句,标示副本集还未进行初始化

replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)

初始化副本集

config_test = {
    "_id": "node",
    "members": [
        {
            "_id": 0,
            "host": "localhost: 27017"
        },
        {
            "_id": 1,
            "host": "localhost: 27018"
        },
        {
            "_id": 2,
            "host": "localhost: 27019"
        }
    ]
}
rs.initiate(config_test)

成功初始化后,重新执行 mongo 后命令行控制符会由 > 变为 node:PRIMARY>,此为活动节点,或 node:SECONDARY>,此为非活动节点

查看副本集状态

rs.status()

查看当前节点是否为活动节点

db.isMaster()

副本集特点

  • 备份节点不对外提供服务,所以无法插入也无法查询。
  • 活动节点 insert 数据后,备份节点无法查到,但数据已经备份了,只是因为备份节点不对外提供服务。
  • 当活动节点宕机后,备份节点会自动切换到活动节点,此时查看副本集状态时,原活动节点不会消失,而是 health 由 1 变为 0
  • 当原来的活动节点恢复后,其不会抢现在活动节点,而是变为备份节点
  • 副本集任何时间只有一个活跃节点
  • 副本集使用投票机制决定谁成为活跃节点,优先级最高、数据最新的节点获胜

节点类型

  • standard 常规节点
    存储完整的数据副本,参与投票,有可能成为活跃节点

  • passive
    存储完整的数据副本,参与投票

  • arbiter 仲裁者
    只参与投票

偶数节点的问题

服务器不可用除了服务器崩溃还可能是节点之间的网络连接断开了,这种时候如果大部分节点依然能够通信,则 Mongo 认为网络还有效。

因此,如果是奇数节点,如 “5” 个节点,遇到网络故障时分裂成 “2” 个节点和 “3” 个节点的片段。由于后者占多数,所以 Mongo 会从后者选出活跃节点继续响应请求。

如果是偶数节点,如 “4” 个节点,则可能分裂成 “2” 个节点和 “2” 个节点,由于 Mongo 无法找到大部分节点,所以停止了服务。

因此,总是应该使用奇数节点而不是偶数节点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值