Mongodb集群形式探究-一主一从一仲裁。
主节点(primary)与从节点(secondary)和仲裁节点(arbiter)
具有存储数据的两个成员的三个成员副本集具有:
●一个主节点。
●一个从节点。 从节点可以在选举中成为主节点。
●一个仲裁节点 仲裁节点只在选举中投票。

由于仲裁节点不保存数据副本,因此这种部署只提供一个完整的数据副本(secondary)。 仲裁节点需要更少的资源,牺牲更多有限的冗余和容错能力。
但是,使用主节点,从节点和仲裁及诶单的部署可确保如果主服务器或从服务器不可用,副本集仍将保持可用。
如果主服务器不可用,则副本集将选择从节点服务器为主服务器。

我是通过openstack的trove组件部署出来了一个一主两从组成的一个副本集的集群形式。
通过将其中一个从节点停掉,移出集群,然后将他变为仲裁节点的方式进行测试的,具体方法可以参照:
https://docs.mongodb.com/v3.2/tutorial/convert-secondary-into-arbiter/index.html
需要主要的是,由于trove创建的cluster开启了身份认证,所以在启动的时候需要keyfile来完成仲裁节点与主从节点之间的通信。
命令:
mongod --port 27017 --dbpath /data --replSet rs1 --config /etc/mongod.conf
rs1:SECONDARY> db.isMaster()
{
"hosts" : [
"192.168.111.173:27017",
"192.168.111.174:27017"
],
"arbiters" : [
"192.168.111.172:27017"
],
"setName" : "rs1",
"setVersion" : ,
"ismaster" : false,
"secondary" : true,
"primary" : "192.168.111.173:27017",
"me" : "192.168.111.174:27017",
"maxBsonObjectSize" : ,
"maxMessageSizeBytes" : ,
"maxWriteBatchSize" : ,
"localTime" : ISODate("2017-10-24T09:16:11.858Z"),
"maxWireVersion" : ,
"minWireVersion" : ,
"ok" :
} kill掉主节点上的mongodb进程 rs1:SECONDARY> db.isMaster()
{
"hosts" : [
"192.168.111.173:27017",
"192.168.111.174:27017"
],
"arbiters" : [
"192.168.111.172:27017"
],
"setName" : "rs1",
"setVersion" : ,
"ismaster" : true,
"secondary" : false,
"primary" : "192.168.111.174:27017",
"me" : "192.168.111.174:27017",
"electionId" : ObjectId("7fffffff0000000000000006"),
"maxBsonObjectSize" : ,
"maxMessageSizeBytes" : ,
"maxWriteBatchSize" : ,
"localTime" : ISODate("2017-10-24T09:16:49.220Z"),
"maxWireVersion" : ,
"minWireVersion" : ,
"ok" : ,
"$gleStats" : {
"lastOpTime" : Timestamp(, ),
"electionId" : ObjectId("7fffffff0000000000000006")
}
}
总结:
1.当我们只使用一主一从的方式进行部署的时候,如果主节点down机,从节点不会提升为主节点。
(1):当重启主节点的时候,会发生两种可能性。1.主节点变为从节点,从节点选举为新的主节点。2.主从节点不变(推测这是由于)
2.当在一主一从中加入一个仲裁节点后,
(1):主节点down机,从节点提升为主节点。
(2):从节点重启之后会变为当前主节点的从节点。
Mongodb集群形式探究-一主一从一仲裁。的更多相关文章
- 搭建高可用mongodb集群(一)——配置mongodb
在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...
- MongoDB集群
高可用的MongoDB集群 1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l 面向集合的存储:适合存储 ...
- Mongodb集群【三】
Mongodb常用三种集群 1 主从(Master/Slave) 不推荐,但是mongodb依然保留有.一主多从,不支持链式结构.简单主从,没有裁仲者不能自动恢复. 2 副本集(Relica Set) ...
- 高可用的MongoDB集群
1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l 面向集合的存储:适合存储对象及JSON形式的数据. l ...
- centos7下安装部署mongodb集群(副本集模式)
环境需求:Mongodb集群有三种模式: Replica Set, Sharding,Master-Slaver. 这里部署的是Replica Set模式. 测试环境: 这里副本集(Replica ...
- MongoDB集群运维笔记
前面的文章介绍了MongoDB副本集和分片集群的做法,下面对MongoDB集群的日常维护操作进行小总结: MongDB副本集故障转移功能得益于它的选举机制.选举机制采用了Bully算法,可以很方便从分 ...
- 【转载】高可用的MongoDB集群详解
1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l 面向集合的存储:适合存储对象及JSON形式的数据. l ...
- 搭建高可用mongodb集群(一)——配置mongodb
在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...
- MongoDB集群跨网络、跨集群同步方案
MongoDB集群跨网络.跨集群数据同步有以下几个方案,此处只是简单介绍,不过详细描述. 1.MongoDB自带的复制方案 优点:实施简单,不需要额外的技术栈 缺点:网络双向可连通. 2.CDC同步方 ...
随机推荐
- python 阶乘函数
def num(n): if n == 1: return n return n*num(n-1) print(num(10)) 输出 3628800 该函数使用了递归函数的规则.return 后面为 ...
- 学习 Ansible Playbook,有这篇文章就够了!
https://mp.weixin.qq.com/s?__biz=MzAwNTM5Njk3Mw==&mid=2247487361&idx=1&sn=b50327df2949e4 ...
- linux终端出现"-bash-2.05b$"现象的解决方法
参考:http://blog.chinaunix.net/uid-22823163-id-3295220.html
- swagger获取
参考 https://www.jianshu.com/p/840320d431a1 https://www.cnblogs.com/luoluocaihong/p/7106276.html
- IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示
在使用spring boot开发过程中,经常会定义一些应用自己的属性,直接写到application配置文件中使用@Value注解进行使用,这样使用也没有什么问题.不过我认为更优雅的方式是定义自己的属 ...
- 020、MySQL创建一个存储过程,显示存储过程,调用存储过程,删除存储过程
一.我们创建一个MySQL储存过程,在SQL代码区写入以下内容,并执行就可以了 #编写一个存储过程 CREATE PROCEDURE ShowDate ( ) BEGIN #输出当前时间 SELECT ...
- [题解] LuoguP3768 简单的数学题
Description 传送门 给一个整数\(n\),让你求 \[ \sum\limits_{i=1}^n \sum\limits_{j=1}^n ij\gcd(i,j) \] 对一个大质数\(p\) ...
- java代码静态分析工具
需求:有些基础类型的遍历,值希望它被赋予指定的几个值,赋予其他值能够别编译器(IDEA/eclipse)提醒 Android studu结合自己的插件,引入 <!-- https://mvnre ...
- JSON数组序列化C#方法
/// <summary> /// dataTable转换成Json格式 JSON对应关系 三层数组 /// </summary> /// <param name=&qu ...
- C语言中可变参数的原理——printf()函数
函数原型: int printf(const char *format[,argument]...) 返 回 值: 成功则返回实际输出的字符数,失败返回-1. 函数说明: 使用过C语言的人所再熟悉不过 ...