ubuntu

Ubuntu下MongoDB怎样恢复数据

小樊
43
2025-09-19 07:05:30
栏目: 云计算

Ubuntu下MongoDB数据恢复指南

一、恢复前的准备工作

  1. 停止MongoDB服务:为避免数据冲突,恢复前需停止MongoDB服务。执行命令:
    sudo systemctl stop mongod
    
  2. 确认备份文件完整性:确保备份文件未损坏且包含所需数据。备份文件通常为.bson(单库/单集合)、.archive(多库/压缩包)格式,或存储在指定目录(如/backup)中。

二、使用mongorestore恢复数据(基础场景)

1. 单库/单集合恢复(BSON格式)

若备份为.bson文件(如/backup/mydb目录下的mycollection.bson),可使用以下命令恢复指定数据库:

mongorestore --db <数据库名> <备份目录>

示例(恢复mydb数据库中的mycollection集合):

mongorestore --db mydb /backup/mydb/mycollection.bson

2. 单文件archive格式恢复

若备份为.archive压缩包(如mongoDB.archive),需添加--archive参数指定文件路径。若文件为.gz压缩格式,需同时添加--gzip参数:

mongorestore --host <服务器地址> --port <端口> --db <数据库名> --archive:"<备份文件路径>" --gzip

示例(恢复本地mongoDB.archivemydb数据库):

mongorestore --host localhost --port 27017 --db mydb --archive:"./mongoDB.archive" --gzip

3. 恢复前清理旧数据(可选)

若需彻底替换现有数据库,可添加--drop参数,恢复前会删除目标数据库中的所有数据:

mongorestore --db mydb --drop /backup/mydb

三、进阶场景:通过oplog恢复误删数据

若数据因误操作(如drop database)丢失,且开启了oplog(MongoDB复制集默认开启),可通过重放oplog恢复到指定时间点。

  1. 停止MongoDB服务并创建临时实例目录:
    sudo systemctl stop mongod
    mkdir -p /tmp/mongorestore_temp
    
  2. 重放oplog到临时实例
    mongorestore --db <数据库名> --oplogReplay --oplogLimit=<时间戳> /backup/oplog.bson
    
    其中<时间戳>为误操作发生的时间(如1713561600,对应2024-04-19 00:00:00 UTC)。
  3. 替换原数据库数据:将临时实例中的数据复制到MongoDB数据目录(默认/var/lib/mongodb),重启服务即可。

四、恢复后的验证

恢复完成后,启动MongoDB服务并连接验证数据:

sudo systemctl start mongod
mongo

进入目标数据库,查询集合数据:

use mydb
db.mycollection.find().pretty()

五、注意事项

  1. 版本兼容性mongorestore工具版本需≥备份工具版本,且恢复服务器版本≥备份时的MongoDB服务版本(如备份用4.4版工具,恢复用5.0版服务器可行,反之可能失败)。
  2. 权限设置:恢复时需具备目标数据库的写入权限(建议使用管理员账号)。
  3. 测试环境验证:生产环境恢复前,务必在测试环境验证备份文件的可用性,避免误操作导致数据二次丢失。

0
看了该问题的人还看了