温馨提示×

centos下mongodb数据恢复方法有哪些

小樊
49
2025-10-19 16:29:32
栏目: 云计算

CentOS下MongoDB数据恢复的主要方法

1. 停止MongoDB服务

在进行任何恢复操作前,必须停止MongoDB服务以避免数据冲突或进一步损坏。使用以下命令停止服务:

sudo systemctl stop mongod

2. 准备备份文件

确保已拥有有效的MongoDB备份文件,常见格式包括**.tar.gz(压缩归档).bson(二进制数据)mongodump生成的目录**。备份文件需完整且未损坏,建议提前通过mongodump工具创建备份(如每日定时备份)。

3. 根据备份类型选择恢复方式

(1)物理备份(.tar.gz/.bson格式)恢复
  • .tar.gz格式
    解压备份文件到MongoDB默认数据目录(通常为/var/lib/mongo),并修复权限:
    sudo tar zxvf /path/to/backup.tar.gz -C /  # 解压到根目录
    sudo mv /data/db /var/lib/mongo          # 移动解压后的数据目录到标准位置
    sudo chown -R mongod:mongod /var/lib/mongo  # 修改目录所有者为mongod用户
    
  • .bson格式
    需安装mongodb-org-tools工具包(若未安装),使用mongorestore命令恢复指定数据库或集合:
    sudo yum install -y mongodb-org-tools    # 安装工具包
    sudo mongorestore --db your_database_name /path/to/backup.bson  # 恢复整个数据库
    sudo mongorestore --db your_database_name /path/to/backup.bson --collection your_collection  # 恢复指定集合
    
    若备份是mongodump生成的目录,可直接将目录内容复制到数据目录并修改权限。
(2)逻辑备份(mongodump生成)恢复

使用mongorestore命令恢复逻辑备份,支持整个数据库指定数据库指定集合的恢复:

  • 恢复整个数据库
    sudo mongorestore --username your_username --password your_password --authenticationDatabase admin /path/to/backup_directory/
    
  • 恢复指定数据库
    sudo mongorestore --username your_username --password your_password --authenticationDatabase admin /path/to/backup_directory/your_database_name/
    
  • 恢复指定集合
    sudo mongorestore --username your_username --password your_password --authenticationDatabase admin /path/to/backup_directory/your_database_name/your_collection_name/
    
    注:--authenticationDatabase用于指定认证数据库(如admin)。

4. 物理备份工具恢复(如Percona XtraBackup)

若使用Percona XtraBackup创建了物理备份,可通过以下步骤恢复:

  • 安装工具包:
    sudo yum install -y percona-xtrabackup-24
    
  • 解压备份文件:
    innobackupex --decompress --remove-original /path/to/physical_backup
    
  • 恢复数据:
    mongorestore --host localhost --port 27017 --db your_database_name /path/to/physical_backup/your_database_name
    

5. 启动MongoDB服务并验证

恢复完成后,启动MongoDB服务:

sudo systemctl start mongod

验证数据是否恢复成功:

mongo -u your_username -p your_password --authenticationDatabase admin  # 登录MongoDB
show dbs  # 查看数据库列表
use your_database_name  # 切换到目标数据库
db.your_collection_name.find()  # 查询集合中的数据

注意事项

  • 恢复前备份当前数据目录(如/var/lib/mongo),防止恢复失败导致数据丢失;
  • 若备份文件来自远程服务器,需通过scprsync传输并校验完整性;
  • 若恢复后出现权限问题,需调整数据目录的所有者为mongod:mongod
  • 定时备份(如通过cron任务)是预防数据丢失的关键。

0