1. 程式人生 > >mongodb 資料自動備份

mongodb 資料自動備份

建立Mongodb資料庫備份目錄

mkdir -p ~/backup/mongod_bak/mongod_bak_now
mkdir -p ~/backup/mongod_bak/mongod_bak_list

新建Mongodb資料庫備份指令碼

mkdir ~/crontab/ && vi ~/crontab/mongod_bak.sh #新建檔案,輸入以下程式碼

#!/bin/sh
DUMP=~/mongodb-linux-x86_64-4.0.1/bin/mongodump # mongodump備份檔案執行路徑
OUT_DIR=~/backup/mongod_bak/mongod_bak_now # 臨時備份目錄
TAR_DIR=~/backup/mongod_bak/mongod_bak_list # 備份存放路徑 DATE=`date +%Y_%m_%d` # 獲取當前系統時間 DB_USER=youuser # 資料庫賬號 DB_PASS=youpassword # 資料庫密碼 DB_NAME=diary # 要備份的資料恢復庫名字 DAYS=30 # DAYS=30代表刪除30天前的備份,即只保留最近30天的備份 TAR_BAK="mongod_$DB_NAME_bak_$DATE.tar.gz" # 最終儲存的資料庫備份檔名 cd $OUT_DIR rm -rf $OUT_DIR/* mkdir -p $OUT_DIR
/$DATE $DUMP -h 127.0.0.1 --port 27017 -u $DB_USER -p $DB_PASS -d $DB_NAME -o $OUT_DIR/$DATE # 備份全部資料庫 tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE # 壓縮為.tar.gz格式 find $TAR_DIR/ -mtime +$DAYS -delete # 刪除天前的備份檔案

修改檔案屬性,使其可執行

chmod +x ~/crontab/mongod_bak.sh #修改檔案屬性,使其可執行

修改/etc/crontab #新增計劃任務

crontab -e
在下面新增
30 1 * root ~/crontab/mongod_bak.sh #表示每天凌晨1點30執行備份

重新啟動crond使設定生效

/sbin/service crond reload #重新載入配置
chkconfig --level 35 crond on  #加入開機自動啟動:
/sbin/service crond start   #啟動服務
crontab -l #列出crontab檔案

恢復備份

./mongorestore -h 127.0.0.1 —port 27017 -u youuser -p youpassword -d diary ~/backup/mongod_bak/mongod_bak_now/