Update MongoDB_复制.md
This commit is contained in:
parent
94eb01fa25
commit
2e2dd49e04
@ -24,7 +24,8 @@
|
||||
|
||||
为保证数据安全,实现高可用,MongoDB 提供了复制功能,可以将主节点上的数据复制到多个从节点上,这样即便主节点异常,由于数据是以多副本的方式存储,仍然可以保证数据安全。一个标准的三节点的副本集的架构如下:
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-复制.png"/> </div></br>
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-复制.png"/> </div>
|
||||
|
||||
#### 1. 初始同步
|
||||
|
||||
在副本集初始化时,主节点的 mongod 进程会扫描当前节点上每个数据库中的每个集合,然后将这些数据发送给从节点,进行初始化的全量复制。
|
||||
@ -43,7 +44,8 @@ MongoDB 按 namespace 或 document id 对每批操作进行分组,并使用不
|
||||
|
||||
虽然仲裁者可以占用更少的服务器资源,但是由于其并不存储数据,所以对数据的安全性并不能起到帮助作用。因此应该尽量避免使用仲裁者,同时尽量保证最多只使用一个仲裁者,即如果节点数量恰好是偶数,则添加一个仲裁者,如果节点数量是奇数,那就不需要仲裁者。
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-仲裁者.png"/> </div></br>
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-仲裁者.png"/> </div>
|
||||
|
||||
## 二、故障发现与恢复
|
||||
|
||||
### 2.1 故障发现
|
||||
@ -56,7 +58,8 @@ MongoDB 的选举算法会尝试让高优先级的节点优先发起选举,从
|
||||
|
||||
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-故障恢复.png"/> </div></br>
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-故障恢复.png"/> </div>
|
||||
|
||||
### 2.3 投票成员
|
||||
|
||||
节点发起选举后,需要具有投票权的节点进行投票,当获得半数以上选票时,该备用节点可以成为新的主节点。对于一个复制集,只有处于以下状态的节点拥有投票权,这些节点统称为投票成员:
|
||||
@ -75,7 +78,8 @@ MongoDB 的选举算法会尝试让高优先级的节点优先发起选举,从
|
||||
|
||||
如下示例是一个 9 个成员的副本集,包含 7 个投票成员和 2 个无投票成员:
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongdb-vote.png"/> </div></br>
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongdb-vote.png"/> </div>
|
||||
|
||||
## 三、搭建副本集
|
||||
|
||||
这里以搭建一个三节点的副本集为例,使用三台服务器,主机名分别为 hadoop001,hadoop002,hadoop003。
|
||||
@ -84,7 +88,8 @@ MongoDB 的选举算法会尝试让高优先级的节点优先发起选举,从
|
||||
|
||||
选择所需版本的 MongoDB 进行下载,下载地址为: https://www.mongodb.com/download-center/community
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-version-select.png"/> </div></br>
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-version-select.png"/> </div>
|
||||
|
||||
这里我下载的版本为 `4.0.10` , 安装环境为 `RHEL 7.0`,下载后进行解压:
|
||||
|
||||
```shell
|
||||
@ -175,8 +180,9 @@ rs.initiate( {
|
||||
|
||||
使用 `rs.status()` 命令查看副本集状态,部分输出如下。从输出中可以看到 hadoop001 为 PRIMARY 节点,而 hadoop002 和 hadoop003 均为 SECONDARY 节点,此时代表副本集已经搭建成功。
|
||||
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-副本集状态.png"/> </div></br>
|
||||
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-副本集状态.png"/> </div>
|
||||
|
||||
## 参考资料
|
||||
|
||||
- 官方文档:https://docs.mongodb.com/manual/replication/
|
||||
- 官方配置说明:https://docs.mongodb.com/manual/reference/configuration-options/
|
||||
- 官方配置说明:https://docs.mongodb.com/manual/reference/configuration-options/
|
||||
|
Loading…
x
Reference in New Issue
Block a user