MongoDB 官方文档笔记之复制 Replication

副本集 Replica Set

一组维护相同数据的 mongod 进程,副本集提供了冗余和高可用。

一个主节点 Primary,接收所有写操作

多个从节点 Secondary,接受所有读操作

一个仲裁节点 Arbiter,不持有数据,只在选举时投票

建议最少配置一主两从三成员副本集,但假如只有一主一从两个节点,则可以加入一个仲裁节点。仲裁节点参与选举,但不持有数据。

副本集中最多 50 个成员,但仅能有7个可投票成员。

副本集中的主从节点

主节点会将所有写操作记录到日志中,即 oplog,从节点复制主节点的 oplog,并将这些操作应用在从节点上。主节点挂掉之后,从节点会通过选举产生新的主节点。

主从节点关系:

MongoDB 官方文档笔记之复制 Replication_第1张图片

从节点间关系:

MongoDB 官方文档笔记之复制 Replication_第2张图片

仲裁节点:

专门为投票存在的,一个仲裁节点一票。

MongoDB 官方文档笔记之复制 Replication_第3张图片

副本集中的日志 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...

具体过程:

  1. 克隆出所有除 local 库以外的数据库。
  2. 根据 oplog,对数据集应用所有的更改

普通复制

在初始化复制完成之后,从节点会再同步源复制 oplog,异步的应用这些操作。也支持多线程并发复制。

本文由mdnice多平台发布

你可能感兴趣的:(后端)