写点什么

MongoDB 官方文档笔记之复制 Replication

作者:菜皮日记
  • 2023-09-09
    北京
  • 本文字数:793 字

    阅读完需:约 3 分钟

副本集 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

具体过程:

  1. 克隆出所有除 local 库以外的数据库。

  2. 根据 oplog,对数据集应用所有的更改

普通复制

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

用户头像

菜皮日记

关注

全干程序员 2018-08-08 加入

还未添加个人简介

评论

发布
暂无评论
MongoDB 官方文档笔记之复制 Replication_mongodb_菜皮日记_InfoQ写作社区