在CentOS 7环境下,MongoDB的开机自启动问题通常是由于系统清理了/var/run目录下的文件,导致MongoDB无法找到其pid文件(进程ID文件)而无法启动。为了解决这个问题,我们需要采取以下步骤:
确认MongoDB的版本是否包含已知的bug。有些特定版本的MongoDB在CentOS 7上可能会遇到开机无法自启动的问题,但并非所有版本都会有此问题。你可以通过`rpm -qa | grep mongo`命令查询已安装的MongoDB版本。
如果确定是由于pid文件问题导致的启动失败,可以按照以下步骤进行修复:
1. 创建一个持久化的pid文件路径:
在根目录下创建一个名为`mongod`的目录,并给予MongoDB用户对该目录的读写权限。
```
[azuo1228@ecs-ee2fe26e /]$ sudo mkdir /mongod
[azuo1228@ecs-ee2fe26e /]$ sudo touch /mongod/mongod.pid
[azuo1228@ecs-ee2fe26e /]$ sudo chown -R mongod:mongod /mongod
```
2. 修改MongoDB配置文件:
使用编辑器(如vim)打开配置文件`/etc/mongod.conf`,将`pidFilePath: /var/run/mongodb/mongod.pid`修改为新创建的pid文件路径:`pidFilePath: /mongod/mongod.pid`。
3. 更新systemd服务文件:
编辑`/etc/systemd/system/multi-user.target.wants/mongod.service`文件,将`PIDFile=/var/run/mongodb/mongod.pid`修改为`PIDFile=/mongod/mongod.pid`。
4. 使systemd重新加载配置:
```
[azuo1228@ecs-ee2fe26e ~]$ sudo systemctl daemon-reload
```
5. 启动MongoDB服务或重启系统:
```
[azuo1228@ecs-ee2fe26e ~]$ sudo service mongod start
```
6. 检查MongoDB服务状态:
```
[azuo1228@ecs-ee2fe26e ~]$ sudo systemctl status mongod.service
```
需要注意的是,如果你在安装MongoDB的更新版本后,仍遇到开机自启动问题,可能是因为新的系统服务文件`/etc/systemd/system/multi-user.target.wants/mongod.service`没有正确地更新pid文件路径。在这种情况下,你需要再次检查并修改该文件。
此外,MongoDB的某些更新版本(如3.4.1)可能已经解决了这个问题。你可以通过`rpm -qa | grep mongod`命令查看当前安装的版本。如果版本较新且仍然出现问题,可能需要检查其他配置或系统设置,如SELinux的配置。确保SELinux设置为`disabled`或`permissive`模式,因为严格的SELinux策略可能会影响MongoDB的正常运行。
总结,解决CentOS 7下MongoDB开机自启动问题的关键在于确保MongoDB服务能够找到并创建pid文件。通过创建一个持久化的pid文件路径、修改配置文件和systemd服务文件,以及确保SELinux设置适当,通常可以成功解决这个问题。同时,保持MongoDB到最新版本也是预防此类问题的好方法。如果问题依然存在,建议检查系统日志以获取更多线索。