Debian上MongoDB数据如何恢复
导读:Debian上MongoDB数据恢复指南 一 恢复方式概览 使用 mongorestore 进行逻辑恢复:从 BSON 备份(由 mongodump 生成)将数据导入到现有或新建的数据库/集合,适合跨版本迁移、部分库表恢复、云端/离线归档...
Debian上MongoDB数据恢复指南
一 恢复方式概览
- 使用 mongorestore 进行逻辑恢复:从 BSON 备份(由 mongodump 生成)将数据导入到现有或新建的数据库/集合,适合跨版本迁移、部分库表恢复、云端/离线归档恢复等场景。支持按库、按集合、按查询条件恢复,并可配合 –gzip 处理压缩备份。
- 使用文件系统拷贝进行物理恢复:将 /var/lib/mongodb 的数据文件直接复制到数据目录(适用于同版本、同配置、同存储引擎的实例),操作前需停库,风险较高,通常仅在灾备或一致性要求极高的场景使用。
二 使用 mongorestore 的逻辑恢复步骤
- 准备环境
- 安装工具包(若未安装):sudo apt update & & sudo apt install mongodb-clients。
- 确认备份目录结构:mongodump 生成的目录中包含 /*.bson 与 /metadata.json 等文件。
- 基本恢复(全量)
- 命令:mongorestore /backup/mongodb/2025-04-02/
- 说明:将备份根目录下的所有数据库/集合恢复到当前实例,库和集合不存在会自动创建。
- 指定目标库或集合
- 恢复单个库:mongorestore --db mydb /backup/mongodb/2025-04-02/mydb
- 恢复单个集合:mongorestore --db mydb --collection mycol /backup/mongodb/2025-04-02/mydb/mycol.bson
- 带认证与压缩
- 认证示例:mongorestore --username admin --password ******** --authenticationDatabase admin /backup/mongodb/2025-04-02/
- 压缩备份:mongorestore --gzip /backup/mongodb/2025-04-02/
- 按条件恢复(集合级)
- 示例:mongorestore --db mydb --collection mycol --query ‘{ age: { $gt: 30} } ’ /backup/mongodb/2025-04-02/mydb/mycol.bson
- 常用选项
- –drop:恢复前删除目标集合(谨慎使用,避免误删现网数据)。
- –nsInclude/–nsExclude:按命名空间包含/排除库表。
- –uri:使用连接串连接(含认证、副本集、分片信息)。
三 使用文件系统拷贝的物理恢复步骤
- 适用前提
- MongoDB 版本一致、存储引擎一致(如均为 WiredTiger)、Debian 版本与路径一致,且实例可短暂停机。
- 操作步骤
- 停库:sudo systemctl stop mongod
- 备份当前数据目录(如有必要):sudo cp -a /var/lib/mongodb /var/lib/mongodb.bak_$(date +%F_%T)
- 清空或替换数据目录:sudo rm -rf /var/lib/mongodb/*(确保已停库且有可用备份)
- 拷贝备份数据:sudo cp -a /backup/mongodata/ /var/lib/mongodb/
- 修复权限(如使用非默认用户运行 mongod):sudo chown -R mongodb:mongodb /var/lib/mongodb
- 启动:sudo systemctl start mongod
- 验证:mongosh --eval ‘db.stats()’ 或检查日志 journal 是否正常。
四 认证与权限配置
- 备份/恢复命令需具备相应权限:
- 备份常用:–username --password --authenticationDatabase admin
- 具备 read 权限可导出数据,具备 readWrite 或 restore 角色可导入数据。
- 在 mongod.conf 中确认安全配置:
- security.authorization: enabled(启用鉴权)
- 如使用 SCRAM-SHA-256,确保客户端工具支持对应机制。
五 验证与常见问题处理
- 恢复后验证
- 集合/文档数核对:db..countDocuments({ } )
- 索引与选项:db..getIndexes()
- 业务侧抽样查询与关键报表核对。
- 常见问题
- 认证失败:检查 --username、–password、–authenticationDatabase 与用户角色;必要时在 admin 库下创建具备 restore 权限的用户。
- 版本不兼容:跨大版本(如 4.4 → 6.0)不建议物理恢复,优先使用 mongorestore 逻辑恢复。
- 压缩备份未识别:添加 –gzip 参数。
- 集合已存在冲突:使用 –drop 覆盖或先手动清理目标集合。
- 权限不足:确保运行 mongorestore 的用户对目标库有 readWrite 或 restore 角色。
- 服务无法启动:检查 /var/log/mongodb/mongod.log 中的权限、WiredTiger 恢复日志与数据目录占用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上MongoDB数据如何恢复
本文地址: https://pptw.com/jishu/758269.html
