MongoDB 資料定時備份
阿新 • • 發佈:2018-12-21
資料的安全性至關重要,由於一些不可預測的故障,如突然斷電、斷網等,資料可能會丟失。這就要求我們定時備份資料。
這裡記錄如何用 crontab 定時任務,每天定時備份 MongoDB 的資料到另一臺伺服器。
shell 指令碼
mongodb_bak.sh:
#!/bin/sh
DUMP=/home/jochen/mongodb/bin/mongodump # mongodump備份檔案執行路徑
OUT_DIR=/home/jochen/mongodb_bak/mongodb_bak_now # 臨時備份目錄
TAR_DIR=/home/jochen/mongodb_bak/mongodb_bak_list # 備份存放路徑
DATE=`date -d "today" +"%Y-%m-%d-%H-%M-%S"` # 獲取當前系統時間,作為檔名的一部分
DAYS=7 # DAYS=7代表刪除7天前的備份, 即只保留最近7天的備份
TAR_BAK="mongodb_bak_$DATE.tar.gz" # 最終儲存的資料庫備份檔名
cd $OUT_DIR
rm -rf $OUT_DIR/
mkdir -p $OUT_DIR/$DATE
mkdir -p $TAR_DIR/
$DUMP -o $OUT_DIR/$DATE # 備份全部資料庫
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE # 壓縮為.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete # 刪除7天前的備份檔案
scp $TAR_DIR/$TAR_BAK [email protected]:/home/jochen/mongodb_bak/$TAR_BAK # 通過 scp 傳送至另一臺伺服器
crontab 定時任務
利用 linux 系統自帶的 crontab 定時任務,每天定時執行以上指令碼。
新建定時任務:
$ crontab -e
在最後一行寫上:
# 每日凌晨3點,執行相應指令碼
* 3 * * * /home/jochen/mongodb_bak.sh > /dev/null &