MongoDB故障排查在CentOS上怎么操作
导读:CentOS 上 MongoDB 故障排查实操手册 一 快速定位流程 查看服务状态与系统日志:使用命令 systemctl status mongod 与 journalctl -xe 获取失败原因与调用栈;若服务未起来,优先看这两条输出...
CentOS 上 MongoDB 故障排查实操手册
一 快速定位流程
- 查看服务状态与系统日志:使用命令 systemctl status mongod 与 journalctl -xe 获取失败原因与调用栈;若服务未起来,优先看这两条输出。
- 查看 MongoDB 自身日志:默认路径 /var/log/mongodb/mongod.log,使用 tail -f /var/log/mongodb/mongod.log 实时观察错误关键字(如 ERROR、Fatal、Unlink socket)。
- 校验配置文件:核对 /etc/mongod.conf 中关键项(如 systemLog.path、storage.dbPath、net.bindIp、net.port)是否存在且路径可写。
- 检查资源与权限:用 top、df -h 排查 CPU/内存/磁盘;确认数据目录与日志目录属主为 mongod:mongod(常见目录:/var/lib/mongo、/var/log/mongodb)。
- 重启并验证:完成修复后执行 systemctl restart mongod,再次检查状态与日志是否恢复正常。
二 常见故障与修复对照表
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
| 服务启动失败(systemctl status 报错) | 查看状态与 journal;检查配置文件语法与路径 | 修正 mongod.conf 错误项;确保 dbPath/logPath 存在且可写;必要时重新安装相关包 |
| 端口被占用(常见 27017) | ss -lntp | grep 27017 或 netstat -tulpen |
| 无法远程连接 | 查看 bindIp 是否为 0.0.0.0 或包含服务器 IP;云主机检查安全组/防火墙 | 在 /etc/mongod.conf 设置 net.bindIp: 0.0.0.0;开放 27017/tcp(firewalld/iptables);重启服务 |
| 认证失败 | 查看是否启用 security.authorization | 在 /etc/mongod.conf 开启 security.authorization: enabled;用管理员账户登录并校验权限 |
| 出现 “Failed to unlink socket file … /tmp/mongodb-27017.sock” | 查看 mongod.log 或前台运行 mongod 的输出 | 删除残留 socket:rm -f /tmp/mongodb-27017.sock;重启服务 |
| 数据目录/日志目录权限错误 | ls -ld /var/lib/mongo /var/log/mongodb | 修正属主:chown -R mongod:mongod /var/lib/mongo /var/log/mongodb;重启服务 |
| 异常卡死/无响应 | top/htop 观察 CPU/内存;查看最近日志 | 先 systemctl restart mongod 恢复业务;再依据日志与资源瓶颈定位根因(慢查询、索引缺失、磁盘/内存不足等) |
三 日志与监控要点
- 日志位置与配置:默认 /var/log/mongodb/mongod.log;在 /etc/mongod.conf 中可配置 systemLog.destination/file/path/logAppend/verbosity,便于定位与审计。
- 实时查看与关键字过滤:使用 tail -f /var/log/mongodb/mongod.log;结合 grep “error”、awk 等做快速筛选与统计。
- 性能与负载观测:使用 mongostat、mongotop 观察 QPS/写入/连接数/锁 等;在 shell 中执行 db.serverStatus() 获取更细指标。
- 日志轮转与归档:建议配置 logrotate 对 mongod.log 做按日轮转、压缩与保留(如保留 7 天),避免磁盘被撑满。
四 安全与网络配置检查
- 远程访问:编辑 /etc/mongod.conf,将 net.bindIp 设为 0.0.0.0(或指定内网/公网 IP 白名单);重启服务后从客户端测试连通性。
- 防火墙放行:在 firewalld 中放行 27017/tcp(如:firewall-cmd --add-port=27017/tcp --permanent & & firewall-cmd --reload)。
- 启用认证:在 /etc/mongod.conf 开启 security.authorization: enabled;使用 mongosh 连接 admin 库创建管理员并验证登录。
- 最小权限原则:应用连接使用具备所需库/集合权限的专用账号,避免长期使用 root。
五 应急与恢复建议
- 避免 kill -9 强杀 mongod;优先使用 systemctl stop mongod 或 mongod --shutdown --dbpath 安全关闭。
- 异常关闭或异常关机后,如出现数据文件不一致,可使用 /usr/bin/mongod --config /etc/mongod.conf --repair 进行修复,再启动服务。
- 若多轮重启仍失败,保留现场(日志、配置、磁盘空间信息),导出最近日志片段用于进一步分析或提交工单。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB故障排查在CentOS上怎么操作
本文地址: https://pptw.com/jishu/776745.html
