正本集 Replica Set
一组保护雷同数据的 mongod 过程,正本集提供了冗余和高可用。
一个主节点 Primary,接管所有写操作
多个从节点 Secondary,承受所有读操作
一个仲裁节点 Arbiter,不持有数据,只在选举时投票
倡议起码配置一主两从三成员正本集,但如果只有一主一从两个节点,则能够退出一个 仲裁节点。仲裁节点参加选举,但不持有数据。
正本集中最多 50 个成员,但仅能有 7 个可投票成员。
正本集中的主从节点
主节点会将所有写操作记录到日志中,即 oplog,从节点复制主节点的 oplog,并将这些操作利用在从节点上。主节点挂掉之后,从节点会通过选举产生新的主节点。
主从节点关系:
从节点间关系:
仲裁节点:
专门为投票存在的,一个仲裁节点一票。
正本集中的日志 Oplog
主节点上的更新日志 oplog,会异步同步给从节点。
日志大小
启动时可指定日志大小,如未指定则采纳默认配置大小。
https://docs.mongoing.com/replication/replica-set-oplog#ri-zh…
慢日志
oplog 中执行较慢的操作,会被记录到诊断日志中,相似 MySQL 的慢日志
复制提早
复制提早是指将写操作从主节点拷贝到从节点上的过程。
故障转移
如果主节点与集群中其余节点通信超时,超过 electionTimeoutMillis 配置的工夫,从节点会产生选举。
跨数据中心的状况:https://www.pdai.tech/md/db/nosql-mongo/mongo-z-rep.html# 跨数据中心
事务
反对多文档事务,在事务提交之前批改对事务外不可见。
数据同步
初始化同步
从正本集中的一节点复制所有数据到另外一个成员。可通过参数 initialSyncSourceReadPreference 指定优先的初始化同步源。同步源抉择:https://docs.mongoing.com/replication/replica-set-data-synchr…
具体过程:
- 克隆出所有除 local 库以外的数据库。
- 依据 oplog,对数据集利用所有的更改
一般复制
在初始化复制实现之后,从节点会再同步源复制 oplog,异步的利用这些操作。也反对多线程并发复制。
本文由 mdnice 多平台公布