背景:由于历史原因,某个MongoDB副本集只有一主一从双节点,无法满足自动故障转移要求,需要配置一个仲裁节点。

原有节点192.168.10.20:27017,192.168.10.21:27017,现在准备在20上配置一个新节点27018当做仲裁

在当前主节点上执行

repset:PRIMARY> cfg={_id:"repset", members:[{_id:, host:'192.168.10.20:27017', priority:},{_id:, host:'192.168.10.21:27017', priority:}, {_id:, host:'192.168.10.20:27018', arbiterOnly:true}]};

repset:PRIMARY> rs.reconfig(cfg)

显示配置是成功的,接着用命令查看副本集状态时,发现仲裁节点不可用,报错信息replica set IDs do not match。

repset:PRIMARY> rs.status()

网上的各种文档都是说①查看副本集的名称是否一致 ②把节点上的数据全都删掉。

我在确认副本集配置名称一致后,删除仲裁节点的数据时发现:1、通过客户端是无法删除副本集配置集合;2、删除底层物理文件会导致Mongod进程启动失败。

在仔细回想initiate一次性副本集配置的操作时,发现配置后,只启动了一个客户端。我的猜想是会不会是因为我启动了仲裁节点的客户端,仲裁节点生成了单独的副本集ID。

于是我将仲裁节点的配置文件db、log、Mongodb.conf全都删除,并重新命令启动仲裁节点MongoD进程后,直接在当前Primary节点按之前的操作添加仲裁节点后,发现仲裁节点已正常。

结论:目前只是证实了我的猜想,还没找到官方的说法。

在添加副本集节点的时候,新增的节点在启动服务后,一定不要连接客户端,否则新增节点会生成另外的副本集ID,虽然副本集名称一致,但是IDs不一致会报错。

MongoDB添加仲裁节点报错replica set IDs do not match办法的更多相关文章

  1. 修改mongodb(带仲裁节点的副本集)各机器端口

    需求:因为端口调整,需要改变副本的备份集 1.查看当前的副本集信息 [root@localhost bin]# ./mongo 192.168.1.134:10001 repltest:PRIMARY ...

  2. tidb集群某个节点报错之:node_exporter-9100.service failed

    今天启动集群tidb时出现一个错误,是某个tikv节点报错:node_exporter-9100.service  failed 一个节点的问题会导致整个集群启动失败.去此节点下的日志文件中查找,发现 ...

  3. koa项目用mongoose与mongodb交互,始终报错FormModel is not defined

    koa项目用mongoose与mongodb交互,始终报错FormModel is not defined,就是自己定义的model实例始终不能找到,但是明明定义了,这时候就要看大小写了,当创建一个m ...

  4. windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error

    windows下配置redis集群,启动节点报错:createing server TCP listening socket *:7000:listen:Unknown error 学习了:https ...

  5. MongoDB replica set IDs do not match

    在搭建MongoDB(版本 3.2.9)的Replica Set时,使用 rs.status() 查看Replica Set的状态,发现一个成员异常:replica set IDs do not ma ...

  6. Oracle 12c报错:ORA-01078和LRM-00109的解决办法

    Oracle 12c报错:ORA-01078和LRM-00109的解决办法 2017-12-17 10:25:30 lemon_love1 阅读数 4336  收藏 更多 分类专栏: oracle   ...

  7. docker运行报错docker0: iptables: No chain/target/match by that name.

    转自:https://blog.csdn.net/wohaqiyi/article/details/84450562 docker运行报错docker0: iptables: No chain/tar ...

  8. jenkins添加类ubuntu/centos节点报错

    前言:在jenkins添加ubuntu节点,发现启动代理报错 以下是报错: [SSH] Checking java version of /usr/java/latest/bin/java Could ...

  9. MongoDB添加secondary节点的两种方法

    前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个MongoDB的优化问题,那段时间MongoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,Mong ...

随机推荐

  1. 【Python开发】Python中数据分析环境的搭建

    注:无论是任何一门语言,刚开始入门的时候,语言运行环境的搭建都是一件不轻松的事情. Python的运行环境 要运行或写Python代码,就需要Python的运行环境,主要的Python有以下三类: 原 ...

  2. vue-15-vuex-store的用法

    vue-16-vuex 1, 介绍 对 vue 进行状态管理的, 集中存储所有组件的所有状态, 解决多个组件共享数据的问题. 即, 所有组件可以拿到同样的状态, 组件间共享数据 2, 在之前进行数据交 ...

  3. Java反射,注解,以及动态代理

    Java反射,注解,以及动态代理 基础  最近在准备实习面试,被学长问到了Java反射,注解和动态代理的内容,发现有点自己有点懵,这几天查了很多资料,就来说下自己的理解吧[如有错误,望指正] Java ...

  4. Python和Java编程题(六)

    1.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时, ...

  5. 如何用golang获取linux上文件的访问/创建/修改时间

    在linux上想获取文件的元信息,我们需要使用系统调用lstat或者stat. 在golang的os包里已经把stat封装成了Stat函数,使用它比使用syscall要方便不少. 这是os.Stat的 ...

  6. .NET Core 实践二:事件通知和异步处理

    首先让我们来先看一个例子: 这是一个简单的用户下单购买商品的业务模型,输入端是用户,相关物料有订单和货物,相关的内部服务有业务(订单).财务(支付).仓储(备货)和物流(运输). 从图中我们可以看到, ...

  7. .net 公共基础类

    using WL.Infrastructure.Http; using System; using System.Collections.Generic; using System.IO; using ...

  8. c# 后台分页 jqgrid

    /// <summary> /// 获取设备数量 /// </summary> /// <param name="Organid">单位ID&l ...

  9. PHP定界符eof 的使用

    PHP是一个Web编程语言,在编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,如果用传统的输出方法 ——按字符串输出的话, 肯定要有大量的转义符来对字符串中的引号等 ...

  10. 【Java每日一题】20170321

    20170320问题解析请点击今日问题下方的“[Java每日一题]20170321”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...