mongodb--复制集和故障诊断(笔记)

复制集

  • 主从节点,主节点负责读和写,从节点只有读取功能。
  • 从节点备份数据,主节点故障后,从节点替换主节点。
  • 每个节点都会向其他节点发送心跳,默认每隔2秒一次,超过10秒超时(默认)。
  • 复制集中最多50个节点。

选举

  • 候选节点发起选举,每个节点投票比自己更同步的节点
  • 得到超过半数选票的节点会当选为主节点
  • 复制集中最多可以有7个投票节点
  • 触发条件:心跳超时、复制集初始化、新节点加入复制集
  • 没有数据的节点可以投票,不能成为主节点

同一台服务器,使用docker创建复制集

# 创建network docker内部使用,是应为在同一天服务器上才用的,不同服务器可用不设置
docker network create mynetwork

# 查询使用的应用
docker network ls

# 运行三个节点
docker run --net mynetwork --name mongol -v /mymongo/data1:/data/db -p 27017:27017 -d mongo:4 --replSet myset --port 27017
docker run --net mynetwork --name mongo2 -v /mymongo/data1:/data/db -p 27018:27018 -d mongo:4 --replSet myset --port 27018
docker run --net mynetwork --name mongo3 -v /mymongo/data1:/data/db -p 27019:27019 -d mongo:4 --replSet myset --port 27019

# 创建复制集
docker exec -it mongo1 mongo
> rs.initiate(
    {
        _id: "myset",
        members: [
            {_id: 0,host : "mongo1: 27017"},
            {_id: 1,host : "mongo2: 27018"},
            {_id: 2,host : "mongo3: 27019"}
        ]
    }
)

# 查看状态
> rs.status()

非docker添加方式

  •  使用下面配置启动 3个mongodb数据库(port使用27001,27002,27003
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值