首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Linux crontab 實現 MySQL 每日自動備份方案

     編輯:MySQL 資料庫相關知識

方案架構

利用系統 crontab 定時觸發備份腳本,以日期命名封存檔,實現零人工干預的每日備份。

實施步驟

  1. 建立備份目錄:
    mkdir -p /MySQLdata
  2. 編寫備份腳本 /usr/sbin/bakMySQL:
    #!/bin/bash
    rq=$(date +%Y%m%d)
    # 方案 A:物理備份(需停庫或鎖表)
    tar zcvf /MySQLdata/mysql$rq.tar.gz /var/lib/mysql
    
    # 方案 B:邏輯備份(線上可用,建議)
    mysqldump --all-databases -u root -p'StrongPassword' > /MySQLdata/MySQL$rq.sql
    gzip /MySQLdata/MySQL$rq.sql

    注意:/var/lib/mysql 為預設資料目錄,實際路徑請用 mysqladmin variables 確認。

  3. 賦予執行權限:
    chmod +x /usr/sbin/bakMySQL
  4. 編輯 crontab:
    vi /etc/crontab
    # 每天 03:01 執行
    01 3 * * * root /usr/sbin/bakMySQL
  5. 重載 cron 服務:
    /etc/rc.d/init.d/crond restart

備份檔案管理

  • 產出範例:MySQL20240619.tar.gz / MySQL20240619.sql.gz。
  • 建議配合 find /MySQLdata -mtime +30 -delete 定期清理舊備份。
  • 異地備份:配合 rsync/scp 推送至遠端存儲。

關鍵風險提示

物理備份(tar)必須在資料庫靜止狀態下進行(停服務或 FLUSH TABLES WITH READ LOCK),否則還原時會遭遇資料不一致甚至損壞。生產環境強烈建議使用 mysqldump --single-transaction --master-data=2 實現線上熱備份。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved