Amazon Linux实例MongoDB停止后启动失败排查求助
解决方案步骤
1. 修正MongoDB修复命令(指定自定义数据目录)
之前修复操作失败是因为未指定自定义数据目录,导致MongoDB默认读取/data/db。执行修复时需明确指定配置文件或数据路径:
# 通过配置文件指定参数执行修复 mongod --repair --config /etc/mongod.conf # 或直接指定数据目录 mongod --repair --dbpath /mongo/data
2. 彻底修复目录权限问题
日志明确显示WiredTiger日志文件访问权限被拒绝,需确保/mongo目录下所有文件/子目录的所有者为MongoDB运行用户(默认是mongod):
# 递归设置/mongo目录的所有者和组为mongod chown -R mongod:mongod /mongo # 设置数据目录及文件的权限 chmod -R 755 /mongo/data chmod -R 644 /mongo/data/* # 单独确保journal目录权限正确 chown mongod:mongod /mongo/data/journal chmod 755 /mongo/data/journal
同时检查PID文件目录权限,避免无法创建进程文件:
mkdir -p /var/run/mongodb chown mongod:mongod /var/run/mongodb chmod 755 /var/run/mongodb
3. 手动启动验证配置有效性
先清理残留进程,再手动指定配置文件启动,排查启动报错:
# 终止所有mongod进程 pkill mongod # 手动加载配置文件启动 mongod --config /etc/mongod.conf
若手动启动成功,再用服务命令启动:
service mongod start
4. 确认服务脚本的配置文件路径
检查/etc/init.d/mongod脚本,确保其中指定的配置文件路径是/etc/mongod.conf,而非默认路径,避免服务启动时加载错误配置。
5. 检查SELinux限制(若启用)
若Amazon Linux开启了SELinux,可能会阻止mongod访问自定义目录:
# 查看SELinux状态 sestatus
若状态为enforcing,添加目录上下文规则:
semanage fcontext -a -t mongod_var_lib_t "/mongo/data(/.*)?" restorecon -Rv /mongo/data semanage fcontext -a -t mongod_log_t "/mongo/log(/.*)?" restorecon -Rv /mongo/log
内容的提问来源于stack exchange,提问作者DevOps_Engg
相关产品推荐
相关产品推荐

