mysqldump(邏輯備份)、gzip 壓縮、crontab 排程/var/lib/mysqlbackup/ip_bindass_YYYY-MM-DD_HHhMM.sql.gzmkdir -p /var/lib/mysqlbackup
cd /var/lib/mysqlbackup
dbbackup.sh#!/bin/bash
# === 修改以下參數 ===
USERNAME="db_user"
PASSWORD="db_pass"
DBNAME="target_db"
OUTDIR="/var/lib/mysqlbackup/"
# ====================
DATE=$(date +%Y-%m-%d_%Hh%M)
OUTFILE="ip_bindass_${DATE}.sql.gz"
# 執行備份並壓縮
/usr/bin/mysqldump --database "$DBNAME" --opt --single-transaction \
-u"$USERNAME" -p"$PASSWORD" | /usr/bin/gzip -9 > "${OUTDIR}${OUTFILE}"
# 可選:保留最近 7 天備份,自動清理舊檔
find "$OUTDIR" -name "ip_bindass_*.sql.gz" -mtime +7 -delete
chmod +x /var/lib/mysqlbackup/dbbackup.sh
crontab -e
每天 15:20 執行(範例):
20 15 * * * /var/lib/mysqlbackup/dbbackup.sh
每小時執行:
0 * * * * /var/lib/mysqlbackup/dbbackup.sh
--single-transaction 確保 InnoDB 一致性備份不鎖表scp/rsync/aws s3 cp 異地備份gunzip -c backup.sql.gz | mysql -u user -p test_db 驗證可還原--databases db1 db2 db3 或略過 --database 參數備份全部# 直接還原
gunzip -c backup.sql.gz | mysql -u user -p target_db
# 或解壓後還原
gunzip backup.sql.gz
mysql -u user -p target_db < backup.sql