记一次MongoDB故障恢复过程: terminate() called. No exception is active

本文记录了一次MongoDB故障恢复的过程。由于MongoDB服务崩溃,日志显示'terminate() called. No exception is active'错误。通过官方论坛找到问题可能由低版本引起,检查发现版本为4.2.x。升级到最新版本后,问题得到解决。总结中强调了使用docker-compose简化维护以及面对类似问题时的应对策略。

今天早上用户突然说登录不上去了,立刻到kuboard查看日志,发现都是数据库报错。立刻蒙圈,因为数据库的架构太复杂,怕处理不了

找问题

首先查看了mongos的日志,发现最后崩溃之前的日志结尾是这么两句:

2020-11-05T01:31:05.646+0000 F  - operation was interrupted because a client disconnected
2020-11-05T01:31:05.646+0000 F  - [conn15] terminate() called. No exception is active

首先尝试重新启动mongodb

docker restart mongos
docker restart mc1
docker restart ms1
docker restart ms2

再次查看日志,还是一样的错误

无奈只能多吉搜索这个打印的错误,发现了一条官方论坛一样的提问,https://developer.mongodb.com/community/forums/t/mongos-service-crashed/6180
点进去,一直转圈。。。

然后转进去了,发现回答者说这个问题可能是版本太低,如果在4.2.x以下的版本会出现
查看了一下我们数据库的版本,是 4.2
立刻进行升级

解决

在部署了mongo的每个服务器上更新mongo的版本。因为是使用docker-compose部署的,所以升级方式比较简单:

  1. 下载最新的镜像

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值