MongoDB备份恢复在Debian上有哪些技巧
小樊
35
2025-12-21 03:49:45
Debian上MongoDB备份恢复实用技巧
一 工具选择与适用场景
- 使用 mongodump/mongorestore 做逻辑备份与恢复,适合大多数日常场景(跨版本迁移、按库/集合恢复、开发测试环境搭建)。在 Debian 上可直接通过安装 mongodb-clients 获得工具。示例:备份到按时间命名的目录,恢复指定库或集合。
- 使用文件系统拷贝(停机拷贝 /var/lib/mongodb 数据目录)做物理备份,适合需要快速整机恢复的场景。操作前需确保 mongod 已停止,避免一致性问题。
- 使用 mongoexport/mongoimport 做数据迁移/导出为 JSON/CSV,适合跨系统、跨数据库或仅迁移部分集合/字段的场景,注意并非完整 BSON 备份,索引/类型信息可能丢失。
二 快速上手命令模板
- 安装工具
- sudo apt update && sudo apt install -y mongodb-clients
- 逻辑备份
- 全量:mongodump --host localhost --port 27017 --out /backup/mongodb/$(date +%F_%H-%M-%S)
- 指定库/集合:mongodump -h localhost -d mydb -c mycol -q ‘{status:{$gt:10}}’ --out /backup/mongodb/$(date +%F)
- 压缩:在上述命令后加 –gzip
- 逻辑恢复
- 全量:mongorestore -h localhost -p 27017 /backup/mongodb/2025-12-21_10-00-00
- 指定库/集合:mongorestore -h localhost -d mydb -c mycol /backup/mongodb/2025-12-21_10-00-00/mydb/mycol.bson
- 覆盖写入:在恢复命令后加 –drop(谨慎使用)
- 文件系统物理备份
- 停止服务:sudo systemctl stop mongod
- 拷贝数据目录:sudo rsync -aAX /var/lib/mongodb /backup/mongodb_data_$(date +%F)
- 启动服务:sudo systemctl start mongod
- 导出/导入(非完整备份)
- 导出:mongoexport -d mydb -c users -o users.json --type json -f _id,name,age
- 导入:mongoimport -d mydb -c users --file users.json --type json
三 自动化与保留策略
- 定时备份脚本(示例)
- 路径:/usr/local/bin/backup_mongodb.sh
- 内容:
- #!/usr/bin/env bash
- BACKUP_DIR=“/backup/mongodb”
- DATE=$(date +%F_%H-%M-%S)
- mkdir -p “$BACKUP_DIR”
- mongodump --out “$BACKUP_DIR/mongodb-$DATE” --gzip
- find “$BACKUP_DIR” -type d -mtime +7 -exec rm -rf {} +
- 定时任务
- 每天 02:00 执行:0 2 * * * /usr/bin/mongodump --out /backup/mongodb/$(date +%Y%m%d%H%M%S) --gzip
- 建议将脚本与日志分离,保留最近 7 天备份,并定期做恢复演练验证可用性。
四 安全与性能要点
- 认证与网络
- 远程/带认证备份:mongodump -h host -u user -p pass --authenticationDatabase admin --out /backup
- 限制来源 IP、使用 TLS/SSL 加密传输,避免明文口令出现在命令行历史或进程列表中。
- 资源与影响
- 备份/恢复会占用 CPU/IO/网络,大数据量时建议在 从节点 执行或限制速率(如通过 cgroups/ionice),并在业务低峰期进行。
- 一致性
- 逻辑备份对运行中的数据库影响较小,但为降低业务影响可在维护窗口内执行;物理备份务必 停库 后再拷贝数据目录。
- 压缩与加密
- 使用 –gzip 减少磁盘占用;对备份文件启用 加密 与 异地/云端 存储,提升可靠性与安全性。
五 常见问题与排查
- 权限不足
- 确保运行备份的用户对 /backup 有写权限,对 MongoDB 有权限(如使用 –authenticationDatabase admin 指定认证库)。
- 恢复后索引缺失
- mongorestore 默认不会删除目标库已有数据,使用 –drop 会先删除再写入;若需保留现有数据,请先做好全量备份并谨慎选择恢复策略。
- 版本与兼容性
- 跨大版本升级时,优先采用 mongodump/mongorestore 迁移数据,避免直接复用数据文件导致不兼容;必要时按官方升级路径逐步升级。
- 备份有效性
- 定期做 恢复演练,校验集合计数、索引与关键业务数据一致性,避免“备份不可用”的 silent failure。