支援指定備份表清單、gzip 壓縮、按日期分目錄存放。注意:僅適用於資料一致性要求不高的環境(無鎖表、非事務一致性)。
#!/bin/bash
mysql_pwd="password"
mysql_dump="/usr/local/mysql/bin/mysqldump"
cur_year=$(date +"%Y")
cur_month=$(date +"%m")
cur_day=$(date +"%d")
dump_path="/usr/backup/mysql/$cur_year-$cur_month/$cur_day"
# 需備份的表清單
arr_tables=(
"table_1"
"table_2"
"table_3"
)
# 建立日期目錄
[ ! -d "$dump_path" ] && mkdir -p "$dump_path"
# 逐表備份並壓縮
for cur_table in "${arr_tables[@]}"; do
$mysql_dump -uroot -p$mysql_pwd --opt mydb "$cur_table" | gzip > "$dump_path/$cur_table.sql.gz"
done
--opt:啟用快速導出優化組合(含鎖表、延遲插入等)gzip:管道式壓縮,不產生中間檔/usr/backup/mysql/YYYY-MM/DD/--single-transaction(InnoDB)確保一致性crontab 定時執行,如每日凌淩 2 點:0 2 * * * /path/backup.sh