温馨提示×

mongodb数据恢复centos步骤

小樊
45
2025-12-07 13:29:14
栏目: 云计算

CentOS 上 MongoDB 数据恢复步骤

一 场景与准备

  • 明确备份类型:
    • 逻辑备份(由 mongodump 生成,目录或 .archive/.bson 文件,适合跨版本迁移与选择性恢复)。
    • 物理备份(拷贝 dbPath 数据文件,适合同版本快速整机恢复)。
  • 准备环境:
    • 安装与源库版本匹配的 MongoDB 工具链(mongorestore/mongod),避免版本不兼容导致恢复失败。
    • 规划目标环境:单节点、副本集或分片,并准备相应目录与权限。
    • 建议先对现有数据做快照或拷贝(如 /var/lib/mongo),以便回滚。

二 逻辑备份恢复 mongorestore(通用)

  • 基本流程
    1. 停写与备份当前数据(可选但强烈建议):
      • 建议先停止应用写入,必要时对现有 dbPath 做一次拷贝备份。
    2. 解压备份(若为压缩包):
      • tar.gz:tar -xzvf backup_20250401.tar.gz -C /backups/
      • .zst:zstd -d -c backup.tar.zst | tar -xvf - -C /backups/
    3. 恢复命令(示例):
      • 全量恢复:mongorestore --uri=“mongodb://127.0.0.1:27017/?authSource=admin” /backups/mongodb_backup_20250401
      • 单库:mongorestore --uri=“mongodb://127.0.0.1:27017/?authSource=admin” --db mydb /backups/mongodb_backup_20250401/mydb
      • 单表:mongorestore --uri=“mongodb://127.0.0.1:27017/?authSource=admin” --db mydb --collection mycol /backups/mongodb_backup_20250401/mydb/mycol.bson
      • 常用参数:
        • –drop:恢复前删除同名集合(谨慎使用)。
        • –gzip:导入 .gz 归档。
        • –archive=:导入 .archive 流。
        • –nsExclude=“config.*”:分片场景导入到自建集群时排除 config 库。
        • –stopOnError:遇错即停,便于定位问题。
    4. 验证:
      • mongo --host 127.0.0.1 -u -p --authenticationDatabase admin
      • show dbs; use mydb; db.mycol.countDocuments({})。
  • 常见要点
    • 分片集群恢复:将下载的每个 Shard 备份分别导入;导入到自建分片集群时务必加 –nsExclude=“config.*”;多分片导入到同一集群时通常仅第一个导入使用 –drop
    • 版本兼容:旧版 mongorestore 可能不兼容新版本 MongoDB,需选择匹配版本。
    • 云盘逻辑备份拆分文件:若单表被拆成多个 bson 分片(如 data 目录下的 part 文件),需先合并或重命名后再导入。

三 物理备份恢复 拷贝 dbPath(同版本快速恢复)

  • 基本流程
    1. 准备干净目录并解压物理备份:
      • mkdir -p /test/mongo/data
      • tar xzvf backup_20250401.tar.gz -C /test/mongo/data
    2. 创建配置文件 mongod.conf(示例,WiredTiger):
      • systemLog: destination: file; path: /test/mongo/mongod.log; logAppend: true
      • security: authorization: enabled
      • storage: dbPath: /test/mongo/data; directoryPerDB: true
      • net: port: 27017
      • processManagement: fork: true; pidFilePath: /test/mongo.pid
    3. 以单节点模式启动:
      • mongod -f /test/mongo/mongod.conf
    4. 登录验证:
      • mongo --host 127.0.0.1 -u -p --authenticationDatabase admin
      • show dbs; 检查集合与数据量。
    5. 如需副本集模式:
      • 先以单节点完成恢复并登录;
      • local 库移除原副本集配置:use local; db.system.replset.remove({});
      • 按规划配置 replSetName、keyFile(权限 600)、启动多个节点后用 rs.initiate() 初始化并添加成员。
  • 常见要点
    • 物理恢复通常要求 MongoDB 版本一致、存储引擎一致(如 WiredTiger)。
    • 若启动报错,检查 data 目录是否被占用、是否残留 storage.bson、日志路径是否可写、keyFile 权限是否为 600

四 常见问题与排错

  • 版本不兼容:恢复工具版本需与目标 MongoDB 版本匹配,必要时升级/降级 mongorestore
  • 导入中断或失败:使用 –stopOnError 定位问题;分片导入到自建集群务必加 –nsExclude=“config.*”
  • 单表多 part bson:需先合并或重命名后再用 mongorestore 导入。
  • 物理恢复启动失败:确认 data 目录干净、无残留 mongod 进程、日志路径存在且可写、keyFile 权限 600

0