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

MySQL 資料庫自動備份腳本實作:mysqldump + gzip + crontab 定時備份

     編輯:MySQL 綜合教學

備份策略概覽

  • 工具:mysqldump(邏輯備份)、gzip 壓縮、crontab 排程
  • 備份目錄:/var/lib/mysqlbackup/
  • 檔名格式:ip_bindass_YYYY-MM-DD_HHhMM.sql.gz

步驟 1:建立備份目錄

mkdir -p /var/lib/mysqlbackup
cd /var/lib/mysqlbackup

步驟 2:撰寫備份腳本 dbbackup.sh

#!/bin/bash
# === 修改以下參數 ===
USERNAME="db_user"
PASSWORD="db_pass"
DBNAME="target_db"
OUTDIR="/var/lib/mysqlbackup/"
# ====================

DATE=$(date +%Y-%m-%d_%Hh%M)
OUTFILE="ip_bindass_${DATE}.sql.gz"

# 執行備份並壓縮
/usr/bin/mysqldump --database "$DBNAME" --opt --single-transaction \
    -u"$USERNAME" -p"$PASSWORD" | /usr/bin/gzip -9 > "${OUTDIR}${OUTFILE}"

# 可選:保留最近 7 天備份,自動清理舊檔
find "$OUTDIR" -name "ip_bindass_*.sql.gz" -mtime +7 -delete

步驟 3:賦予執行權限

chmod +x /var/lib/mysqlbackup/dbbackup.sh

步驟 4:設定 crontab 定時執行

crontab -e

每天 15:20 執行(範例):

20 15 * * * /var/lib/mysqlbackup/dbbackup.sh

每小時執行:

0 * * * * /var/lib/mysqlbackup/dbbackup.sh

進階建議

  • 單一交易:--single-transaction 確保 InnoDB 一致性備份不鎖表
  • 遠端備份:搭配 scp/rsync/aws s3 cp 異地備份
  • 驗證備份:定期在測試環境 gunzip -c backup.sql.gz | mysql -u user -p test_db 驗證可還原
  • 多資料庫:--databases db1 db2 db3 或略過 --database 參數備份全部

還原操作

# 直接還原
gunzip -c backup.sql.gz | mysql -u user -p target_db

# 或解壓後還原
gunzip backup.sql.gz
mysql -u user -p target_db < backup.sql
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved