定期備份 mongodb 並上傳到 s3
使用 mongodump 滙出資料庫,並以 tar 壓縮,再以 s3cmd 上傳至 AWS S3 備份。
寫成 backup-mongo.sh,搭配 crontab 就可以定時備份了!以下中文的部份請自行換成真實資料:
#!/bin/bash
# 設定當日日期字串為變數值
today=`date +"%Y-%m-%d"`
# 將資料庫倒至暫存資料夾
/usr/bin/mongodump -h 芒果主機 -u 芒果用戶 -p 用戶密碼 --authenticationDatabase admin --db my_database --out "/home/ubuntu/mongo_data/bk-${today}"
# 壓縮資料夾
/usr/bin/tar -zcvf "/home/ubuntu/mongo_data/my_database-${today}.tar.gz" -C "/home/ubuntu/mongo_data/bk-${today}" my_database
# 使用 s3cmd 上傳壓縮檔到 s3
/usr/bin/s3cmd put "/home/ubuntu/mongo_data/my_database-${today}.tar.gz" s3://my_database/mongo-backup/
# 移除暫存資料夾
/usr/bin/rm -fr "/home/ubuntu/mongo_data/bk-${today}"
# 移除暫存壓縮檔
/usr/bin/rm "/home/ubuntu/mongo_data/my_database-${today}.tar.gz"
要注意的是若使用 root 執行,在 /root 目錄下要有 s3cmd 的設定檔 .s3cfg。