* MongoDB复制是将数据同步在多个服务器的过程。
* 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
* 如果当前的主实例失败,会在副本集中选出一个新的主实例
* MongoDB的复制至少需要两个节点
* 其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
* 各个节点常见的搭配方式为:一主一从、一主多从
数据库总是会遇到各种失败的场景,如网络连接断开、断电等。尽管<ins>Journaling 日志功能也提供了数据恢复的功能,但它通常是针对单个节点来说的,只能保证单节点数据的一致性</ins>。而<mark>副本集通常是由多个节点组成,每个节点除了Journaling 日志恢复功能外,整个副本集还具有故障自动转移的功能,这样能保证数据库的高可用性</mark>。
<br/>
在生产环境中一个副本集最少应该包含三个节点,其中有一个必须是主节点,典型的部署结构如图所示。
:-: ![](https://img.kancloud.cn/0c/27/0c2760ae88b7c24bb3143442b4b04c99_475x202.png)
副本集结构图
每个节点都是一个 mongod 进程对应的实例,节点之间互相周期性地通过心跳检查对方的状态。
<br/>
默认情况下 primary 节点负责数据的读写,secondary 节点备份 primary 节点上的数据,但是 arbiter 节点不会从 primary 节点同步数据。从它的名字 arbiter 可以看出,它起到的作用只是当 primary 节点故障时,能够参与到副本集剩下的节点中,选择出一个新的 primary 节点,它自己永远不会变为primary 节点,也不会参与数据的读写。也就是说,数据库的数据会存在 primary和 secondary 节点中,secondary 节点相当于一个备份。
<br/>
当然 secondary 节点可以有多个,当 primary 节点故障时,secondary 节点有可能变为 primary 节点,典型流程如图所示。
:-: ![](https://img.kancloud.cn/9f/1c/9f1c0186f2531206a0045120aff0017e_594x445.png)
故障转移流程图
- MySQL
- MySQL是什么
- MySQL环境搭建
- centos7-MySQL8
- windows-MySQL8
- 数据库软件
- sqlyog软件安装
- navicat软件安装
- powerDesigner软件安装
- RDBMS术语
- SQL语句组成
- 数据库系统组成
- 数据库操作
- 数据表操作
- 查询语句
- 基本语法
- 子查询
- 表连接
- 查询语句执行顺序
- 事务
- 事务是什么
- 事务的作用
- 事务的4个特性
- 事务隔离级别
- 事务的实现
- 索引
- 索引的作用
- 索引操作
- 存储引擎
- 备份与恢复
- 视图
- 视图是什么
- 视图的作用
- 创建视图
- 查看视图
- 更改视图
- DML操作视图
- 删除视图
- 存储过程与函数
- 过程与函数是什么
- 存储过程操作
- 定义存储过程
- 调用存储过程
- 查看存储过程
- 删除存储过程
- 修改存储过程
- 函数操作
- 过程与函数区别
- 流程控制
- if语句
- case语句
- while循环语句
- repeat循环语句
- loop循环语句
- 变量
- 处理程序
- 光标
- Redis
- 简介
- 下载与安装
- 命令操作redis数据库
- 通用命令
- 数据操作
- 持久化
- Windows上的持久化操作
- 数据库设计
- 数据库设计过程
- ER模型图
- MongoDB
- MongoDB是什么?
- MongoDB特性
- MongoDB 数据模型
- 安装MongoDB
- MongoDB认证
- Database操作
- Collection操作
- Document操作
- 插入
- 查询
- 更新
- 删除
- buckWrite
- MongoDB索引
- 副本集
- 聚焦分析
- 事务管理
- 写关注
- 读关注