标签:
1:数据同步的原理:
当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步: 1:检查自己local库的oplog.rs集合找出最近的时间戳。 2:检查Primary节点local库oplog.rs集合,找出大于此时间戳的记录。 3:将找到的记录插入到自己的oplog.rs集合中,并执行这些操作。
2:查看副本集的信息
gechongrepl:PRIMARY> rs.status() { "set" : "gechongrepl", "date" : ISODate("2015-07-02T02:38:15Z"), "myState" : 1, "members" : [ { "_id" : 6, "name" : "192.168.91.144:27017", "health" : 1, "state" : 7, "stateStr" : "ARBITER", "uptime" : 1678, "lastHeartbeat" : ISODate("2015-07-02T02:38:14Z"), "lastHeartbeatRecv" : ISODate("2015-07-02T02:38:14Z"), "pingMs" : 1 }, { "_id" : 10, "name" : "192.168.91.135:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 1678, "optime" : Timestamp(1435803750, 1), "optimeDate" : ISODate("2015-07-02T02:22:30Z"), "lastHeartbeat" : ISODate("2015-07-02T02:38:14Z"), "lastHeartbeatRecv" : ISODate("2015-07-02T02:38:13Z"), "pingMs" : 1, "syncingTo" : "192.168.91.148:27017" }, { "_id" : 11, "name" : "192.168.91.148:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 1698, "optime" : Timestamp(1435803750, 1), "optimeDate" : ISODate("2015-07-02T02:22:30Z"), "electionTime" : Timestamp(1435803023, 1), "electionDate" : ISODate("2015-07-02T02:10:23Z"), "self" : true }, { "_id" : 12, "name" : "192.168.91.134:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 1655, "optime" : Timestamp(1435803750, 1), "optimeDate" : ISODate("2015-07-02T02:22:30Z"), "lastHeartbeat" : ISODate("2015-07-02T02:38:14Z"), "lastHeartbeatRecv" : ISODate("2015-07-02T02:38:14Z"), "pingMs" : 1, "syncingTo" : "192.168.91.135:27017" } ], "ok" : 1 }
myState:1表示primary state:1表示primary;7表示arbiter uptime:成员的在线时间 lastHeartbeat:当前实例到远端最近一次成功接收到心跳包的时间 pingMs:本实例到远端路由包的来回时间 optime:读取oplog.rs集合。本实例最近一次的更改时间。
MongoDB通过lastHeartbeat来实现自动转移。
mongod实例每隔两秒就会向其他成员发送一个心跳包,并且通过rs.status()中返回的成员的health来判断成员的状态。如果primary节点不可用了,那么复制集中的所有secondary节点都会触发一次选举操作。选出新的primary节点。如果secondary节点有多个,则会选举拥有最新oplog时间戳记录的或者有较高权限的节点成为primary(注意:如果secondary停止时间过长,导致primary节点的oplog内容被循环写覆盖掉,则需要手动同步secondary节点)
MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理
标签:
原文地址:http://www.cnblogs.com/xiaoit/p/4615422.html