MongoDB 复制集(二) 选举 自动故障切换
一 复制集的高可用性简介
选举的发生:当主节点不可用的时候;复制集初始化(initiating)的时候.
Priority Comparisons
)
不会被投票
。
如果有一个更高优先级的成员加入且其操作日志所记录最新操作时间和当前主节点记录的时间相差小于10秒的时候,这时就会进行选举,给高优先级节点提供一个成为主节点的
机会。
Optime)
Connections)
Network Partitions
)
大多数
从节点又不能连通的话,复制集就无法进行选举。所以尽量将大部分复制集成员放到一个数据中心中,而将一小部分放到另外一个。
1.心跳检测
而当X节点的映射表发生了变化,那X会进行下面的逻辑判断:如果X是 primary,而另外一个节点出现故障,那么它会确认自己是否还能和集群中大多数节点进行通信,如果不能与大多数节点通信,那么他会把自己从 primary 降级为 secondary。(注意:在replica sets中,primary 必须能够和集群中的大多数节点进行通信,以免发生网络断开形成两个或多个节点群各自为政的情况,这样会影响到数据的一致性。)
我们回头再来看心跳监测请求:如果X是一个 secondary,那么X会定时检测是否需要选举自己成为 primary,即使自己的状态映射表没有发生改变。其检测内容包括:是否集群中有其它节点认为自己是 primary?X节点自己是否已经是 primary?X节点自己是否有资格成为 primary?如果这三个问题中的任何一个回答是否定的,那么X节点就不会试图把自己变成primary。(也就是说,只有当X节点是一个能够当 primary 的secondary,并且其它节点都不是primary时,X才会发起选举并选自己为primary)
如果X收到”停止选举!“的返回,那么他会马上停止选举并保持自己为 sencondary 状态。
下面我们假设一种情况,如果Y给X投了赞成票,而Z给X投了反对票。那这时候Y由于投了赞成票,它在30秒内不能再进行投票。所以如果这时候Z发起选举想让自己成为 primary,那么Z这时候必须要获得X的赞成票。因为这时候Y不能投票,为了获取多数票,Z必须获得X的赞成票。
所以投票的规则是这样的:如果没有人投反对票,并且赞成票的比例过半,那么本轮选举对象就能够成为 primary。
MongoDB 复制集(二) 选举 自动故障切换的更多相关文章
- mongodb 复制集
mongodb 复制集 复制集简介 Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写 ...
- MongoDB复制集高可用选举机制(三)
复制集高可用选举机制 在上一章介绍了MongoDB的架构,复制集的架构直接影响着故障切换时的结果.为了能够有效的故障切换,请确保至少有一个节点能够顺利升职为主节点.保证在拥有核心业务系统的数据中心中拥 ...
- MongoDB复制集的工作原理介绍(二)
复制集工作原理 1)数据复制原理 开启复制集后,主节点会在 local 库下生成一个集合叫 oplog.rs,这是一个有限集合,也就是大小是固定的.其中记录的是整个mongod实例一段时间内数据库的所 ...
- MongoDB 复制集 (一) 成员介绍
一 MongoDB 复制集简介 MongoDB的复制机制主要分为两种: Master-Slave (主从复制) 这个已经不建议使用 ...
- MongoDB复制集原理、环境配置及基本测试详解
一.MongoDB复制集概述 MongoDB复制集实现了冗余备份和故障转移两大功能,这样能保证数据库的高可用性.在生产环境,复制集至少包括三个节点,其中一个必须为主节点,一个从节点,一个仲裁节点.其中 ...
- MongoDB复制集原理
版权声明:本文由孔德雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/136 来源:腾云阁 https://www.qclo ...
- MongoDB 复制集节点增加移除及节点属性配置
复制集(replica Set)或者副本集是MongoDB的核心高可用特性之一,它基于主节点的oplog日志持续传送到辅助节点,并重放得以实现主从节点一致.再结合心跳机制,当感知到主节点不可访问或宕机 ...
- MongoDB复制集成员及架构介绍(一)
MongoDB复制集介绍 MongoDB支持在多个机器中通过异步复制达到提供了冗余,增加了数据的可用性.MongoDB有两种类型的复制,第一种是同于MySQL的主从复制模式(MongoDB已不再推荐此 ...
- MongoDB复制集概念架构浅析
一.复制集的作用 (1) 高可用 防止设备(服务器.网络)故障. 提供自动failover 功能. 技术来保证数 (2) 灾难恢复 当发生故障时,可以从其他节点恢复. (3) 功能隔离 用于分析.报表 ...
随机推荐
- c++11的for新用法 (重新练习一下for_each)
看到手册的代码里面有个for的很奇怪的用法,用了一把 http://www.cplusplus.com/reference/unordered_set/unordered_set/insert/ ...
- armv7a-mediatek451_001_vfp-linux-gnueabi-gcc: directory: No such file or directory 编译error
release/vm_linux/output/hisense_android/mt5399_cn_android_JB/rel/obj/oss/source/arm_mali_ko/mali400- ...
- MINA源码阅读之ACP
Processor在XXAcceptor以及XXConnector中所扮演的只能就是:作为Acceptor以及Connetor所创建的Session的Processor: IoAcceptor作为他所 ...
- SDWebImage 清除缓存
1.找到SDImageCache类 2.添加如下方法: - (float)checkTmpSize { float totalSize = 0; NSDirectoryEnumerator *file ...
- KVO - 键值观察
[基本概念] 键值观察是一种使对象获取其他对象的特定属性变化的通知机制.控制器层的绑定技术就是严重依赖键值观察获得模型层和控制器层的变化通知的.对于不依赖控制器层类的应用程序,键值观察提供了一种简化的 ...
- javascript第二遍基础学习笔记(一)
1.兼容xhtml方法: <script> //<![CDATA[ ... ... //]]> </script> 2.文档模式: IE5.5引入,最初包含2种:混 ...
- css实现网页布局随滚轮变化响应移动
_position:absolute; _top:expression(eval(document.documentElement.scrollTop)); 1.第一句代码 _position:abs ...
- matlab学习笔记(一)单元数组
matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x) :取最大的整数 ceil(3.18)=4,ceil( ...
- 关于MATLAB中的tic toc的问题
关于MATLAB中的tic toc的问题 其一) MATLAB实际单位时间计时函数的具体应用,在编写程序时,经常需要获知代码的执行实际时间,这就需要在程序中用到计时函数,matlab中提供了以下三种方 ...
- Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderListener(Maven工程)
Eclipse中tomcat部署工程启动后报错: 严重: Error configuring application listener of class org.springframework.web ...