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,建議使用其他方法備份。




留言

這個網誌中的熱門文章

Windows 「指定的檔名無效或太長,請指定其他檔名」

Ubuntu 22.04 Rsync自動異地同步

金旭系統 票卷異常查修