mongodb副本集的基础概念和各种机制
在mongodb中 创建一个副本集之后就可以使用复制功能了,副本集是一组服务器,其中一个主服务器(primary[ˈpraɪˌmɛri, -məri]),用于处理客户端请求,还有多个备份服务器(secondary[ˈsɛkənˌdɛri]),用于保存主服务器的数据副本,如果主服务器崩溃了,备份服务器会自动将其中成员升级为新的主服务器,副本集中一个很重要的概念就是大多数(majority[məˈdʒɔrɪti, -ˈdʒɑr-]) 选择主节点时需要由大多数决定 主节点只有在得到大多数成员支持时才能继续作为主节点 写操作被复制到大多数成员时这个写操作是安全的,这里的大多数被定义为副本中一半以上的成员,
- 剩余的成员个数少于副本集的一半
- 没有成员有资格成为primary
- 自身是否能够与主节点联通
- 希望被选举为主节点的备份节点的数据是否是最新
- 有没有其他更高优先级的成员可以被选举为主节点
当一个成员无法到达主节点时,他就会申请被选举为主节点,希望成为主节点的成员会他能到达的所有成员发出通知,告诉他们我要发起一轮选举,然后其他成员开始检查你是否具备成为候选人的资格,依据就是上面那三条,如果一条不符,直接取消选举,注意:只要有一人发现候选人不具备资格 选举就被否决了,比如说:可能发起选举分成员 就他自己本身不能连接到主节点.
只要能够得到大多数成员的投票 他就会成为主节点
var config = rs.config();
config.members[2].hidden = 0;
config.members[2].priority = 0;
rs.reconfig(config);
- 确保副本集的成员总能选出一个primary。运行奇数个成员或者运行一个仲裁者(arbiter)+偶数个成员。
- 分布在不同地理位置的成员,知道“群体”的成员在任意网络分区中的情况。试图确保在主数据中心的成员中选举出primary。
- 考虑副本集中包含hidden或者delayed成员用于支持专用功能,如备份、reporting和测试。
- 考虑保留一或者两个位于其他数据中心的成员,同时通过配置确保其不会成为primary。
- 使用replica set tags[tægz]创建定制的写规则以确保应用能够控制写操作成功的门限值。使用写规则确保操作在返回成功之前将操作传递给指定的数据中心或不同功能的机器。
- 集合中有奇数个参与投票的成员。如果有偶数个投票成员,则部署一个仲裁者将个数变为奇数。
- 集合中同一时刻不多于7个参与投票的成员
- 如果不想让某些成员在故障切换时成为primary,则将它们的优先级设为0。
- 集合的多数成员运行在主要的数据中心

.png)
mongodb副本集的基础概念和各种机制的更多相关文章
- MongoDB 副本集的原理、搭建、应用
概念: 在了解了这篇文章之后,可以进行该篇文章的说明和测试.MongoDB 副本集(Replica Set)是有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组 ...
- MongoDB副本集学习(一):概述和环境搭建
MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...
- 创建mongodb副本集操作实例
一:概念 相关概念及图片引用自这里 mongodb副本集: 副本集是一组服务器,其中一个是主服务器,用于处理客户请求:还有多个备份服务器,用于保存主服务器的数据副本.如果主服务器崩溃了,备份服务器自动 ...
- MongoDB副本集功能及节点属性梳理
副本集的主要功能 副本集是MongoDB高可用的基础,其主要作用 归纳为以下几点: (1)高可用,防止设备(服务器.网络)故障.提供自动FailOver功能. (2)无需配置高可用性虚拟节点:无论是S ...
- 分布式文档存储数据库之MongoDB副本集
前文我们聊到了mongodb的索引的相关作用和介绍以及索引的管理,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13950287.html:今天我们来聊下mon ...
- mongodb 副本集之入门篇
作者: 凹凸曼-军军 前言:mongodb 因为高性能.高可用性.支持分片等特性,作为非关系型数据库被大家广泛使用.其高可用性主要是体现在 mongodb 的副本集上面(可以简单理解为一主多从的集群) ...
- MongoDB副本集的实现与维护实战
1.建立MongoDB副本集 现利用一台机器完成MongoDB副本集的建立 机器1:127.0.0.1:27017 机器2:127.0.0.1:27018 机器3:127.0.0.1:27019 在D ...
- MongoDB副本集学习(三):性能和优化相关
Read Preferences/读写分离 有时候为了考虑应用程序的性能或响应性,为了提高读取操作的吞吐率,一个常见的措施就是进行读写分离,MongoDB副本集对读写分离的支持是通过Read Pref ...
- MongoDB副本集学习(二):基本测试与应用
简单副本集测试 这一节主要对上一节搭建的副本集做一些简单的测试. 我们首先进入primary节点(37017),并向test.test集合里插入10W条数据: . rs0:PRIMARY> ;i ...
随机推荐
- linux VIM编辑器常用指令
一般模式 查看文本-移动光标 [Ctrl] + [f] 屏幕『向前』移动一页 [Ctrl] + [b] 屏幕『向后』移动一页 n<space> 按下数字后再按空格键,光标会向右移动这一 ...
- webpack最佳入门实践系列(1)
1.webpack简介 webpack 是一个现代 JavaScript 应用程序的模块打包器(module bundler).它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源 1 ...
- C# 自动注册OCX方法
C#开发系统时,有时候会遇到调用其他语言开发的模块.如果对方提供了OCX时,就需要注册使用,但是实时时,每个客户端都注册一遍就比较麻烦.所以需要系统第一次启动时自动注册OCX. 一:C#注册OCX ...
- PowerDesigner数据模型(CDM—PDM—SQL脚本的转换流程)
原文地址:PowerDesigner数据模型(CDM-PDM-SQL脚本的转换流程)作者:zzenglish 有图片的参考http://blog.sina.com.cn/s/blog_64742675 ...
- why switch kernel mode and user mode expensive
Because that means context switching(save context, restore context)
- Android解析XML之SAX解析器
SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件 ...
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---37
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- Day 29 process&thread_1
进程和线程 1 进程(process): 1.定义: 最小的执行单元.进程就是一个程序在一个数据集上的一次动态执行过程. 进程一般由程序.数据集.进程控制块三部分组成: 我们编写的程序用来描述进程要完 ...
- web项目中引入jquery easyui
jQuery easyui是一个基于jquery的用户界面插件集合,可以做出各种炫酷页面效果,大中型项目都可以使用些框架,非常好用,而且它有中文网,提供了大量的demo.下面我们看怎么将它引入到项目中 ...
- 多线程中sleep和wait的区别
前几天去UC笔试,有一道简答题问到了.之前还真一直没留意到这个问题,所以答得也不好. 无论学习什么都好,通过对比学习更有利于发现事物的共性和个性,对于知识点的理解更有明显效果(这也可能是UC笔试题上, ...