分享mongos 崩溃后无法重启问题的解决方法

一、背景介绍

在MongoDB集群环境中,mongos作为路由服务(router service),连接客户端和集群的其他MongoDB分片(shard)服务。mongos收到客户端发出的请求后,将请求转发到对应的MongoDB分片上,再将分片返回的数据重新封装成多个分片的结果返回给客户端。

但是,在实际使用过程中可能会遇到mongos进程崩溃的情况,这时候就需要找到问题所在并解决。本文将分享mongos进程崩溃后无法重启的问题解决方法。

二、问题排查

1. 根据错误日志定位问题

mongos进程崩溃后,首先需要查看mongos的错误日志文件。错误日志文件通常位于mongos启动目录的log文件夹里。通过打开日志文件,可以查看mongos退出的原因,例如:

2021-06-12T15:38:19.613+0800 I CONTROL [mongosMain] ***** SERVER RESTARTED *****

2021-06-12T15:38:19.625+0800 W NETWORK [mongosMain] Failed to connect to 127.0.0.1:27017 after 5000ms milliseconds, giving up.

2021-06-12T15:38:19.625+0800 E QUERY [mongosMain] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :

connect@src/mongo/shell/mongo.js:328:13

@(connect):1:6

exception: connect failed

根据上面的错误信息可以看出,mongos进程启动失败的原因是连接到127.0.0.1:27017服务失败。

2. 检查mongodb服务是否正常运行

mongos进程的启动需要依赖mongodb服务是否正常运行。可以通过以下命令检查mongodb服务的状态:

systemctl status mongod.service

如果mongodb服务已经停止或未能正常运行,则需要先解决这个问题。

三、解决方法

1. 关闭mongos并清理mongos.lock文件

如果mongos进程在崩溃后未能正常退出,可能会导致mongos.lock文件未被清理。这时候需要先关闭mongos进程,再清理mongos.lock文件。关闭mongos进程可以使用以下命令:

killall mongos

然后,进入mongos启动目录,删除mongos.lock文件:

cd /mongodb/mongos/

rm mongos.lock

2. 启动mongos进程,并指定配置文件

mongos进程在启动时,需要指定mongos的配置文件。配置文件通常保存mongos的启动参数、连接分片的信息等。在启动mongos进程时,需要带上--config参数,指定mongos.conf配置文件的位置。如果没有指定config文件,则mongos进程会在启动时默认在/mongodb/mongos/目录下寻找mongos.conf文件。

mongos --config /mongodb/mongos/mongos.conf

启动mongos进程后,可以通过访问mongos服务来测试服务是否正常:

mongo 127.0.0.1:27017

可以看到如下的返回结果,说明mongos服务已经正常启动:

MongoDB shell version v4.4.5

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb

Implicit session: session { "id" : UUID("8c33d2be-5dcc-4b9b-a94f-fef142d66767") }

MongoDB server version: 4.4.5

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see

https://docs.mongodb.com/

Questions? Try the MongoDB Community Forums

https://community.mongodb.com/

>

四、总结

mongos作为MongoDB集群环境中重要的路由服务,在遇到进程崩溃无法重启的问题时,需要通过查看错误日志、检查mongodb服务状态等方法,在定位问题后及时清理mongos.lock文件,并指定正确的配置文件重新启动mongos进程。

数据库标签