利用系統內建 crontab 排程,搭配 tar 或 mysqldump,實現 MySQL 每日自動備份、按日期命名、舊檔自行清理(可另寫腳本)。
mkdir -p /mysqldata/usr/sbin/bakmysql#!/bin/bash
rq=$(date +%Y%m%d)
# 方式 A:直接打包 datadir(需停庫或鎖表)
tar zcvf /mysqldata/mysql${rq}.tar.gz /var/lib/mysql
# 方式 B:邏輯備份(不停庫,適合 InnoDB)
# mysqldump --all-databases -u root -p'YourPassword' > /mysqldata/mysql${rq}.sql
注意:/var/lib/mysql 視安裝路徑調整(如 /usr/local/mysql/data)。
chmod +x /usr/sbin/bakmysql/etc/crontab 加入排程01 3 * * * root /usr/sbin/bakmysql/etc/rc.d/init.d/crond restart(或 systemctl restart crond)備份前務必停止 MySQL 或執行
FLUSH TABLES WITH READ LOCK,否則直接打包資料檔極易導致備份不一致,還原時資料庫損壞甚至無法修復。
find /mysqldata -mtime +7 -delete 自動刪除 7 天前舊檔。