為了確保資料安全,建立自動化的每日資料庫備份機制至關重要。本文提供一個成熟的 Shell 腳本範例,利用 mysqldump 於每天固定時間備份 MySQL 資料,並自動清理舊備份檔案。
#!/bin/bash
# 每天早上 4 點執行 MySQL 備份
# 使用方式:
# chmod 700 backup.sh
# crontab -e 加入:0 4 * * * /home/erya/run/moniter/mysql_backup.sh
user="radius"
password=""
host="localhost"
db_name="radius"
# 備份目錄設定
base_dir="/home/backup"
backup_log="${base_dir}/mysql_backup.log"
backup_path=${base_dir}
# 檔案命名:資料庫名稱-日期.sql.gz
date=$(date +"%Y-%m-%d")
filename=$backup_path/$db_name-$date.sql.gz
# 設定檔案權限掩碼,確保備份檔案只有擁有者可讀寫
umask 177
# 執行備份並壓縮
mysqldump --user=$user --password=$password --host=$host $db_name | gzip > $filename
# 刪除 10 天前的舊備份檔案
find $backup_path/* -mtime +10 -exec rm {} \;
# 記錄備份完成時間
echo "backup finished at $(date +'%Y-%m-%d %H:%M:%S')" >> "$backup_log"
0 4 * * * 表示每天凌晨 4 點自動執行mysql_backup.shchmod 700 mysql_backup.sh 賦予執行權限crontab -e 加入排程任務/home/backup 目錄存在且具備寫入權限此腳本經過實務驗證,穩定可靠,適合生產環境部署。建議定期檢查備份日誌與檔案完整性,確保災難發生時能順利還原。