MongoDB添加仲裁节点报错replica set IDs do not match办法

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

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

在当前主节点上执行

repset:PRIMARY> cfg={_id:"repset", members:[{_id:0, host:‘192.168.10.20:27017‘, priority:1},{_id:2, host:‘192.168.10.21:27017‘, priority:2}, {_id:3, 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不一致会报错。

原文地址:https://www.cnblogs.com/chou1214/p/9961094.html

时间: 2024-11-05 21:37:41

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

动态添加Fragment的报错信息

05-29 21:23:28.406: E/AndroidRuntime(23636): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.***.Main}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent

MYSQL 添加外键报错

2014年6月16日 10:48:51 出错的部分提示摘录: #1452 - Cannot add or update a child row: a foreign key constraint fails result 2 when explaining filename '#sql-3d5_204369' 解决办法: pma 中同时执行两条语句: set foreign_key_checks = 0; ALTER TABLE `table_name` ADD CONSTRAINT `fk_n

github添加ssh key报错Key is invalid. Ensure you've copied the file correctly

github添加ssh key的时候报错:Key is invalid. Ensure you've copied the file correctly 将秘钥复制粘贴到文本编辑器中,再粘贴复制到 github添加ssh key报错Key is invalid. Ensure you've copied the file correctly

mysq添加外键报错:check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=InnoDB' at line 1

今天用navcat往一个表添加外键的时候报错: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=InnoDB' at line 1 排查之后发现是因为两个表的类型不一样所致: SQL:SHOW TABLE STATUS 查询出数据表的状态,Engine那一列就是 使用

cocos2d-x android 添加新场景报错: undefined reference to `vtable for XXX'

转载自 居家懒人 http://www.cnblogs.com/JD85/archive/2012/09/17/2688128.html 加入写了新场景SecondScene,结果在cpp文件里类名地方报错说undefined reference to `vtable for SecondScene', 很简单,貌似是每个新场景都要先注册一下,找到jni-->Classes目录下的Android.mk文件,在 LOCAL_SRC_FILES := AppDelegate.cpp HelloWor

MongoDB replica set IDs do not match

在搭建MongoDB(版本 3.2.9)的Replica Set时,使用 rs.status() 查看Replica Set的状态,发现一个成员异常:replica set IDs do not match,详细信息是: "lastHeartbeatMessage" : "replica set IDs do not match, ours: xxx; remote node's: yyy", "stateStr" : "(not re

linux上项目报错找不到主机名解决办法

项目报错找不到主机名解决办法 有时候我们的项目在本地运行没问题,但部署到linux服务器上就出错了. 报错:java.net.UnknownHostException: 主机名: 主机名  找不到主机名. 解决方法: 修改服务器上/etc/hosts文件 127.0.0.1  localhost  localhost.localdomain 添加所需的主机名称 或者 127.0.0.1  localhost  localhost.localdomain 127.0.0.1  添加所需的主机名称

PHP安装mcrypt.so报错 mcrypt.h not found 的解决办法

报错内容:configure: error: mcrypt.h not found. Please reinstall libmcrypt 网上搜索了很多,包括自带的 yum install libmcrypt libmcrypt-devel,这个是没有效果的. 去SourceForget下载libmcrypt http://sourceforge.net/projects/mcrypt/files/Libmcrypt/ ,最新版是mcrypt 2.6.7.gz.下载下来安装仍旧报错libmcr

[Zend Studio]报错问题,项目无法启动解决办法

今天启动Zend Studio报错了,其实这种事经常发生. 但大多数情况我还是用一种简单粗暴的方法: 方法1.把整个工作区间删除,然后又重新创建每个项目 当然如果这个工作区里面的项目少的话,这么搞没什么.如果多的话挺蛋疼的! 所以建议多设置几个工作区,每个工作区项目数不超过5个!有点跑题了... 方法2.删除下面路径里面的所有.snap文件         C:\Users\xxx用户\Zend\workspaces\xxx工作区\.metadata\.plugins\org.eclipse.c