From 7f2d0812de5d8ed8b45c8f3c51445bcceb92b5d0 Mon Sep 17 00:00:00 2001
From: heibaiying <2806718453@qq.com>
Date: Fri, 19 Jul 2019 17:57:35 +0800
Subject: [PATCH] =?UTF-8?q?mongodb=E5=89=AF=E6=9C=AC=E9=9B=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
notes/MongoDB_复制.md | 66 ++++++++++++++++++++++++++++++
notes/MongoDB_复制集.md | 0
pictures/mongdb-vote.png | Bin 0 -> 20100 bytes
pictures/mongodb-仲裁者.png | Bin 0 -> 23789 bytes
pictures/mongodb-复制.png | Bin 0 -> 27739 bytes
pictures/mongodb-故障恢复.png | Bin 0 -> 30736 bytes
6 files changed, 66 insertions(+)
create mode 100644 notes/MongoDB_复制.md
delete mode 100644 notes/MongoDB_复制集.md
create mode 100644 pictures/mongdb-vote.png
create mode 100644 pictures/mongodb-仲裁者.png
create mode 100644 pictures/mongodb-复制.png
create mode 100644 pictures/mongodb-故障恢复.png
diff --git a/notes/MongoDB_复制.md b/notes/MongoDB_复制.md
new file mode 100644
index 0000000..cec1865
--- /dev/null
+++ b/notes/MongoDB_复制.md
@@ -0,0 +1,66 @@
+# MongoDB Replication
+
+## 一、副本集
+
+### 1.1 复制功能
+
+为保证数据安全,实现高可用,MongoDB 提供了复制功能,可以将主节点上的数据复制到多个从节点上,这样即便主节点异常,由于数据是以多副本的方式存储,仍然可以保证数据安全。一个标准的三节点的副本集的架构如下:
+
+
+
+#### 1. 初始同步
+
+在副本集初始化时,主节点的 mongod 进程会扫描当前节点上每个数据库中的每个集合,然后将这些数据发送给从节点,进行初始化的全量复制。
+
+#### 2. 同步复制
+
+从节点在初始化完成后,不断同步地复制主节点的 oplog 数据。oplog (操作日志) 是一个特殊的集合,它存储了数据库中所有数据的操作记录。oplog 中的每个操作都具有幂等性,即每个操作对目标数据集无论是应用一次还是多次,都会产生相同的结果。
+
+#### 3. 异步执行
+
+MongoDB 按 namespace 或 document id 对每批操作进行分组,并使用不同的线程应用每组操作,同时 MongoDB 会严格按照原始写入顺序将写入操作应用于从节点上的文档。
+
+### 1.2 仲裁者
+
+除了可以将正常的 mongod 实例添加到副本集外, 还可以将额外的 mongod 实例添加到副本集作为仲裁者。仲裁者不承担数据的读写操作,它只用于响应选举请求并参与仲裁。因为它不存储数据,所以可以占用更少的服务器资源,如果你的副本集具有偶数个成员,可以通过添加仲裁者来保证有效选举。
+
+虽然仲裁者可以占用更少的服务器资源,但是由于其并不存储数据,所以对数据的安全性并不能起到帮助作用。因此应该尽量避免使用仲裁者,同时尽量保证最多只使用一个仲裁者,即如果节点数量恰好是偶数,则添加一个仲裁者,如果节点数量是奇数,那就不需要仲裁者。
+
+
+
+## 二、故障发现与恢复
+
+### 2.1 故障发现
+
+副本集的每个节点之间会维持着两秒一次的心跳检测,当从节点与主节点的通信时间超过配置的 electionTimeoutMillis 时间 (默认为10秒) 时,则认为该主节点出现故障,此时副本集会进行新的主节点选举。
+
+### 2.2 优先选举
+
+MongoDB 的选举算法会尝试让高优先级的节点优先发起选举,从而更容易在选举中胜出。如果某一个优先级较低的节点在短时间内被选举为新的主节点,这时副本集仍然会继续发起选举,直至可用的最高优先级的节点成为新的主节点。需要特别注意的是在这个过程当中,优先级为 0 的成员不能寻求选举,也不能成为主节点。
+
+
+
+
+
+### 2.3 投票成员
+
+节点发起选举后,需要具有投票权的节点进行投票,当获得半数以上选票时,该备用节点可以成为新的主节点。对于一个复制集,只有处于以下状态的节点拥有投票权,这些节点统称为投票成员:
+
+- **PRIMARY**:副本集的主节点。
+- **SECONDARY**:处于复制状态的从节点。
+- **STARTUP2**:mongod 完成配置加载后,副本集的每个成员都进入 STARTUP2 状态,此时它成为副本集的活动成员并且有资格投票。然后该成员决定是否进行初始同步。如果成员开始初始同步,则成员将保留在 STARTUP2 状态,直到所有数据复制完成并构建好索引。之后成员过渡到RECOVERING。
+- **RECOVERING**:当副本集的成员尚未准备好接受读取操作时,它将进入 RECOVERING 状态。处于恢复状态的成员有资格在选举中投票,但没有资格成为主节点。
+- **ARBITER**:ARBITER 状态的成员不复制数据或接受写入操作,仲裁者通常处于这一状态。
+- **ROLLBACK**:如果成员正在进行数据回滚,它就处于 ROLLBACK 状态。
+
+除了投票成员外,那些持有副本集数据的副本,并且可以接受来自客户端应用程序的读取操作,但没有投票权的成员统称为非投票成员。出于网络通讯成本的考虑,MongoDB 的副本集最多有 50 个节点(成员),默认情况下最多可包含7个投票成员。投票成员和非投票成员的要求如下:
+
++ 非投票成员的优先级 `members[n].priority` 必须为 0,优先级为 0 的成员不能寻求选举,也不能成为主节点。
++ 优先级大于 0 的节点持有的票数 `members[n].votes` 不能为 0,该参数默认值为 1,可选值为 1 或 0。
+
+如下示例是一个 9 个成员的副本集,包含 7 个投票成员和 2 个无投票成员:
+
+
+
+## 三、搭建副本集
+
diff --git a/notes/MongoDB_复制集.md b/notes/MongoDB_复制集.md
deleted file mode 100644
index e69de29..0000000
diff --git a/pictures/mongdb-vote.png b/pictures/mongdb-vote.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f52681a0a7d55a3be4d9a41ac29f8f312d6c99e
GIT binary patch
literal 20100
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
T)ag1eL0UXr{an^LB{Ts5h$3`U
literal 0
HcmV?d00001
diff --git a/pictures/mongodb-仲裁者.png b/pictures/mongodb-仲裁者.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1bcfeb74f7d35fd934c4a6eb103da41ddd33188
GIT binary patch
literal 23789
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
literal 0
HcmV?d00001
diff --git a/pictures/mongodb-复制.png b/pictures/mongodb-复制.png
new file mode 100644
index 0000000000000000000000000000000000000000..31d7c9264ea05492a32a3e4c24d046ffce3ea7ca
GIT binary patch
literal 27739
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