首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Ubuntu MySQL 定時自動備份腳本:crontab + mysqldump 實現每日零點備份

     編輯:MySQL 綜合教學

在 Ubuntu 上構建 MySQL 每日自動備份,核心組件:mysqldump 導出 + crontab 定時調度。以下為最小可用配置:

1. 創建備份目錄與腳本

mkdir -p /mysqldata
cat > /usr/sbin/bakmysql <<'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d)
mysqldump --all-databases -uroot -p'YourPassword' > /mysqldata/mysql_${DATE}.sql
# 單庫備份替換 --all-databases 為 dbname
EOF
chmod +x /usr/sbin/bakmysql

2. 配置 crontab 定時任務

# 編輯系統 crontab
echo "0 3 * * * root /usr/sbin/bakmysql" >> /etc/crontab
# 每日 03:00 執行(避開業務高峰)

# 重啟 cron 服務
systemctl restart cron

3. 進階增強(生產建議)

  • 壓縮存儲:mysqldump ... | gzip > /mysqldata/mysql_${DATE}.sql.gz,節省 70%+ 空間。
  • 異地備份:腳本末尾加 scp /mysqldata/mysql_${DATE}.sql.gz user@backup-server:/path/。
  • 保留策略:find /mysqldata -name "mysql_*.sql.gz" -mtime +7 -delete 保留 7 天。
  • 備份驗證:定期在測試環境 gunzip -c backup.sql.gz | mysql -uroot -p test_db 驗證可還原性。
  • 單事務一致性:InnoDB 庫加 --single-transaction --master-data=2 獲得不加鎖一致性快照。

4. 常見問題排查

  • mysqldump: command not found → 腳本用絕對路徑 /usr/bin/mysqldump 或導出 PATH。
  • 密碼含特殊字符 → 單引號包裹 -p'Pass#$%',或用 --defaults-extra-file=/root/.my.cnf 讀取配置文件。
  • 備份文件為空 → 檢查密碼正確性、權限、磁盤空間 df -h /mysqldata。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved