MongoDB 官方文档笔记之复制 Replication
副本集 Replica Set
一组维护相同数据的 mongod 进程,副本集提供了冗余和高可用。
一个主节点 Primary,接收所有写操作
多个从节点 Secondary,接受所有读操作
一个仲裁节点 Arbiter,不持有数据,只在选举时投票
建议最少配置一主两从三成员副本集,但假如只有一主一从两个节点,则可以加入一个仲裁节点。仲裁节点参与选举,但不持有数据。
副本集中最多 50 个成员,但仅能有 7 个可投票成员。
副本集中的主从节点
主节点会将所有写操作记录到日志中,即 oplog,从节点复制主节点的 oplog,并将这些操作应用在从节点上。主节点挂掉之后,从节点会通过选举产生新的主节点。
主从节点关系:
从节点间关系:
仲裁节点:
专门为投票存在的,一个仲裁节点一票。
副本集中的日志 Oplog
主节点上的更新日志 oplog,会异步同步给从节点。
日志大小
启动时可指定日志大小,如未指定则采用默认配置大小。
https://docs.mongoing.com/replication/replica-set-oplog#ri-zhi-da-xiao
慢日志
oplog 中执行较慢的操作,会被记录到诊断日志中,类似 MySQL 的慢日志
复制延迟
复制延迟是指将写操作从主节点拷贝到从节点上的过程。
故障转移
如果主节点与集群中其他节点通信超时,超过 electionTimeoutMillis 配置的时间,从节点会发生选举。
跨数据中心的情况:https://www.pdai.tech/md/db/nosql-mongo/mongo-z-rep.html#跨数据中心
事务
支持多文档事务,在事务提交之前修改对事务外不可见。
数据同步
初始化同步
从副本集中的一节点复制所有数据到另外一个成员。可通过参数 initialSyncSourceReadPreference 指定优先的初始化同步源。同步源选择:https://docs.mongoing.com/replication/replica-set-data-synchronization#chu-shi-hua-tong-bu-yuan-de-xuan-ze
具体过程:
克隆出所有除 local 库以外的数据库。
根据 oplog,对数据集应用所有的更改
普通复制
在初始化复制完成之后,从节点会再同步源复制 oplog,异步的应用这些操作。也支持多线程并发复制。
评论