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不一致会报错。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
NodeJS连接MongoDB数据库时报错的快速解决方法
今天第一次尝试连接MongoDB数据库,具体步骤也很简单. 首先,通过NodeJS运行环境安装MongoDB包,进入要安装的目录,执行语句 npm install mongodb安装成功后,通过如下语句测试与数据库建立连接几关闭数据库 var mongo = require('mongodb'); var host = "localhost"; var port = mongo.Connection.DEFAULT_PORT; //创建MongoDB数据库所在服务器的Server对象
-
mongodb添加arbiter节点的方法示例
前言 在创建mongodb的replica set的时候,只是做成了1主2从,没有做成1主1从1仲裁.这我们将一个几点从replica set中删除,再以仲裁节点的身份加入到replica set中: 1.初始状态: shard1ReplSet:PRIMARY> rs.status();rs.status(); { "set" : "shard1ReplSet", "date" : ISODate("2017-02-21T07:4
-
centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析
环境描述: 数据库:mongodb3.0.1 数据库系统:centos7,(虚拟机,最小安装) 数据库驱动:mongo-Java-driver-3.0.0.jar 问题描述:shell环境下用mongo客户端程序能正常连接mongod,但java程序始终报错. 查看centos7的官方文档,知道centos7最小安装默认只安装防火墙的动态配置规则服务(firewalld),静态配置规则服务(iptables与ip6tables)需要另行安装. 1.关闭firewall: systemctl st
-
mongodb replica set 添加删除节点的2种方法
一,利用rs.reconfig,来添加,删除节点 1,添加节点 repmore:PRIMARY> config = {_id:"repmore",members:[{_id:0,host:'127.0.0.1:27017',priority :2},{_id:1,host:'127.0.0.1:27018',priority:1}]}; //添加节点 repmore:PRIMARY> rs.reconfig(config); //使配置生效 repmore:PRIMARY&
-
关于mongoose连接mongodb重复访问报错的解决办法
具体代码如下所示: var express = require('express'); var mongoose = require('mongoose'); var router = express.Router(); var Person = mongoose.model('Person',{ id:Number, name:String }); /*新增*/ router.get('/insert', function(req, res){ var student = new Person
-
perl操作MongoDB报错undefined symbol: HeUTF8解决方法
因为shell操作mongo比较麻烦,只好尝试使用perl操作mongo,perl需要操作mongodb必须先安装相应的驱动,大部分人使用cpan安装,个人觉得太麻烦,使用cpanm安装perl模块. 复制代码 代码如下: # cpanm MongoDB --> Working on MongoDB Fetching http://www.cpan.org/authors/id/F/FR/FRIEDO/MongoDB-0.702.1.tar.gz ... OK Configuring Mongo
-
MongoDB添加secondary节点的2种方法详解
前言 前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个MongoDB的优化问题,那段时间MongoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,MongoDB的优化更是一个未知的挑战.当op找到我,核心系统的公共服务平台用来进行短信服务的MongoDB集群想进行一次优化,我当仁不能让的承担了这项我都觉得可能搞不定的任务. 开发找到我提出了两点儿问题,并寻求运维团队解决这个问题,不过最终在我的理性的思考和他感性的思维碰撞下,最终我还是以胜利者的
-
Mongodb增加、移除Arbiter节点实例
增加Arbiter 增加配置文件mongod1,mongod2,mongod3分别为shard1,shard2,shard3三个set集合的arbiter. 复制代码 代码如下: replSet=shard1 replSet=shard2 replSet=shard3 启动mongod实例. 连接Primary. 复制代码 代码如下: rs.addArb("192.168.1.50:10001″) rs.addArb("192.168.1.50:10002″) rs.addArb(&q
-
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:
-
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
本文实例讲述了PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法.分享给大家供大家参考,具体如下: 环境错误级别:error_reporting =E_ALL 某天我在研究一下php下的正则替换函数perg_replace(), 示例: 代码: $subject="2222<b>a</b>2222fff222222222A22222"; $pattern = "/(a)/e&q
-
关于报错IDEA Terminated with exit code 1的解决方法
本人亲测,在使用IDEA使用Maven模板创建项目或者在当前项目中New Project,Maven的以下三个配置参数会重置使用C:\Users\ZSAndroid\.m2的默认maven下载方式. Maven home path(Maven安装路径) User settings file(Maven下载使用的settings.xml) Local repository(Maven本地仓库,settings.xml下载存放资源的目录) 如果在IDEA构建项目时遇到下面这样的报错IDEA Term
-
phpmyadmin报错:#2003 无法登录 MySQL服务器的解决方法
通过phpmyadmin连接mysql数据库时提示:"2003 无法登录 MySQL服务器"...很明显这是没有启动mysql服务,右击我的电脑-管理-找到服务,找到mysql启动一下,,是不是启动有报错: "无法启动mysql服务 错误1067:进程意外中止 " 然后就baidu google吧,多是说禁远程连接,要改my.ini文件,也有说防火墙的,总之对症下药. 不过同样的报错,导致它的原因并不是都是同样的.这就是看自己的经验和对问题的钻研了,好了不多 说了,
-
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
前言 RxJS是一种针对异步数据流编程工具,或者叫响应式扩展编程:可不管如何解释RxJS其目标就是异步编程,Angular引入RxJS为了就是让异步可控.更简单.可是最近在升级中遇到了一些问题,下面就来给大家介绍下,给同样遇到这个问题发朋友们一些参考,下面话不多说了,来一起看看详细的介绍吧. Angular 5.0.5升级RxJS到5.5.3报错: ERROR Error: Uncaught (in promise): EmptyError: no elements in sequence Em
-
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
发现问题 写python的时候出现了这个错,然后网上的教程的解决方案几乎都是--"重新定义下这个变量",看的我一脸懵逼 后来发现原来是我把return None的方法赋给了变量,之后操作变量导致的,直接上代码 for i in range(2000): read_lines = random.shuffle(read_lines) # 问题出在这里了 print(read_lines) 咋一看是没啥问题,但是一运行就报错 >>TypeError: 'NoneType' ob
-
Navicat连接SQL Server数据:报错08001-命名管道提供程序的完美解决方法
新安装了SQL server用Navicat进行连接时出现下面的问题 首先用SQL server自带的GUI用windows认证的方式进入,重新配置了登录名和登录密码分别为CDSS和CDSS,之后直接采用此登录名和登录密码发现还是连不上,后来的解决办法是,把服务重新启动一下. 修改配置登录名后需要重启一下服务?好像有那么点道理,注意是重启服务而不仅仅是重启GUI. mark一下服务列表的打开路径:开始→控制面板→系统和安全→管理工具→服务 还有一个是SQL server配置管理器,打开网络配置,
-
Pycharm报错:'NoneType' object has no attribute 'bytes'的解决方法
目录 问题描述: 解决方案: 附降级命令: 总结 问题描述: 使用指令 python -m pip install --upgrade pip 升级pip时,Pycharm报错:AttributeError: ‘NoneType’ object has no attribute ‘bytes’如图: 解决方案: 输入指令:easy_install -U pip 如图: 附降级命令: python -m pip install --upgrade pip==9.0.3 总结 到此这篇关于Pycha
-
go mode tidy出现报错go: warning: “all“ matched no packages的解决方法
目录 解析 检查 1.本地的go编译器版本 2.go module构建模式未开启 3. 是否在go.mod所在目录执行的go mod tidy 总结 查到的可能原因:1.本地的go编译器版本2. go module构建模式未开启3. 是否在go.mod所在目录执行的go mod tidy 解析 一开始发布的时候 一开始go发布的时候是没有包管理的go get命令会根据路径,把相应的模块获取并保存$GOPATH/src也没有版本的概念,master就代表稳定的版本后来引进了Go Module 在G
-
Vue报错error:0308010C:digital envelope routines::unsupported的解决方法
目录 发现错误 方法1.打开终端(按健win+R弹出窗口,键盘输入cmd,然后敲回车)并按照说明粘贴这些:(不一定行,本人失败了) 方法2.尝试卸载Node.js 17+版本并重新安装Node.js 16+版本,然后再重新启动 总结 发现错误 出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响. 方法1.打开终端(按健win+R弹出窗口,键盘输入cmd,然后敲回车)并按照说明粘
随机推荐
- PHP CURL CURLOPT参数说明(curl_setopt)
- 12款经典的白富美型—jquery图片轮播插件—前端开发必备
- 一个可以显示c盘-z盘的批处理bat文件
- IOS 陀螺仪开发(CoreMotion框架)实例详解
- 编写Smarty插件在模板中直接加载数据的详细介绍
- linux awk高级应用实例
- asp生成带有样式的word文件方法
- CentOS系统下编译安装MySQL以及设置相关yum源的教程
- ASP AJAX 静态分页第1/2页
- jQuery实现仿路边灯箱广告图片轮播效果
- Windows下Memcache的安装方法
- C# 撒列实现关键字过滤的实例
- Java最长公共子序列示例源码
- PHP 函数call_user_func和call_user_func_array用法详解
- C#读写config配置文件的方法
- C语言基础之malloc和free函数详解
- python字典操作实例详解
- PHP实现约瑟夫环问题的方法分析
- JS实现遍历不规则多维数组的方法
- selenium+python自动化测试之使用webdriver操作浏览器的方法