Ubuntu上MongoDB如何进行故障恢复
导读:Ubuntu 上 MongoDB 故障恢复实操指南 一、快速定位与通用恢复流程 查看服务状态与日志,优先定位错误类型: 查看状态:sudo systemctl status mongod 查看日志:sudo tail -n 100 /v...
Ubuntu 上 MongoDB 故障恢复实操指南
一、快速定位与通用恢复流程
- 查看服务状态与日志,优先定位错误类型:
- 查看状态:sudo systemctl status mongod
- 查看日志:sudo tail -n 100 /var/log/mongodb/mongod.log
- 常见故障与处理要点:
- 配置错误:核对 /etc/mongod.conf 的 dbPath、log path、port、bindIp 等;修改后重启:sudo systemctl restart mongod
- 权限问题:确保数据目录与日志目录属主为 mongodb:mongodb,如:sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb
- 端口占用:确认 27017 未被占用,必要时调整配置或释放端口
- 非法指令或核心转储(signal=ILL/core-dump):多与版本/架构不兼容或安装损坏相关,建议卸载后安装与系统架构匹配的版本
- 不干净关机导致无法启动(旧锁文件):
- 备份并移除锁文件:sudo mv /var/lib/mongodb/mongod.lock /var/lib/mongodb/mongod.lock.bak
- 以 mongodb 用户执行修复:sudo -u mongodb mongod -f /etc/mongod.conf --repair
- 修复完成后启动:sudo systemctl start mongod
- 重要提示:执行修复会尝试重建索引并可能丢失未持久化的数据,操作前尽量备份现有数据目录与日志。
二、有备份时的恢复方法
- 逻辑备份恢复(mongodump/mongorestore)
- 适用:跨版本迁移、部分库表恢复、灵活选择目标库
- 基本流程:
- 安装与备份同版本的 mongorestore
- 目标库先启动并具备权限(如 –authenticationDatabase admin)
- 执行导入(示例):
- mongorestore -h 127.0.0.1 --port 27017 -u root -p '**’ --drop --gzip --archive=backup.gz -vvvv --stopOnError
- 分片集群导入到自建集群时,连接地址填 mongos,并添加 –nsExclude=“config.*”;多分片需分别导入各 shard 的备份
- 物理备份恢复(文件级拷贝/xtrabackup)
- 适用:同版本、同存储引擎的快速全量恢复(WiredTiger/RocksDB),一致性更好
- 基本流程:
- 准备与目标库版本一致的 MongoDB,按存储引擎准备配置(WiredTiger 或 engine: rocksdb)
- 将数据文件解压/拷贝到目标 dbPath
- 如为副本集物理备份,先以单节点模式启动并校验数据,再按需转换为副本集(清理原 replSet 配置后 rs.initiate())
- 启动后登录验证:show dbs / rs.status()
- 注意:物理恢复要求版本与引擎匹配,且通常需要关闭目标库的 TDE 配置(若原库启用 TDE,物理恢复不适用)
三、无备份时的兜底方案
- 使用 –repair 尝试修复数据文件(见第一部分),成功后立即做一次全量逻辑备份
- 若修复失败或数据损坏严重:
- 从最近一次可用的逻辑备份恢复(若有)
- 无备份时仅能重建库表并导入业务侧可恢复的数据(如应用侧导出、历史归档)
- 后续建议:
- 启用定期 mongodump 逻辑备份(含 –oplog 的时点备份更稳妥)
- 配置副本集提升可用性,关键业务考虑云盘/跨地域备份能力,便于按时间点或库表恢复
四、常见错误与修复要点对照表
| 症状 | 关键日志/现象 | 修复要点 |
|---|---|---|
| 服务启动失败,状态为 failed | systemctl 显示 failed;日志含配置或权限报错 | 核对 /etc/mongod.conf;修正 dbPath/log path/port/bindIp;校正目录属主为 mongodb:mongodb;重启服务 |
| 端口被占用 | 日志提示地址已被使用 | 释放 27017 或调整配置端口;确认无重复 mongod 进程 |
| 非法指令/核心转储 | 日志含 signal=ILL 或 core-dump | 版本/架构不兼容或安装损坏;卸载后安装匹配版本 |
| 不干净关机无法启动 | 日志提示 old lock file | 备份并移除 mongod.lock;以 mongodb 用户执行 –repair;再启动服务 |
| 权限拒绝 | 日志含 Permission denied | 修正 /var/lib/mongodb 与 /var/log/mongodb 属主与权限 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上MongoDB如何进行故障恢复
本文地址: https://pptw.com/jishu/757789.html
