首页主机资讯MongoDB如何在Ubuntu上恢复数据

MongoDB如何在Ubuntu上恢复数据

时间2025-12-19 02:41:05发布访客分类主机资讯浏览1000
导读:在 Ubuntu 上恢复 MongoDB 数据的常用方法 一、准备与版本匹配 确认 MongoDB 服务已安装并运行:sudo systemctl status mongod。如未运行,先安装并启动对应版本。 恢复工具的版本应与备份来源尽...

在 Ubuntu 上恢复 MongoDB 数据的常用方法

一、准备与版本匹配

  • 确认 MongoDB 服务已安装并运行:sudo systemctl status mongod。如未运行,先安装并启动对应版本。
  • 恢复工具的版本应与备份来源尽量一致(特别是 4.x 系列),以避免兼容性问题。
  • 备份方式通常有两类:
    • 逻辑备份:使用 mongodump 生成的 BSON 文件(含数据与索引元数据),便于跨版本、跨平台恢复。
    • 物理备份:直接拷贝 dbPath 数据文件(WiredTiger/RocksDB 等),要求版本严格匹配、操作步骤更谨慎。
  • 建议在恢复前停止写入或切换到维护窗口,避免恢复过程产生写入冲突。

二、使用 mongorestore 恢复逻辑备份(最常用)

  • 基本用法
    • 恢复整个备份目录到本机同名数据库:
      mongorestore /path/to/backup/
    • 恢复到指定数据库(避免覆盖同名库的其他集合):
      mongorestore --db < 目标库名> /path/to/backup/< 备份库名>
    • 恢复单个集合:
      mongorestore --db < 目标库名> --collection < 集合名> /path/to/backup/< 备份库名> /< 集合名> .bson
  • 常用选项
    • –drop:恢复前删除目标集合,确保与备份一致(生产慎用)。
    • –nsInclude/–nsExclude:按命名空间包含/排除(如 newdb.*)。
    • –uri:指定认证与主机,例如:
      mongorestore --uri=“mongodb://user:pass@localhost:27017” /path/to/backup/
  • 示例
    • 恢复整个备份:
      mongorestore /var/backups/mongobackups/10-29-20/
    • 仅恢复 newdb 库:
      mongorestore --db newdb /var/backups/mongobackups/10-29-20/newdb/
    • 恢复 newdb.restaurants 集合:
      mongorestore --db newdb --collection restaurants /var/backups/mongobackups/10-29-20/newdb/restaurants.bson
  • 提示
    • 逻辑备份能保留 BSON 数据类型索引,适合迁移与常规恢复。
    • 恢复后可用 mongo shell 执行 show dbs、use 、db..countDocuments() 校验。

三、时间点恢复与增量恢复(启用 Oplog 的副本集)

  • 前提:源库为 副本集 且已开启 oplog,备份中包含 oplog.bson
  • 步骤
    1. 全量恢复:先按第二部分恢复最近一次全量备份。
    2. 回放增量:将 oplog 导入到一个临时库(如 oplog.rs),再按时间点回放:
      mongorestore --oplogReplay --oplogLimit “” /path/to/oplog/
      其中 为目标时间点(如 2025-12-18T10:00:00Z)。
  • 说明
    • 时间点恢复依赖 oplog,若 oplog 窗口不足,只能恢复到 oplog 覆盖的最近时刻。
    • 单机模式无 oplog,无法做时间点恢复。

四、物理备份恢复(WiredTiger/RocksDB 数据目录拷贝)

  • 适用场景:从云数据库或自建环境获取了 dbPath 的物理备份,需要在 Ubuntu 上原样恢复。
  • 关键步骤
    1. 版本匹配:确保自建 MongoDB 的 大版本 与备份来源一致(如 4.2 对 4.2)。
    2. 准备环境:安装同版本 MongoDB,停止服务,清空或备份现有 dbPath
    3. 恢复数据文件:将备份中的 collection-.wt、_mdb_catalog.wt、WiredTiger.、sizeStorer.wt、storage.bson 等文件拷入目标 dbPath
    4. 启动与校验:
      • 启动:mongod --dbpath /your/dbpath
      • 校验:mongo --eval “show dbs” 与集合统计。
  • 注意事项
    • 物理恢复要求 存储引擎一致(WiredTiger/RocksDB),且文件权限与属主正确(如 mongod:mongod)。
    • 若从云上物理备份恢复,通常先以 单节点 模式启动验证,再按需配置为 副本集(需清理 local.replset 配置)。

五、常见问题与排错要点

  • 认证失败:使用 --uri 或在恢复前执行 mongo 登录,确保用户具备对目标库的 readWrite 权限。
  • 版本不兼容:mongorestore 报错或恢复后数据异常,优先核对 MongoDB 主次版本一致性。
  • 集合已存在冲突:加 --drop 覆盖恢复,或在恢复前手动清理目标集合。
  • 索引未恢复或异常:逻辑备份应同时包含 .bson.metadata.json,否则需手动重建索引。
  • 物理恢复后启动失败:检查 WiredTiger 版本、文件完整性、目录权限,以及是否混用不同存储引擎的文件。

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


若转载请注明出处: MongoDB如何在Ubuntu上恢复数据
本文地址: https://pptw.com/jishu/775829.html
MongoDB如何在Ubuntu上配置认证 Debian上Filezilla如何解决连接问题

游客 回复需填写必要信息