centos上mongodb故障如何排查
导读:CentOS 上 MongoDB 故障排查手册 一 快速定位流程 检查服务状态与端口 查看是否运行:sudo systemctl status mongod 启动/重启:sudo systemctl start|restart mong...
CentOS 上 MongoDB 故障排查手册
一 快速定位流程
- 检查服务状态与端口
- 查看是否运行:
sudo systemctl status mongod - 启动/重启:
sudo systemctl start|restart mongod - 查看端口监听:
ss -lntp | grep 27017或netstat -tulpen | grep 27017
- 查看是否运行:
- 查看日志定位错误
- 实时查看:
sudo tail -f /var/log/mongodb/mongod.log - 若服务未起来,直接前台启动以获取输出:
sudo mongod -f /etc/mongod.conf
- 实时查看:
- 校验配置文件关键项
- 配置文件:
/etc/mongod.conf - 重点核对:
net.bindIp、net.port、storage.dbPath、systemLog.path
- 配置文件:
- 检查目录权限
- 数据目录:
sudo chown -R mongod:mongod /var/lib/mongo - 日志目录:
sudo chown -R mongod:mongod /var/log/mongodb
- 数据目录:
- 远程连接与防火墙
- 云厂商安全组/本机防火墙放行 27017
- 需要远程访问时将
bindIp设为 0.0.0.0(或按需加入内网网段)
二 常见故障与修复
- 端口被占用
- 现象:启动失败,日志或
systemctl status提示 Address already in use - 处理:
ss -lntp | grep 27017找到 PID,sudo kill -9 < PID>后重启;或调整net.port
- 现象:启动失败,日志或
- 套接字文件无法删除
- 现象:日志出现 Failed to unlink socket file /tmp/mongodb-27017.sock
- 处理:
sudo rm -f /tmp/mongodb-27017.sock,再sudo systemctl restart mongod
- 数据目录或日志目录权限错误
- 现象:启动失败,提示无法写入 /var/lib/mongo 或 /var/log/mongodb
- 处理:
sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb
- 配置错误导致无法启动
- 现象:
systemctl status或前台mongod输出语法/路径错误 - 处理:核对
/etc/mongod.conf中dbPath、logpath、bindIp等;必要时用mongod -f /etc/mongod.conf前台验证
- 现象:
- 无法远程连接
- 现象:本机可连,远程超时
- 处理:将
bindIp: 0.0.0.0,放行防火墙/安全组 27017,并确认客户端使用正确主机与端口
三 日志与性能分析
- 日志查看与分析
- 实时跟踪:
tail -f /var/log/mongodb/mongod.log - 组件与内容:
db.getLogComponents()、db.adminCommand({ getLog: 1 } ) - 工具链:
mtools(mlogfilter、mloginfo、mplotqueries)做慢查询与统计可视化
- 实时跟踪:
- 运行状态与性能
- 实时监控:
mongostat、mongotop - 深入诊断:
db.serverStatus()(连接、锁、内存、页面错误等)
- 实时监控:
- 日志轮转与保留
- 建议通过
logrotate管理,示例/etc/logrotate.d/mongodb:/var/log/mongodb/mongod.log { daily rotate 7 compress missingok notifempty sharedscripts copytruncate dateext size 200M postrotate /bin/kill -SIGUSR1 $(cat /var/run/mongodb/mongod.pid 2> /dev/null || cat /var/log/mongodb/mongod.lock 2> /dev/null) 2> /dev/null || true endscript } - 注意:PID 文件路径在不同安装方式下可能为 /var/run/mongodb/mongod.pid 或 /var/log/mongodb/mongod.lock,请按实际环境调整
- 建议通过
四 应急与恢复
- 异常关机或异常退出后的修复
- 前台校验:
sudo mongod -f /etc/mongod.conf - 必要时修复:
sudo /usr/bin/mongod --config /etc/mongod.conf --repair - 修复完成后再启动:
sudo systemctl start mongod
- 前台校验:
- 避免数据损坏的关闭方式
- 优先使用:
mongod --shutdown --dbpath /var/lib/mongo - 避免直接用
kill -9终止进程
- 优先使用:
五 一键排查命令清单
# 1) 服务与端口
sudo systemctl status mongod
sudo systemctl restart mongod
ss -lntp | grep 27017
# 2) 日志与前台启动
sudo tail -f /var/log/mongodb/mongod.log
sudo mongod -f /etc/mongod.conf
# 3) 配置与权限
grep -E '^(net\.|storage\.|systemLog\.)' /etc/mongod.conf
ls -ld /var/lib/mongo /var/log/mongodb
sudo chown -R mongod:mongod /var/lib/mongo /var/log/mongodb
# 4) 远程连通性
ping <
服务器IP>
nc -vz <
服务器IP>
27017
# 云上需同时放行安全组与系统防火墙的 27017
# 5) 运行与性能
mongostat
mongotop
db.serverStatus()
# 6) 日志分析
db.getLogComponents()
db.adminCommand({
getLog: 1 }
)
# 可结合 mtools:mlogfilter、mloginfo、mplotqueries
以上命令覆盖了服务状态、端口连通、配置核对、权限修复、日志定位与性能诊断的关键环节,可据此快速缩小问题范围并恢复服务。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos上mongodb故障如何排查
本文地址: https://pptw.com/jishu/765366.html
