mongo replication 脑裂问题如何处理:
一、问题描述:一套mongo replication有4个节点。1个仲裁节点。在停止实例(或实例毁坏)的时候,导致所有节点都变为SECONDARY节点。不管如何重启节点。或者停止到最后一个节点。此时mongo节点都是SECONDARY。
二、出现的现象:
1、如果此时所有节点都重新起来,mongo恢复正常。
2、如果有一个节点起不来。例如只有4个节点起来,mongo复制集的PRIMARY节点则在所有节点之间不稳定的轮流为主。(此时很难去执行rs.remove或rs.add命令)
3、如果4个数据节点有2-3个起不来。此时所有节点都保持为SECONDARY。
 
三、难点:那么如何恢复呢?
问题:抓不住PRIMARY节点,即所有节点都为SECONDARY节点。这时候无法执行rs.remove或rs.add命令rs.add, rs.addArb()。但是mongo的操作要求在主节点上执行。
可以通过rs.reconfig(config,{force:ture}) 强制在从节点删除或者增加节点。
 
四、解决方法:
注意:脑裂过程中设置优先级没用。
1、删除节点至剩下1个或者3个节点,保持3个节点存活(此时mongo能正常选举出PRIMARY 。 ):
config=rs.conf()
config.members=[config.members[0],config.members[2],config.members[3]]
rs.reconfig(config,{force:true})
(注意:"_id" : 4 并不是对应下标。members 对应的是数组的下标。从0开始。)
 
2、如果是删除至于剩下2个数据节点。切2个数据节点都是启动状态,此时PRIMARY已然会在2个节点之间飘浮。但2个节点还算可控,可以通过 rs.addArb("192.168.1.92:29121") 方式在主节点加入仲裁节点。
 
3、强制加入仲裁节点:
config=rs.conf()
config.members=[config.members[0],config.members[1]....(把所有需要加入的节点列出),{_id:5,host:"127.0.0.1:27023",priority:5,arbiterOnly:"true"}]
rs.reconfig(config,{force:true})

mongo复制集脑裂问题如何处理的更多相关文章

  1. Hadoop spark mongo复制集

    启动hadoop cd /usr/local/hadoop/hadoop $hadoop namenode -format # 启动前格式化namenode $./sbin/start-all.sh ...

  2. mongo 复制集命令

    1.登录primary2.use admin >rs.add("new_node:port") 或 rs.add({"_id":4,"host& ...

  3. mongo复制集、分片集(亲测)

    1.1 架构思路: 192.168.50.131              192.168.50.131             192.168.50.132 mongos mongos mongos ...

  4. 单机Mongo复制集安装配置(数据库版本:4.x)

      官方文档: https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/#dep ...

  5. MongoDB复制集搭建(3.4.17版)

    ==版本== mongodb-linux-x86_64-rhel70-3.4.17.tgz ==准备== 3个节点,我这里的IP及hostname分别是: 10.11.2.52 dscn49 10.1 ...

  6. docker添加mongo4.0.3并配置复制集

    1.创建docker 具体略过 自行百度 2.创建数据持久化目录文件(/data/mongo0是个例子 命名随意)  拉取mongo docker pull mongo:4.0.3 3.启动容器 do ...

  7. centos HA高可用集群 heartbeat搭建 heartbeat测试 主上停止heartbeat服务 测试脑裂 两边都禁用ping仲裁 第三十二节课

    centos   HA高可用集群  heartbeat搭建 heartbeat测试  主上停止heartbeat服务  测试脑裂  两边都禁用ping仲裁  第三十二节课 heartbeat是Linu ...

  8. 【Redis集群原理专题】分析一下相关的Redis集群模式下的脑裂问题!

    技术格言 世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程. 什么是脑裂 字面含义 首先,脑裂从字面上理解就是脑袋裂开了,就是思想分家了,就是有了两个山头,就是有了 ...

  9. Redis运维实战之集群中的脑裂

    1.对于分布式Redis主从集群来说,什么是脑裂? 所谓的脑裂,就是指在主从集群中,同时有两个主节点,它们都能接收写请求.而脑裂最直接的影响,就是客户端不知道应该往哪个主节点写入数据,结果就是不同的客 ...

随机推荐

  1. css3 转换 过渡 及动画

    转换transform: 通过 CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸.您可以使用 2D 或 3D 转换来转换您的元素 2D转换属性: transform 向元素应用 2D 或 ...

  2. 慧都启动“正版IDE联合超值推广计划

    越来越多的中国软件企业为盗版所害而蒙受巨大损失,正版化意识逐渐兴起.IDE(集成开发环境)是软件开发.编写代码必备工具,而正版IDE更具有运行更稳定.编码更安全.保障更加完善等特点,逾为中国软件行业企 ...

  3. Android 获取系统时间和网络时间

    有些时候我们的应用中只能使用网络时间,而不能使用系统的时间,这是为了避免用户关闭了使用网络时间的功能后所产生的误差. 直接上代码. 1.清单文件中网络添加权限. <!-- 访问Internet资 ...

  4. 【PIC单片机】MPLAB X IDE快速入门指南

    引言:近期由于项目实践需要,开始动手学习相关硬件知识.从PIC单片机入手. 单片机学习核心要点:查数据手册 配置寄存器 一.基于MPLAB X IDE配置位设置 MPLAB X IDE和MPLAB I ...

  5. 常见HTTP状态200,304,403,404,503

    下面提供 HTTP 状态码的完整列表.您也可以查看 W3C官方HTTP 状态码说明(英文). 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求 ...

  6. SharePoint Server 2010的移动设备配置方案

    随着微软全新一代办公系统Office 2010 的推出,其所支持的移动方案也日渐受到人们的关注,而这些移动功能则是依赖于 SharePoint 2010 的移动性支持.下面就将大家介绍如何设置 Sha ...

  7. Oracle Dataguard 基本原理

    转载-http://blog.sina.com.cn/s/blog_7c5a82970101prcx.html 1.DATAGUARD原理 DATAGUARD是通过建立一个PRIMARY和STANDB ...

  8. linux虚拟机最优测试环境搭建

    目标:创建一个最优的linux虚拟机环境 环境:vmware12.0 系统:centos6.5 (* 以下配置是建立在配置完成基础网络环境后创建的,用static静态IP地址) 1.关闭selinux ...

  9. java--内存管理的几点小技巧

    今天看一本书,书上提到了内存泄露,后面也提到了内存管理的小技巧,在这里记下来,以免以后忘记. 1.尽量使用直接量.比如:String str = "I can play!";而不是 ...

  10. 第二次作业(Git and Github)

       第二次作业(Git and Github) 1.Github项目地址: https://github.com/YanSiJu/JavaWebProject.git 具体介绍详见READ.md 2 ...