温馨提示×

MongoDB在Debian上如何实现数据恢复

小樊
42
2025-12-25 01:05:10
栏目: 云计算

在 Debian 上恢复 MongoDB 数据的实用步骤

一 恢复方式概览

  • 使用 mongorestore 恢复由 mongodump 生成的 BSON 数据(推荐,安全、灵活,支持按库/集合恢复)。
  • 直接拷贝 数据文件(filesystem 方式)到 /var/lib/mongodb 目录(需停库、权限一致,风险较高,适合整实例迁移)。
  • 使用 mongoimport 导入 JSON/CSV 文件(适合小规模或特定集合的数据导入)。

二 方式一 mongorestore 恢复 BSON 备份(推荐)

  • 安装工具(若系统未自带 mongorestore):
    • Debian 包方式:sudo apt-get update && sudo apt-get install -y mongodb-database-tools
    • 或下载 .deb 包后用:sudo dpkg -i mongodb-database-tools-*.deb
    • 验证:mongorestore --version
  • 基本用法:
    • 恢复全量: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
    • 压缩备份:mongorestore --gzip /path/to/backup/2025-04-01
  • 常用选项:
    • –host 与 --port(远程恢复)
    • –drop(恢复前删除同名集合,谨慎使用)
    • –nsInclude/–nsExclude(按命名空间包含/排除)
  • 示例流程:
    • 查看备份目录结构,确认包含 .bson 与 .metadata.json
    • 执行恢复:mongorestore --dir /path/to/backup/2025-04-01
    • 连接 mongosh 校验:show dbs; use mydb; db.mycol.countDocuments({})

三 方式二 文件系统拷贝恢复(整实例迁移)

  • 建议先停库并备份现有数据(可选但强烈建议):
    • sudo systemctl stop mongod
    • sudo cp -a /var/lib/mongodb /var/lib/mongodb-backup-$(date +%F)
  • 拷贝备份数据到数据目录(路径以你的实际配置为准,WiredTiger 默认在 /var/lib/mongodb):
    • sudo cp -a /path/to/backup/mongodb /var/lib/mongodb
  • 修正权限(Debian 上 MongoDB 运行用户通常为 mongodb):
    • sudo chown -R mongodb:mongodb /var/lib/mongodb
    • 如有单独日志目录:sudo chown -R mongodb:mongodb /var/log/mongodb
  • 启动并检查:
    • sudo systemctl start mongod
    • sudo systemctl status mongod
    • mongosh 连接验证数据一致性

四 方式三 mongoimport 导入 JSON 或 CSV

  • 适用场景:仅有 JSON/CSV 导出文件,或只需导入少量集合。
  • 示例:
    • 导入 JSON 到集合:mongoimport --db mydb --collection mycol --file data.json --type json
    • 导入 CSV 到集合:mongoimport --db mydb --collection mycol --file data.csv --type csv --headerline
  • 注意:
    • JSON 导入默认按行处理,每行一个文档;CSV 需 --headerline 使用首行作为字段名。
    • 该方式不会恢复索引、触发器、用户与角色等元数据,需另行处理。

五 注意事项与最佳实践

  • 版本兼容:确保 mongorestore/mongoimportmongod 版本兼容;工具可用 mongorestore --version 检查。
  • 目标库存在性:同名集合/库已存在时,mongorestore 默认会插入而非覆盖;如需覆盖,使用 –drop(风险操作,先做好备份)。
  • 权限与所有权:恢复前后确保 /var/lib/mongodb/var/log/mongodb 归属 mongodb:mongodb,否则可能无法启动或访问数据。
  • 一致性:文件系统拷贝方式务必在停库状态下进行;使用 mongorestore 可在运行中恢复,但可能对正在写入的业务产生影响,建议在低峰期执行。
  • 校验:恢复后用 mongosh 执行 count、find 抽查关键集合,并核对索引与约束。

0