# 創建備份目錄 mkdir -p /home/mysql_data_bak # 創建腳本文件 touch /root/autobackupmysql.sh chmod +x /root/autobackupmysql.sh
vi /root/autobackupmysql.sh
腳本內容:
#!/bin/bash
# 文件名含日期:20240115.sql
FILENAME=$(date +%Y%m%d)
# 執行備份(根據實際情況調整用戶、密碼、數據庫、端口)
/usr/bin/mysqldump -u root -p'your_password' --single-transaction --routines --triggers boss > /home/mysql_data_bak/${FILENAME}.sql
# 可選:壓縮節省空間
# gzip /home/mysql_data_bak/${FILENAME}.sql
# 可選:刪除 30 天前備份
# find /home/mysql_data_bak -name "*.sql" -mtime +30 -delete
關鍵參數說明:
--single-transaction:InnoDB 熱備,不鎖表,保證一致性--routines --triggers:包含存儲過程/觸發器--defaults-extra-file 指定配置文件,避免明文泄露# 檢查安裝 rpm -q cronie || yum -y install cronie # 啟動並設開機自啟 systemctl start crond systemctl enable crond
crontab -e
添加行(每天凌晨 3 點執行):
0 3 * * * /root/autobackupmysql.sh >> /var/log/mysql_auto_backup.log 2>&1
時間格式:分 時 日 月 周;* 表示任意。
/root/autobackupmysql.sh → 檢查目標目錄生成 .sql 文件且大小合理tail -f /var/log/mysql_auto_backup.logmysql -u root -p test_db < backup.sql 驗證備份可用性rsync 或雲存儲 API 將備份推送至遠端| 需求 | 方案 |
|---|---|
| 大數據庫備份過慢 | 使用 mydumper 多線程導出或 xtrabackup 物理熱備 |
| 備份文件過大 | 管道直連 gzip 或 zstd 壓縮 |
| 多實例備份 | 腳本參數化實例端口/數據庫,循環調用 |
| 備份狀態監控 | 腳本返回碼 + 郵件/企業微信告警 |
通過 mysqldump + crontab 實現 MySQL 定時自動備份是運維入門必備技能。關鍵點:腳本參數正確、--single-transaction 保證一致性、日誌記錄便於排查、定期驗證恢復。生產環境建議引入壓縮、異地存儲與監控告警,構建完整備份閉環。