首页主机资讯MongoDB在CentOS中的数据恢复方法有哪些

MongoDB在CentOS中的数据恢复方法有哪些

时间2025-12-15 22:01:04发布访客分类主机资讯浏览1434
导读:MongoDB 在 CentOS 的数据恢复方法 一、常用恢复方法概览 mongorestore 逻辑恢复:从 mongodump 生成的 BSON 备份恢复,支持全库、单库、单集合,适合跨版本迁移与选择性恢复。 文件级物理恢复:将 /v...

MongoDB 在 CentOS 的数据恢复方法

一、常用恢复方法概览

  • mongorestore 逻辑恢复:从 mongodump 生成的 BSON 备份恢复,支持全库、单库、单集合,适合跨版本迁移与选择性恢复。
  • 文件级物理恢复:将 /var/lib/mongo(WiredTiger 数据文件)与必要文件拷回数据目录,适用于实例级快速回滚;操作前建议备份现有数据目录。
  • WT 工具修复与手工替换:借助 WiredTiger wt 工具对损坏的 WT 文件进行 salvage,再导入或 repair,适合极端损坏场景。
  • mongoimport 导入 JSON/CSV:从 mongoexport 导出的 JSON/CSV 恢复,适合小体量或特定集合的结构化数据迁移。
  • 崩溃/损坏后的 repair 修复:使用 mongod --repair 尝试修复数据一致性,再重启服务验证。

二、操作步骤与示例

  • mongorestore 逻辑恢复(推荐)

    • 全库恢复
      mongorestore -u <
          user>
           -p <
          password>
           --authenticationDatabase admin /path/to/dump/
      
    • 指定库恢复
      mongorestore -u <
          user>
           -p <
          password>
           --authenticationDatabase admin /path/to/dump/<
          dbname>
          
      
    • 指定集合恢复
      mongorestore -u <
          user>
           -p <
          password>
           --authenticationDatabase admin /path/to/dump/<
          dbname>
          /<
          collname>
          .bson
      
    • 常用选项:–drop(恢复前删除同名集合,谨慎使用)、–host/–port–nsInclude/–nsExclude 做命名空间过滤。
  • 文件级物理恢复(拷贝数据文件)

    • 建议先停库并备份现有数据目录:
      sudo systemctl stop mongod
      sudo cp -R /var/lib/mongo /var/lib/mongo_backup_$(date +%F_%T)
      
    • 将备份的数据目录拷回(确保与当前 storage.dbPath 一致):
      sudo cp -R /path/to/backup/mongo /var/lib/mongo
      sudo chown -R mongod:mongod /var/lib/mongo
      sudo systemctl start mongod
      sudo systemctl status mongod
      
    • 注意:版本需兼容;WiredTiger 存储引擎下直接替换文件风险较高,务必有可用备份。
  • WT 工具修复与手工替换(极端损坏场景)

    • 安装 WiredTiger 工具(示例版本,需与实例 WT 版本匹配):
      sudo yum install -y epel-release libtool automake snappy snappy-devel lz4 lz4-devel zstd zstd-devel zlib zlib-devel git make gcc-c++
      cd /opt
      wget http://source.wiredtiger.com/releases/wiredtiger-2.7.0.tar.bz2
      bunzip2 wiredtiger-2.7.0.tar.bz2
      cd wiredtiger-2.7.0
      sh autogen.sh
      ./configure --enable-snappy
      make &
          &
           sudo make install
      
    • 基本流程:
      1. 启动一个临时实例指向新目录(如 /data/mongo-bak);
      2. 预先创建同名集合以生成对应 collection-*.wt 文件;
      3. 用备份的 WT 文件替换新实例对应文件;
      4. 使用 wt 工具对损坏文件执行 salvage:
        wt -C "extensions=[/opt/wiredtiger-2.7.0/ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" salvage file:<
            wt-file>
            
        
      5. 完成后执行 repair 并校验:
        mongod --dbpath /data/mongo-bak --repair
        mongo
        >
             db.<
            coll>
        .validate({
        full: true}
            )
        
    • 风险提示:WT 直接操作有数据丢失风险,务必在完整备份前提下进行。
  • mongoimport 导入 JSON/CSV(小体量/结构化数据)

    • 恢复集合(JSON 示例):
      mongoimport -h <
          host>
           -u <
          user>
           -p <
          password>
           --authenticationDatabase admin \
        --db <
          dbname>
           --collection <
          collname>
           --file /path/to/file.json
      
    • 恢复集合(CSV 示例,需指定字段):
      mongoimport -h <
          host>
           -u <
          user>
           -p <
          password>
           --authenticationDatabase admin \
        --db <
          dbname>
           --collection <
          collname>
       --type=csv --headerline --file /path/to/file.csv
      
    • 适合从 mongoexport 导出的 JSON/CSV 迁移到现有或新库。
  • 崩溃/损坏后的 repair 修复

    • 停库后执行修复:
      sudo systemctl stop mongod
      mongod --dbpath /var/lib/mongo --repair
      sudo systemctl start mongod
      sudo systemctl status mongod
      
    • 修复会重建索引并尝试一致性修复,可能耗时较长,修复后建议做全量校验。

三、方法选择建议

  • mongodump 备份:优先用 mongorestore,灵活、安全、可选择性恢复。
  • 无逻辑备份但磁盘文件完好:可尝试文件级物理恢复,务必先备份当前数据目录。
  • 文件级损坏严重:在完整备份前提下,使用 WT 工具 salvage 后 repair。
  • 仅需迁移少量集合或跨系统交换数据:使用 mongoimport/exportJSON/CSV
  • 实例异常但数据目录可访问:先 –repair 再验证数据完整性。

四、注意事项

  • 恢复前务必对当前实例与数据目录做完整备份(如复制 /var/lib/mongo 到安全位置)。
  • 使用 –drop 会先删除目标集合,可能造成数据覆盖,务必确认目标库/集合为空或不重要。
  • 认证与权限:如使用 SCRAM 认证,提供 –username/–password–authenticationDatabase admin
  • 版本兼容:逻辑恢复(mongorestore)通常跨小版本更稳妥;物理恢复与 WT 工具需版本匹配
  • 恢复后执行校验:如 db..validate({ full: true} ),并抽样查询确认数据一致。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MongoDB在CentOS中的数据恢复方法有哪些
本文地址: https://pptw.com/jishu/772114.html
minio安装包centos怎么获取 MongoDB在CentOS中的版本升级步骤是什么

游客 回复需填写必要信息