格式转换

This commit is contained in:
heibaiying
2019-07-22 09:04:56 +08:00
parent c9ad32cb87
commit bf02c5eea0
2 changed files with 54 additions and 37 deletions

View File

@@ -1,13 +1,30 @@
# MongoDB Replication
<nav>
<a href="#一副本集">一、副本集</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#11-复制功能">1.1 复制功能</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#12-仲裁者">1.2 仲裁者</a><br/>
<a href="#二故障发现与恢复">二、故障发现与恢复</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#21-故障发现">2.1 故障发现</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#22-优先选举">2.2 优先选举</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#23-投票成员">2.3 投票成员</a><br/>
<a href="#三搭建副本集">三、搭建副本集</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#31-下载并解压">3.1 下载并解压</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#32-配置环境变量">3.2 配置环境变量</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#33-修改配置">3.3 修改配置</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#34-启动服务">3.4 启动服务</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#35-配置副本集">3.5 配置副本集</a><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#36-查看副本集情况">3.6 查看副本集情况</a><br/>
</nav>
## 一、副本集
### 1.1 复制功能
为保证数据安全实现高可用MongoDB 提供了复制功能,可以将主节点上的数据复制到多个从节点上,这样即便主节点异常,由于数据是以多副本的方式存储,仍然可以保证数据安全。一个标准的三节点的副本集的架构如下:
![mongodb-复制](D:\Full-Stack-Notes\pictures\mongodb-复制.png)
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-复制.png"/> </div></br>
#### 1. 初始同步
在副本集初始化时,主节点的 mongod 进程会扫描当前节点上每个数据库中的每个集合,然后将这些数据发送给从节点,进行初始化的全量复制。
@@ -26,8 +43,7 @@ MongoDB 按 namespace 或 document id 对每批操作进行分组,并使用不
虽然仲裁者可以占用更少的服务器资源,但是由于其并不存储数据,所以对数据的安全性并不能起到帮助作用。因此应该尽量避免使用仲裁者,同时尽量保证最多只使用一个仲裁者,即如果节点数量恰好是偶数,则添加一个仲裁者,如果节点数量是奇数,那就不需要仲裁者。
![mongodb-仲裁者](D:\Full-Stack-Notes\pictures\mongodb-仲裁者.png)
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-仲裁者.png"/> </div></br>
## 二、故障发现与恢复
### 2.1 故障发现
@@ -40,8 +56,7 @@ MongoDB 的选举算法会尝试让高优先级的节点优先发起选举,从
![mongodb-故障恢复](D:\Full-Stack-Notes\pictures\mongodb-故障恢复.png)
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-故障恢复.png"/> </div></br>
### 2.3 投票成员
节点发起选举后,需要具有投票权的节点进行投票,当获得半数以上选票时,该备用节点可以成为新的主节点。对于一个复制集,只有处于以下状态的节点拥有投票权,这些节点统称为投票成员:
@@ -60,8 +75,7 @@ MongoDB 的选举算法会尝试让高优先级的节点优先发起选举,从
如下示例是一个 9 个成员的副本集,包含 7 个投票成员和 2 个无投票成员:
![mongdb-vote](D:\Full-Stack-Notes\pictures\mongdb-vote.png)
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongdb-vote.png"/> </div></br>
## 三、搭建副本集
这里以搭建一个三节点的副本集为例,使用三台服务器,主机名分别为 hadoop001hadoop002hadoop003。
@@ -70,7 +84,7 @@ 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>
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-version-select.png"/> </div></br>
这里我下载的版本为 `4.0.10` , 安装环境为 `RHEL 7.0`,下载后进行解压:
```shell
@@ -96,7 +110,7 @@ export PATH=${MONGODB_HOME}/bin:$PATH
source /etc/profile
```
### 三、修改配置
### 3.3 修改配置
MongoDB 默认存放数据的目录为 `/var/lib/mongo` ,默认存放日志的目录为 `/var/log/mongodb`,采用 TGZ 安装包进行安装时,程序不会自动创建这两个目录,需要预先手动创建。同时由于 `/var/` 下只能存放临时文件,所以这里我们使用其他目录进行存储,命令如下:
@@ -134,7 +148,7 @@ replication:
> MongoDB 的所有配置项可以参考其官方文档:[Configuration File Options](https://docs.mongodb.com/manual/reference/configuration-options/)
### 四、启动服务
### 3.4 启动服务
以上配置步骤在三台主机上均相同。之后启动三台主机上的 mongod 服务,命令如下:
@@ -142,7 +156,7 @@ replication:
mongod -f /etc/mongod.conf
```
### 五、配置副本集
### 3.5 配置副本集
在任意一台主机上使用 mongo shell 连接到本地服务,之后直接使用以下命令配置副本集:
@@ -157,14 +171,11 @@ rs.initiate( {
})
```
### 六、查看副本集情况
### 3.6 查看副本集情况
使用 `rs.status()` 命令查看副本集状态,部分输出如下。从输出中可以看到 hadoop001 为 PRIMARY 节点,而 hadoop002 和 hadoop003 均为 SECONDARY 节点,此时代表副本集已经搭建成功。
![mongodb-副本集状态](D:\Full-Stack-Notes\pictures\mongodb-副本集状态.png)
<div align="center"> <img src="https://github.com/heibaiying/Full-Stack-Notes/blob/master/pictures/mongodb-副本集状态.png"/> </div></br>
## 参考资料
- 官方文档https://docs.mongodb.com/manual/replication/