1. 如何设计副本集

大多数:选取主节点时需要由大多数决定,主节点只有在得到大多数支持时才能继续作为主节点,写操作被复制到大多数成员时就是安全的写操作。这里的大多数定义为“副本集中一半以上的成员”,由此可看一般设置为奇数,如3个节点

2. 如何进行选举

MongoDB在3.2版本中引入了第一版复制协议。基于RAFT共识协议,并且包含一些特定于MongoDB的副本集概念,比如仲裁节点、优先级、非选举成员、写入关注点等。它还通过term ID来防止重复投票。

副本集成员间每隔两秒发送一次心跳(ping),如果某个成员10秒内没有反馈心跳,则其他成员将不良成员标记为无法访问。选举算法尽最大努力尝试让最高优先权的从节点发起选举,也更可能成为主节点。

3. 成员配置选项
3.1 优先级

priority优先级为0的成员永远不能成为主节点。这样的成员被称为被动成员。

study:PRIMARY> rs.add({'host': 'localhost:27018', 'priority': 1.5})
// 停掉主节点,然后查看新选取的主节点,可以看到localhost:27018已为主节点
3.2 隐藏成员
study:PRIMARY> rs.isMaster()
{
"hosts" : [
"localhost:27019",
"localhost:27020",
"localhost:27021",
"localhost:27018"
]
}
study:PRIMARY> var config = rs.config()
study:PRIMARY> config.members[2].hidden=true
true
study:PRIMARY> config.members[2].priority=0
0
study:PRIMARY> rs.reconfig(config)
{
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1657435250, 2),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
},
"operationTime" : Timestamp(1657435250, 2)
}
# 再次执行可以看到localhost:27021已隐藏
study:PRIMARY> rs.isMaster()
{
"hosts" : [
"localhost:27019",
"localhost:27020",
"localhost:27018"
]
}

使用rs.status()和rs.config()能够看到隐藏成员,隐藏成员对isMaster()不可见。当客户端连接到副本集时,会调用isMaster来查看副本集中的成员。因此,隐藏成员永远不会收到客户端的读请求

3.3 选举仲裁者
mongod --replSet study --dbpath /home/data/arb --port 27022 --oplogSize 200
study:PRIMARY> rs.addArb('localhost:27022')

成员一旦已仲裁者身份被添加到副本集,它就永远只能是仲裁者,无法将仲裁者重新配置为非仲裁者

  • 最多只能使用使用一个仲裁者 如果节点数量为奇数,那就不需要仲裁者
  • 如果数据集有两个普通成员与一个仲裁者,如果一个数据成员停止运行了(数据无法恢复),呢么就需要一个新的从节点,呢么主节点的数据副本复制到新的从节点服务器压力会很大。仲裁者毕竟不存储数据副本,只仲裁~~
3.4 创建索引

如果从节点仅仅备份数据或脱机批量处理作业,则可以指定buildIndexes: false,此选项防止从节点创建任何索引。这也是永久性设置,不可重新配置为普通的创建索引的成员,同样要求优先级为0

欢迎关注公众号算法小生沈健的技术博客

9.MongoDB系列之创建副本集(二)的更多相关文章

  1. 8.MongoDB系列之创建副本集(一)

    1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...

  2. Mongodb 笔记05 创建副本集

    创建副本集 1. 副本集:副本集时一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多个备份服务器(secondary),用于保存主服务器的数据副本.如果主服务器崩溃了,备份服 ...

  3. mongodb 系列 ~ mongo的副本集(3)

    一 简介:今天咱们来聊聊mongodb复制的具体一些案例 二 副本集 1 当mongodb采用全量复制时,如何观察全量复制的进度 对比文件本身和primary大小 2 mongodb全量复制的过程 旧 ...

  4. mongodb 系列 ~ mongo的副本集(2)

    一 简介:来试试更改副本集的oplog问题二 背景: oplog的作用类似于mysql的binlog,传递增量操作到从节点 三 oplog介绍   1 oplog在local库:      1 mas ...

  5. MongoDB系列之三(副本集配置)

    今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...

  6. 11.MongoDB系列之连接副本集

    1. Python连接副本集 from pymongo import MongoClient from bson.codec_options import CodecOptions from retr ...

  7. mongodb创建副本集命令

    mongodb创建副本集命令 ./mongod --replSet spock --dbpath ../data --smallfiles > config ={... "_id&qu ...

  8. MongoDB 带访问控制的副本集部署

    当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4  Centos6.5  一. 下载安装 MongoDB Server 及 ...

  9. MongoDB 删除,添加副本集,并修改副本集IP等信息

    MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...

随机推荐

  1. 浩若烟海事半功倍|利用Docker容器技术构建自动化分布式web测试集群Selenium Grid

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_195 "世界上有那么多城市,城市里有那么多的酒馆,可她,却偏偏走进了我的-",这是电影<卡萨布拉卡> ...

  2. 使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_130 之前一篇文章是通过普通js+tornado来上传七牛云:使用Tornado配合七牛云存储api来异步切分上传文件,本次使用v ...

  3. Redis-浅谈主从同步

    主从库集群 Redis 提供了主从库模式,以保证数据副本的一致,在从库执行一下命令可以建立主从库关系: replicaof <dst ip> <dst port> Redis ...

  4. Luogu3694 邦邦的大合唱站队 (状压DP)

    状态由\(从前往后排好的长度\)和\(排好的团队\)决定,\(DP\)方程挺有思考价值的. #include <iostream> #include <cstdio> #inc ...

  5. BZOJ3572/Luogu3233 [Hnoi2014]世界树 (虚树) (Unfinished)

    我太弱了,这叼题先搁着把,来日方长,自有切时... ...或许吧 #include <iostream> #include <cstdio> #include <cstr ...

  6. 自动化选课(Python + selenium

    ​ 前几天听到朋友说自己选课事情,突发奇想想要搞这样一个东西,但是由于各种原因只做到以下的完成度,具体的情况也会在解释的最后留下.这个只适用于曲师大的教务系统,因为用的这个系统来进行的一个调试,对于其 ...

  7. 【UML分析、建模与设计】我在工作时遇到UML

    一.前言 UML分析.建模与设计 来自现实世界中的概念的抽象描述方法(摘取自<UML面向对象分析.建模与设计(第2版)>) 就我对UML分析与建模技术的认知,最早可追溯至2019年时的学习 ...

  8. KingbaseES启动数据库失败后如何分析

    关键字: KingbaseES.sys_ctl.启动日志 一.KingbaseES数据库服务启动 1.1 数据库启动机制 1) 数据库通过sys_ctl工具手工启动数据库服务kingbase. 2) ...

  9. AXI MCDMA 仿真与工作流程分析

    说明 关于背景知识,可以先看 https://www.cnblogs.com/xingce/p/16386108.html 引用一段官方的说明,AXI MCDMA存在的主要目的是为了节约资源,我们想要 ...

  10. The 19th Zhejiang Provincial Collegiate Programming Contest

    目录 A.JB Loves Math B.JB Loves Comma C. JB Wants to Earn Big Money G. Easy Glide I. Barbecue L. Candy ...