CentOS系统中MongoDB数据恢复指南
在CentOS系统中,MongoDB数据恢复需根据备份类型(逻辑备份/物理备份)选择对应方法,以下是具体操作步骤及注意事项:
sudo systemctl stop mongod/var/lib/mongo),防止恢复失败导致数据彻底丢失。sudo cp -R /var/lib/mongo /var/lib/mongo_backupmongodump生成的目录或.bson文件)未损坏,可通过ls命令检查文件是否存在,或尝试解压(如.tar.gz文件)。若备份是通过mongodump工具生成的(常见格式为目录或.bson文件),可使用mongorestore工具恢复:
CentOS系统可通过mongodb-org-tools包安装:
执行命令:sudo yum install -y mongodb-org-tools
将备份目录中的数据库恢复到MongoDB实例:
执行命令:sudo mongorestore -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]
示例(恢复kinggame数据库,用户名game,密码VvsPBDQw,认证数据库kinggame,备份目录/home/backup/kinggame):
sudo mongorestore -u game -p VvsPBDQw --authenticationDatabase kinggame /home/backup/kinggame
若备份目录包含多个数据库,可指定恢复某一数据库:
执行命令:sudo mongorestore -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]/[数据库名]
示例(恢复kinggame数据库下的备份):
sudo mongorestore -u game -p VvsPBDQw --authenticationDatabase kinggame /home/backup/kinggame/kinggame
可细化到恢复某个数据库中的特定集合:
执行命令:sudo mongorestore -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]/[数据库名]/[集合名]
示例(恢复kinggame数据库中的setting集合):
sudo mongorestore -u game -p VvsPBDQw --authenticationDatabase kinggame /home/backup/kinggame/kinggame/setting
若MongoDB服务不在本地或端口非默认(27017),需指定连接信息:
执行命令:sudo mongorestore --host [主机名] --port [端口] -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]
示例(恢复到远程服务器192.168.1.100的27017端口):
sudo mongorestore --host 192.168.1.100 --port 27017 -u game -p VvsPBDQw --authenticationDatabase kinggame /home/backup/kinggame
若备份是MongoDB数据目录的完整拷贝(如/var/lib/mongo的备份),可直接替换现有数据目录:
执行命令:sudo systemctl stop mongod
若现有数据无需保留,可删除默认数据目录:
执行命令:sudo rm -rf /var/lib/mongo
将备份的物理文件复制到MongoDB数据目录:
执行命令:sudo cp -R /path/to/your/physical/backup/* /var/lib/mongo/
(/path/to/your/physical/backup/为备份文件路径)
确保MongoDB用户(默认mongod)拥有数据目录的读写权限:
执行命令:sudo chown -R mongod:mongod /var/lib/mongo
执行命令:sudo systemctl start mongod
若备份时启用了Oplog(MongoDB的操作日志),可通过Oplog回放实现精确恢复(恢复到某一时间点的状态):
执行mongodump时添加--oplog参数:
执行命令:mongodump --oplog -h 127.0.0.1:27017 -o /path/to/backup
执行mongorestore时添加--oplogReplay参数:
执行命令:mongorestore --oplogReplay /path/to/backup
sudo systemctl start mongod。sudo systemctl status mongod,确认服务运行正常(状态为active (running))。mongo -u [用户名] -p [密码] --authenticationDatabase [认证数据库]。show dbs;use [数据库名];show collections;db.[集合名].find()。mongodump生成备份,并将备份文件存储在异地(如云存储),避免单点故障。root或mongod用户)。/var/log/mongodb/mongod.log)定位问题。