MongoDB实践五(复制集)
- 高可用性
- 数据安全
- 分流/分工
复制集节点
- 主节点负责处理所有的写入请求 。
- 主节点(默认)和副节点都可以处理读取请求。
- 父节点从主节点(或者符合条件的副 节点)处复制数据。
- 每个节点都会向其他节点发送心跳请求。
- 每隔两秒发送一次,超过10秒则请求超时(默认)。
- 复制集中最多可以有50个节点。
复制集选举
- 候选节点发起选举,每个节点投票给比自己更同步的节点。
- 得到超过半数选票的候选节点会当选主节点。
- 复制集中最多可以有7个投票节点。
触发选举的事件
- 主节点与父节点之间的心跳请求超时
- 复制集初始化
- 新节点加入复制集
投票机
- 没有数据
- 可以投票
- 不能成为主节点
docker run --net mynetwork --name mongo1 -v /mymongo/data1:/data/db -p 27017:27017 -d mongo:4 --replSet myset --port 27017
docker run --net mynetwork --name mongo2 -v /mymongo/data2:/data/db -p 27018:27018 -d mongo:4 --replSet myset --port 27018
docker run --net mynetwork --name mongo3 -v /mymongo/data3:/data/db -p 27019:27019 -d mongo:4 --replSet myset --port 27019
> rs.initiate(
... {
... _id:"myset",
... members:[
... {_id:0,host:"mongo1:27017"},
... {_id:1,host:"mongo2:27018"},
... {_id:2,host:"mongo3:27019"}
... ]
... }
... )
Nice to see you all!