1. 程式人生 > >MongoDB 資料定時備份

MongoDB 資料定時備份

資料的安全性至關重要,由於一些不可預測的故障,如突然斷電、斷網等,資料可能會丟失。這就要求我們定時備份資料。

這裡記錄如何用 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 &