Centos 7 Mysql 資料庫備份
因老闆要求,每個資料庫都要分開備份,所以寫了這個記錄一下
vim backup.sh
#!/bin/bash
# 資料庫名稱,中間空格
DATABASES=("db-name1" "db-name2" "db-name3")
# 要放備份的目錄
BACKUP_DIR="/home/backup"
# 迴圈備份每個資料庫
for db in "${DATABASES[@]}"
do
# 備份檔案名稱,後面加上時間比較好記
FILENAME="${db}_$(date +"date '+%Y%m%d").sql"
# 執行備份指令
mysqldump -u 帳號 -p 密碼 $db > "$BACKUP_DIR/$FILENAME"
# 檢查備份是否成功
if [ $? -eq 0 ]; then
echo "資料庫 $db 備份成功."
else
echo "資料庫 $db 備份失敗."
fi
done
# 跳到備份目錄
cd /home/backup
# 壓縮,這裡看要給什麼名字,隨便,這裡我給db2加時間
tar zcvf db2_$(date '+%Y%m%d')_fullbackup.tar.gz *_$(date '+%Y%m%d').sql
# 刪掉剛剛倒出來的sql檔
rm -rf *_$(date '+%Y%m%d').sql
# 刪掉超過7天的 .gz檔
deldate=`date -d ' 7 days ago' +%Y%m%d`
rm -rf db2_"$deldate"_fullbackup.tar.gz
存檔
chmod +x backup.sh
加入 cron 排程又是美好的一天。
後記:用 mysqldump 倒資料出來的資料庫不能太大,不然時間太久可能會造成資料庫寫入有問題。GOOGLE大神是說一般大於50G,建議使用其他方法備份。
留言
張貼留言