在进行任何恢复操作前,必须停止MongoDB服务以避免数据冲突或进一步损坏。使用以下命令停止服务:
sudo systemctl stop mongod
确保已拥有有效的MongoDB备份文件,常见格式包括**.tar.gz(压缩归档)、.bson(二进制数据)或mongodump生成的目录**。备份文件需完整且未损坏,建议提前通过mongodump工具创建备份(如每日定时备份)。
/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用户
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生成的目录,可直接将目录内容复制到数据目录并修改权限。使用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)。若使用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
恢复完成后,启动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),防止恢复失败导致数据丢失;scp或rsync传输并校验完整性;mongod:mongod;