在CentOS系统下,MongoDB数据恢复可以通过以下几种方法实现:
恢复整个数据库:
mongorestore -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]
例如:
mongorestore -u game -p VvsPBDQw --authenticationDatabase kinggame /home/backup/kinggame
恢复指定数据库:
mongorestore -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]/[数据库名]
例如:
mongorestore -u game -p VvsPBDQw --authenticationDatabase kinggame /home/backup/kinggame/kinggame
恢复指定集合:
mongorestore -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]/[数据库名]/[集合名]
例如:
mongorestore -u game -p VvsPBDQw --authenticationDatabase kinggame /home/backup/kinggame/kinggame/setting
安装必要的工具:
yum install percona-xtrabackup-24
传输备份文件:
使用scp
或其他工具将备份文件传输到CentOS服务器。
解压备份文件:
innobackupex --decompress --remove-original /path/to/backup
恢复数据:
mongorestore --host localhost --port 27017 --db [数据库名] /path/to/backup/[数据库名]
/home/crontab/mongod_bak.sh
,内容如下:#!/bin/sh
Dump=/usr/bin/mongodump
OUT_DIR=/home/backup/mongod_bak/mongod_bak_now
TAR_DIR=/home/backup/mongod_bak/mongod_bak_list
DATE=date +%Y-%m-%d
DB_USER=user
DB_PASS=password
DB_NAME=dbname
$Dump -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS -d $DB_NAME -o $OUT_DIR/$DATE
tar -zcvf $TAR_DIR/$DATE.tar.gz $OUT_DIR/$DATE
find $TAR_DIR/ -mtime +$DAYS -delete
2. **设置定时任务**:
编辑`crontab`文件:
```bash
crontab -e
添加以下内容:
0 1 * * * /home/crontab/mongod_bak.sh
恢复脚本:
创建恢复脚本/home/crontab/mongorestore.sh
,内容如下:
#!/bin/sh
mongorestore -u [用户名] -p [密码] --authenticationDatabase [认证数据库] [备份目录]
设置定时任务:
编辑crontab
文件:
crontab -e
添加以下内容:
0 1 * * * /home/crontab/mongorestore.sh
请注意,在进行数据恢复之前,确保备份文件的完整性和可用性,并停止MongoDB服务以避免数据不一致。如果备份文件是通过mongodump
创建的,建议使用mongorestore
工具进行恢复。