在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
TAR_DIR=/home/backup/mongod_bak/mongod_bak_now
DATE=$(date %Y-%m-%d_%H_%M_%S)
DB_USER=db_user
DB_PASS=db_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 +14 -type f -delete
設置定時任務:編輯crontab文件:
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
工具進行恢復。