diff --git a/notes/MongoDB_复制.md b/notes/MongoDB_复制.md index 82fe4fe..de502d5 100644 --- a/notes/MongoDB_复制.md +++ b/notes/MongoDB_复制.md @@ -22,10 +22,12 @@ ### 1.1 复制功能 -为保证数据安全,实现高可用,MongoDB 提供了复制功能,可以将主节点上的数据复制到多个从节点上,这样即便主节点异常,由于数据是以多副本的方式存储,仍然可以保证数据安全。一个标准的三节点的副本集的架构如下: +为保证数据安全,实现高可用,MongoDB 提供了复制功能,可以将主节点上的数据复制到多个从节点上,这样即便主节点出现异常,由于数据是以多副本的方式进行存储,仍然可以保证数据安全。一个标准的三节点副本集架构如下:
+复制过程如下: + #### 1. 初始同步 在副本集初始化时,主节点的 mongod 进程会扫描当前节点上每个数据库中的每个集合,然后将这些数据发送给从节点,进行初始化的全量复制。 @@ -69,7 +71,7 @@ MongoDB 的选举算法会尝试让高优先级的节点优先发起选举,从 - **ARBITER**:ARBITER 状态的成员不复制数据或接受写入操作,仲裁者通常处于这一状态。 - **ROLLBACK**:如果成员正在进行数据回滚,它就处于 ROLLBACK 状态。 -除了投票成员外,那些持有副本集数据的副本,并且可以接受来自客户端应用程序的读取操作,但没有投票权的成员统称为非投票成员。出于网络通讯成本的考虑,MongoDB 的副本集最多有 50 个节点(成员),默认情况下最多可包含7个投票成员。投票成员和非投票成员的要求如下: +除了投票成员外,那些持有副本集数据的副本,并且可以接受来自客户端应用程序的读取操作,但没有投票权的成员统称为非投票成员。出于网络通讯成本的考虑,MongoDB 的副本集最多有 50 个节点(成员),默认情况下最多可包含 7 个投票成员。投票成员和非投票成员的要求如下: + 非投票成员的优先级 `members[n].priority` 必须为 0,优先级为 0 的成员不能寻求选举,也不能成为主节点。 + 优先级大于 0 的节点持有的票数 `members[n].votes` 不能为 0,该参数默认值为 1,可选值为 1 或 0。