MongoDB Replication (复制集成员)

复制集是一组提供信息沉余和高可用的nongo进程

 

复制集成员包括:

primary(主节点):

    主节点负责接收所有的写操作.

 

secondaries(副节点):

    副节点从主节点复制数据, 以维护它们有相同的数据. 副节点可以没有投票权,或者优先级是0

 

在复制集中可以添加Arbiter(仲裁者), Arbiter不进行数据的复制, 但是当primary不可用时, arbiter会参与新primary的选举.

 

复制集的最小推荐配置是三个数据服务成员(一主两副), 你也可以配置成一主一副一仲裁 ,但是最少三个数据服务才能提供更好的信息沉余

 

一个复制集最多有50个成员, 但是参与投票的只有7个

 

 

Primary

主节点是复制集里唯一一个可以接收写操作的成员. MongoDB在主节点上进行写操作, 然后记录主节点的操作记录. 副节点复制这些记录, 然后在自己的数据集上执行这些操作

 

下图是三个成员的副本集, 主节点负责写操作, 副节点复制主节点的oplog, 然后应用到他们的数据集上.

MongoDB Replication (复制集成员)_第1张图片

所有的复制集成员都可以进行读操作. 但是默认情况下程序会在主节点上进行读操作.

 

复制集最多只能有一个主节点, 如果这个主节点变得不可用了, 会通过选举机制推举出一个新的主节点.

 

Secondaries

副节点在自己的异步线程去操作来自主节点的oplog, 应用到自己的数据集, 从而实现复制数据.

 

下图是三个成员的副本集, 主节点负责写操作, 副节点复制主节点的oplog, 然后应用到他们的数据集上.

MongoDB Replication (复制集成员)_第2张图片

尽管不能在副节点上执行写操作, 但是可以执行读操作. 

 

副节点可以变成主节点. 当主节点不可用时, 复制集通过选举从副节点里选取一个作为新的主节点.

 

可以通过一些配置使副节点实现一些特定功能:

    1.阻止它成为主节点, 这样它就可以成为一个数据备份库

    2. Prevent applications from reading from it, which allows it to run applications that require separation from normal traffic.(不理解...)

    3.作为镜像, 可以从一些错误恢复数据,比如误删了表.

 

Arbiter

仲裁者不会复制数据,并且不会成为主节点. 仲裁者会参与主节点的投票. 它通常只有一票, 所有当数据服务是偶数时, 不想添加服务增大开销, 可以增加一个仲裁者.

 

重要提示:

不要在主节点或者副节点的服务器上运行仲裁服务!

你可能感兴趣的:(mongo副本集,MongoDB,Replication,mongo)