温馨提示×

MongoDB数据恢复在Debian上的方法

小樊
32
2025-12-09 06:24:13
栏目: 云计算

在Debian上恢复MongoDB数据的实用方法

一 方法总览与选择

  • 使用 mongorestore 恢复由 mongodump 生成的 BSON 数据(推荐、安全、跨版本兼容性好)。
  • 直接拷贝 数据文件(filesystem copy/rsync)到 /var/lib/mongodb 进行恢复(速度快,但需严格版本与配置匹配,风险较高)。
  • 使用 mongoimport 导入 JSON/CSV 数据(适合小规模或特定集合的迁移/恢复)。

二 使用 mongorestore 恢复 BSON 备份(推荐)

  • 准备环境
    • 确认已安装数据库工具(包含 mongorestore)。在 Debian 12 上可直接安装包 mongodb-database-tools;旧版本或最小化系统可手动下载并解压工具到 /usr/local/mongodb/bin。示例:
      • 安装包:sudo apt-get update && sudo apt-get install -y mongodb-database-tools
      • 或手动下载工具并解压至 /usr/local/mongodb/bin(示例命令见下)。
  • 基本恢复
    • 恢复全量:mongorestore /path/to/backup/2025-04-01
    • 恢复到指定库:mongorestore --db mydb /path/to/backup/2025-04-01/mydb
    • 恢复到指定集合:mongorestore --db mydb --collection mycol /path/to/backup/2025-04-01/mydb/mycol.bson
  • 常用选项
    • –host/–port:指定目标实例(如 localhost:27017)。
    • –gzip:备份为压缩格式时使用。
    • –drop:恢复前删除同名集合(谨慎使用)。
    • –nsInclude/–nsExclude:按命名空间包含/排除。
  • 示例
    • mongorestore --host 127.0.0.1 --port 27017 --gzip /backups/mongodb/2025-04-01
    • mongorestore --host 127.0.0.1 --port 27017 --db sales --drop /backups/mongodb/2025-04-01/sales

三 直接拷贝数据文件恢复(文件系统方式)

  • 适用场景
    • 同版本、同存储引擎、同配置的数据目录整体迁移或灾难恢复。
  • 操作步骤
    • 停止服务:sudo systemctl stop mongod
    • 备份现有数据目录(可选但强烈建议):sudo cp -a /var/lib/mongodb /var/lib/mongodb-backup-$(date +%F)
    • 同步备份数据到数据目录(示例使用 rsync):sudo rsync -a /path/to/backup/mongodb/ /var/lib/mongodb/
    • 修正权限:sudo chown -R mongodb:mongodb /var/lib/mongodb
    • 启动服务:sudo systemctl start mongod
    • 检查状态:sudo systemctl status mongod;用 mongosh 连接验证集合与文档。
  • 重要提示
    • 不建议在运行中的实例上直接覆盖 /var/lib/mongodb;文件系统方式对 WiredTigerMMAPv1 的细节要求不同,版本不一致可能导致启动失败或数据损坏。

四 使用 mongoimport 导入 JSON 或 CSV

  • 适用场景
    • 仅有 JSON/CSV 导出文件(由 mongoexport 生成)或仅需恢复部分集合/文档。
  • 基本用法
    • 导入集合:mongoimport --db mydb --collection mycol --file /path/to/file.json --type json
    • 导入 CSV:mongoimport --db mydb --collection mycol --file /path/to/file.csv --type csv --headerline
    • 指定主机端口:–host 127.0.0.1 --port 27017
  • 注意
    • JSON 导入默认按行处理(每行一个文档);CSV 需包含列名并加 –headerline

五 实践建议与常见问题

  • 恢复前先在测试环境演练,确认索引、验证器、视图、用户权限等是否一并恢复。
  • 使用 –gzip 备份与恢复可减少磁盘与网络占用;大数据量建议分批恢复。
  • 若需时间点恢复,备份时应包含 oplog(mongodump --oplog),恢复时使用 oplog 回放到指定时间点。
  • 权限与所有权:确保 /var/lib/mongodb/var/log/mongodb 归属 mongodb:mongodb,否则实例可能无法启动。
  • 版本匹配:尽量保持 备份工具版本目标 MongoDB 版本一致;跨大版本恢复时优先使用 mongorestore

0