温馨提示×

MongoDB数据恢复在CentOS上怎么做

小樊
50
2025-10-04 22:48:28
栏目: 云计算

MongoDB数据恢复在CentOS上的操作步骤

1. 停止MongoDB服务

在进行数据恢复前,必须停止MongoDB服务,避免恢复过程中数据写入导致冲突或损坏。
执行命令:

sudo systemctl stop mongod

2. 准备备份文件

确保已拥有有效的MongoDB备份文件(常见格式为.tar.gz压缩包或.bson原始文件)。若未备份,需先通过mongodump创建备份(参考备份流程)。

  • 示例备份文件路径:/path/to/your/backup/mongodump-20250930.tar.gz(压缩格式)
  • 或:/path/to/your/backup/mydatabase.bson(原始格式)

3. 处理现有数据(可选但推荐)

为防止恢复过程中出现数据冲突,建议备份当前MongoDB数据目录(默认路径为/var/lib/mongo),再清空该目录。
执行命令:

# 备份当前数据(可选)
sudo cp -R /var/lib/mongo /var/lib/mongo_backup
# 清空当前数据目录
sudo rm -rf /var/lib/mongo/*

4. 根据备份格式选择恢复方式

(1)恢复.tar.gz压缩格式备份

若备份为压缩包,需先解压到MongoDB数据目录,再调整权限。
执行命令:

# 解压备份文件到根目录(根据备份路径调整)
sudo tar zxvf /path/to/your/backup/mongodump-20250930.tar.gz -C /
# 将解压后的数据移动到MongoDB标准数据目录
sudo mv /data/db /var/lib/mongo
# 更改数据目录权限(确保mongod用户可访问)
sudo chown -R mongod:mongod /var/lib/mongo
(2)恢复.bson格式备份

若备份为.bson文件,需使用mongorestore工具直接恢复。

  • 安装mongorestore工具(若未安装):
    sudo yum install -y mongodb-org-tools
    
  • 执行恢复命令
    # 恢复整个备份目录到指定数据库(如mydatabase)
    sudo mongorestore --db mydatabase /path/to/your/backup/
    # 恢复单个集合(如mycollection)
    sudo mongorestore --db mydatabase --collection mycollection /path/to/your/backup/mydatabase/mycollection.bson
    
  • 常用选项说明
    • --drop:恢复前删除目标数据库/集合中的现有数据(避免重复);
    • --gzip:若备份文件为gzip压缩格式,需添加此选项;
    • --host/--port:指定MongoDB服务器地址和端口(默认localhost:27017);
    • --username/--password:需身份验证时添加(如--username admin --password 123456 --authenticationDatabase admin)。

5. 启动MongoDB服务

恢复完成后,启动MongoDB服务并检查状态。
执行命令:

# 启动服务
sudo systemctl start mongod
# 检查服务状态(确保为“active (running)”)
sudo systemctl status mongod

6. 验证数据恢复

通过MongoDB Shell登录实例,检查数据是否恢复成功。
执行命令:

# 登录Shell
mongo -u admin -p 123456 --authenticationDatabase admin
# 切换到目标数据库
use mydatabase
# 查看集合列表
show collections
# 查询集合中的数据(如mycollection)
db.mycollection.find().pretty()

注意事项

  • 权限问题:确保恢复后的数据目录(/var/lib/mongo)属主为mongod用户,否则服务无法启动;
  • 版本兼容性:备份文件需与目标MongoDB版本兼容(如v4.4备份不可恢复到v5.0实例);
  • 测试恢复:定期测试备份文件的恢复流程,确保备份有效性;
  • 日志排查:若恢复失败,可通过journalctl -xe/var/log/mongodb/mongod.log查看错误日志。

0