Replica set即副本集 分布式架构的一种实现
其他两种 主从模式 sharding模式 有机会再研究
Replica set 分为 主节点(Primary)副本节点(Secondary) 仲裁者(Arbiter)
主节点作为主数据库进行交互 副本节点保持于主节点数据一致 当主节点挂掉时 仲裁者会在副本节点中选举一个作为主节点
当副本节点优先级为0时不会被选举为主节点
各节点通过心跳维持联系 通过oplog传递同步数据 oplog是滚动的保存MongoDB中所有数据操作的日志
oplog数据结构:
oplog的数据结构如下所示:
{ ts : ..., op: ..., ns: ..., o: ... o2: ... }
- ts: 8字节的时间戳,由4字节unix timestamp + 4字节自增计数表示。这个值很重要,在选举(如master宕机时)新primary时,会选择ts最大的那个secondary作为新primary。
- op:1字节的操作类型,例如i表示insert,d表示delete。
- ns:操作所在的namespace。
- o:操作所对应的document,即当前操作的内容(比如更新操作时要更新的的字段和值)
- o2: 在执行更新操作时的where条件,仅限于update时才有该属性
其中op有以下几个值:
- "i": insert
- "u": update
- "d": delete
- "c