Linux下簡單的備份MongoDB

大概的想法是寫個簡單的sh,內容為自動備份mongodb並上傳到aws s3中,然後設定排程執行即可

1.建立sh檔
打算讓某個user來執行,所以在這個user的目錄下建立的scripts資料夾,並產生檔案,名稱就設定為:mongodb_backup.sh

# 產生檔案名稱使用的時間字串,格式範例20170101120101
TIME=`date +%Y%m%d%H%M%S`

# 備份檔案的目標目錄
DEST=/home/user/backups/DB-$TIME

# mongodb擁有備份權限的username與密碼
DBUser="user"
DBUserPassword="password"

# 打包檔案的目錄
TarFile=/home/user/backups/DB-$TIME.tar

# S3的bucket名稱
S3Bucket=bucketName

#建立備份目標目錄
mkdir $DEST

#執行整個db的備份
mongodump -u $DBUser -p $DBUserPassword -o $DEST

#打包
tar -cvf $TarFile $DEST

#上傳檔案至s3
aws s3 cp $TarFile s3://$S3Bucket/

#不想保留檔案可以在移除local的備份檔跟tar檔

2.建立好mongodb_backup.sh後,執行crontab -e建立排程

0 0,8,16, * * * /home/user/scripts/mongodb_backup.sh

執行的時間自己設定,我設定在目標user的crontab中,有需要也可以設定到系統排程裡面,不過相關目錄就需要調整了


3.後續
crontab執行排程時發生permission denied,沒有權限的錯誤,由於我是使用某個linux user的身分執行,檔案又放在user的目錄下,似乎因此導致job沒有執行權限,這部份我還不太熟悉,要找機會研究一下差異....
總之先把執行的權限打開

chmod +x mongodb_backup.sh

之後運作就正常了

留言

這個網誌中的熱門文章

天雨粟、鬼夜哭、思念漫太古。

蘇打綠 - 御花園

Nodejs Base64 Url Safe