mongodb副本集中其中一个节点宕机无法重启的问题
2-8日我还在家中的时候,被告知mongodb副本集中其中一个从节点因未知原因宕机,然后暂时负责代管的同事无论如何就是启动不起来。
当时mongodb的日志信息是这样的:
实际上这里这么长一串最重要的信息应该是在后边几行:
2017-02-08T17:10:28.754+0800 I REPL [rsBackgroundSync] replSet our last op time fetched: Feb 8 17:08:52:212
2017-02-08T17:10:28.754+0800 I REPL [rsBackgroundSync] replset source's GTE: Feb 8 17:09:16:1
2017-02-08T17:10:29.696+0800 F REPL [rsBackgroundSync] replSet need to rollback, but in inconsistent state
据我的理解,这里大概的意思是指明了副本集节点最后的正常时间,说现在启动这个节点需要回滚,但是回滚的时候存在矛盾冲突,然后无法正常启动。
当时我正有事忙着,电脑又不在手边上,仅凭这几行提示我也无法确定究竟是什么原因,又想到一台从节点暂时宕机对整个系统没有太大影响,于是就让他先看了一下机器内存,结果发现内存实在低的不像话,才三四十兆。
但是这台机只有一个程序在运行,就是mongodb数据库,数据库没运行的情况下内存这样低绝对有问题。
于是我初步推断大概是内存的问题导致数据缺失,而后同步出现矛盾冲突,便提出了重启机器的要求,由于是生产环境要走一系列流程,因此直到昨晚机器才完成重启。
机器重启后,内存果然恢复正常,但是重启数据库的时候还是一样的问题。
既如此,那就只能翻出2-8当天出问题时的日志再看看了,于是发现之前的日志上方还有有这样一些内容:
2017-02-08T17:09:26.471+0800 I NETWORK [SyncSourceFeedback] Socket recv() timeout 192.168.*.*:27017
2017-02-08T17:09:26.471+0800 I NETWORK [SyncSourceFeedback] SocketException: remote: 192.168.*.*:27017 error: 9001 socket exception [RECV_TIMEOUT] server [192.168.*.*:27017]
2017-02-08T17:09:26.471+0800 I NETWORK [SyncSourceFeedback] DBClientCursor::init call() failed
2017-02-08T17:09:26.471+0800 I REPL [SyncSourceFeedback] SyncSourceFeedback error sending update: DBClientBase::findN: transport error: 192.168.*.*:27017 ns: admin.$cmd query: { replSetUpdatePosition: 1, optimes: [ { _id: ObjectId('5850ee6ae9405575765fc1d0'), optime: Timestamp 1486544809000|72, memberId: 0, cfgver: 5, config: { _id: 0, host: "192.168.*.*:27017", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 5.0, tags: {}, slaveDelay: 0, votes: 1 } }, { _id: ObjectId('5850eebcd4c62a9b9fbba274'), optime: Timestamp 1486544869000|114, memberId: 1, cfgver: 5, config: { _id: 1, host: "192.168.*.*:27017", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 } }, { _id: ObjectId('5850eeb2a7e579698bafa475'), optime: Timestamp 1486544867000|332, memberId: 2, cfgver: 5, config: { _id: 2, host: "192.168.*.*:27017", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 } } ] }
2017-02-08T17:09:27.098+0800 W NETWORK [ReplExecNetThread-2534] Failed to connect to 192.168.*.*:27017 after 5000 milliseconds, giving up.
2017-02-08T17:09:27.098+0800 I REPL [ReplicationExecutor] Error in heartbeat request to 192.168.*.*:27017; Location18915 Failed attempt to connect to 192.168.*.*:27017; couldn't connect to server 192.168.*.*:27017 (192.168.*.*), connection attempt failed
2017-02-08T17:09:31.455+0800 I REPL [ReplicationExecutor] could not find member to sync from
2017-02-08T17:09:32.097+0800 W NETWORK [ReplExecNetThread-2535] Failed to connect to 192.168.*.*:27017, reason: errno:115 Operation now in progress
2017-02-08T17:09:32.098+0800 I REPL [ReplicationExecutor] Error in heartbeat request to 192.168.*.*:27017; Location18915 Failed attempt to connect to 192.168.*.*:27017; couldn't connect to server 192.168.*.*:27017 (192.168.*.*), connection attempt failed
2017-02-08T17:09:39.098+0800 W NETWORK [ReplExecNetThread-2535] Failed to connect to 192.168.*.*:27017 after 5000 milliseconds, giving up.
2017-02-08T17:09:39.098+0800 I REPL [ReplicationExecutor] Error in heartbeat request to 192.168.*.*:27017; Location18915 Failed attempt to connect to 192.168.*.*:27017; couldn't connect to server 192.168.*.*:27017 (192.168.*.*), connection attempt failed
2017-02-08T17:09:42.099+0800 W NETWORK [ReplExecNetThread-2534] Failed to connect to 192.168.*.*:27017, reason: errno:113 No route to host
一番查询后,有说是副本集选举问题的,有说是网络防火墙问题的,但并没有找到解决办法,于是只好自己想了一个解决办法,强制把宕机节点删除掉再新建一个全新的数据库作为节点加进来。
在这个过程中我有所犹豫,因为我并不确定在加入了用户验证和使用了keyfile文件的时候能否成功解决我的问题,不知道是否会出现用户验证不通过而导致无法加入节点的问题。
不过好在,实在想不出更好办法的情况下,我用rs.remove删除宕机节点,再用rs.add添加新节点后,一切数据都正常同步了,包括之前的用户名密码和系统所需的主要数据。
而且原本以为一千多万的数据可能需要耗费很久时间同步,结果并没有用多久这个节点就从startup2变成了secondary。
本以为会有一番周折,结果有些出乎意料的解决了,但是并没有找到问题出现的根本原因,因此详细记录这一过程,以便其他人查看的同时,也算是记录下一个问题,寻求能想到相关原因的朋友给予解答。
mongodb副本集中其中一个节点宕机无法重启的问题的更多相关文章
- clickhouse高可用-节点宕机数据一致性方案-热扩容
1. 集群节点及服务分配 说明: 1.1. 在每个节点上启动两个clickhouse服务(后面会详细介绍如何操作这一步),一个数据分片,一个数据备份,为了确保宕机数据一致性,数据分片和数据备份不能同一 ...
- elasticsearch介绍集群,模拟横向扩展节点、节点宕机、改变分片
出处:[http://www.cnblogs.com/dennisit/p/4133131.html] ,防楼主删博,故保留一份! elasticsearch用于构建高可用和可扩展的系统.扩展 ...
- zk 节点宕机如何处理?
Zookeeper 本身也是集群,推荐配置不少于 3 个服务器.Zookeeper 自身也要保 证当一个节点宕机时,其他节点会继续提供服务. 如果是一个 Follower 宕机,还有 2 台服务器提供 ...
- redis集群节点宕机
redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务.这个备用的redis称为从节点(slave). 1. ...
- 假如Kafka集群中一个broker宕机无法恢复,应该如何处理?
假如Kafka集群中一个broker宕机无法恢复, 应该如何处理? 今天面试时遇到这个问题, 网上资料说添加新的broker, 是不会自动同步旧数据的. 笨办法 环境介绍 三个broker的集群, z ...
- Redis生产环境节点宕机问题报错及恢复排错
Redis故障发现 主观下线 当cluster-node-timeout时间内某节点无法与另一个节点顺利完成ping消息通信时,则将该节点标记为主观下线状态. 客观下线 当某个节点判断另一个节点主观下 ...
- 『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗
『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗 每周学点MGR知识. 1. 三节点的MGR集群,有两个节点宕机后还能正常工作吗 要看具体是哪种情况. 如果两个节点是正常关闭的话,则 ...
- Vertica集群单节点宕机恢复方法
Vertica集群单节点宕机恢复方法 第一种方法: 直接通过admintools -> 5 Restart Vertica on Host 第二种方法: 若第一种方法无法恢复,则清空宕机节点的c ...
- Vertica节点宕机处理一例
Vertica节点宕机处理一例: 查询数据库版本和各节点状态 常规方式启动宕机节点失败 进一步查看宕机节点的详细日志 定位问题并解决 1. 查询数据库版本和各节点状态 dbadmin=> sel ...
随机推荐
- NetCloud——一个网易云音乐评论抓取和分析的Python库
在17的四月份,我曾经写了一篇关于网易云音乐爬虫的文章,还写了一篇关于评论数据可视化的文章.在这大半年的时间里,有时会有一些朋友给我发私信询问一些关于代码方面的问题.所以我最近抽空干脆将原来的代码整理 ...
- 使用autoc js生成文章目录(侧边)导航栏
介绍: autocjs 是一个专门用来生成文章目录(Table of Contents)导航的工具.autocjs 会查找文章指定区域中的所有 h1~h6 的标签,并自动分析文章的层次结构,生成文章的 ...
- #pragma once 与 #ifndef 解析
转自:http://www.cnblogs.com/hokyhu/archive/2009/03/30/1425604.html 为了避免同一个文件被include多次,C/C++中有两种方式,一种是 ...
- [C#] 《Concurrency in C# Cookbook》读书笔记(一)- 并发编程概述
并发编程概述 前言 我们经常在耳边听说一些关于高性能.并发和并行等名词,并且很多人都对并发编程有一些误解. 误解 1:并发就是多线程? 答:多线程只不过是并发编程的其中一种形式而已.并发编程的种类很多 ...
- iOS项目——自定义UITabBar与布局
在上一篇文章iOS项目——基本框架搭建中,我们详细说明了如何对TabBarItem的图片属性以及文字属性进行一些自定义配置.但是,很多时候,我们需要修改TabBarItem的图片和文字属性之外,还需要 ...
- 基于tomcat+springMVC搭建基本的前后台交互系统
一.摘要 1.所需软件列表: 1) tomcat : apache-tomcat-7.0.54 服务端容器 2) Intellij: Intellij IDEA 14.0.3 开发 ...
- Python学习笔记(一):列表和元组
1.列表和元组的主要区别在于:列表可以修改,元组则不能.即如果要根据要求添加元素,列表更适合, 如果出于某种原因,序列不能修改的时候,使用元组更为合适. 2.通用序列操作1)索引:正数索引时,p ...
- ABP官方文档翻译 3.7 领域事件(事件总线)
领域事件(事件总线) 事件总线 注入IEventBus 获取默认实例 定义事件 预定义事件 处理异常 实体更改 触发事件 处理事件 处理基础事件 处理者异常 处理多个事件 注册处理者 自动 手动 取消 ...
- Netty(一):入门篇
匠心零度 转载请注明原创出处,谢谢! 说在前面 上篇文章对Netty进行了初探:Netty初探,主要介绍了下我们为什么需要学习netty.netty介绍等:本篇文章接着上篇文章的内容.本篇为了方便大家 ...
- ------ 解析因内核栈溢出导致的 “double fault” 蓝屏 ------
-------------------------------------------------------------------------- 前一篇指出 tail_recursivef_fac ...