mongoDB集群异常关闭后重新启动失败

问题场景描述:mongoDB集群非正常关闭后,重新启动过程中常见的问题与解决方法总结。

一、mongodb问题解决前使用说明

该台主机mongodb安装目录为/usr/local/mongodb/
三台主机构成一个mongo集群,以其中一台主机为例,./bin/master.conf 配置文件为:

#master.conf 
dbpath=/data/mongodb/master1
logpath=/usr/local/mongodb/logs/master0704.log
pidfilepath=/usr/local/mongodb/master0704.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=192.168.11.101
port=27017
oplogSize=10000
fork=true
noprealloc=true
storageEngine=wiredTiger

二、常见问题:

2.1 问题1:

[root@storm2 bin]# ./mongod -f ./master.conf
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 37248
ERROR: child process failed, exited with error number 51

以往正常启动mongo现在无法启动某个节点,往往是由于mongo的非正常关闭引起的(例如断电)。该问题的出现首先的解决方法是:

  1.删除指定数据库数据目录下的mongod.lock文件,然后重新启动该台主机上的mongo
  ps aux| grep mongod
  如果出现该mongo的进程,则成功;
  如果不成功,就检查配置文件master.conf,检查文件日志和数据库路径是否正确

2.2 问题2

出现exited with error number 100错误,需要重点检查配置项的路径时候正确,例如:检查文件日志和数据库路径是否正确。例如在数据库数据存放路径中少建立相应的文件夹;

[root@storm2 bin]# ./mongod -f master.conf
note: noprealloc may hurt performance in many applications
about to fork child process, waiting until server is ready for connections.
forked process: 39349
ERROR: child process failed, exited with error number 100

最后实在不行,就更改数据库数据的存放路径、更改相应的日志存放路径(注意:不要删除原原有的数据库和集合表文件),然后重启该mongo节点;
【该方法适用于最无奈时候的:也是建议最后使用但是也是最有效的方法,但是要保证相应的数据文件能够恢复(相应的从节点有数据库备份)】

三、mongodb正确的关闭姿势

在安装并启动了的mongodb的集群中的一台上,登陆mongodb的客户端(./mongo IP:27017)
然后

$ ./mongod 192.168.11.101:27017  #登陆mongodb客户端
> use admin  #切换管理员用户
> db.shutdownServer();   #正常关闭mongodb,不是通过kill -9 PID的方式容易的导致的异常关闭

猜你喜欢

转载自blog.csdn.net/fct2001140269/article/details/80898735
今日推荐