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

mysqldump + crontab 實現 MySQL 自動備份腳本完整範例

     編輯:MySQL 資料庫相關知識

Linux 下 mysqldump + crontab 自動異地備份 Shell 腳本

#!/bin/bash

## 來源資料庫(生產庫)連線資訊
SOURCE_USER=-uroot
SOURCE_HOST=-h10.10.10.12
SOURCE_PASS=-padministrator

## 目標資料庫(備份庫)連線資訊
BAK_USER=-uroot
BAK_HOST=-h10.10.10.22
BAK_PASS=-padministrator

## 匯出來源庫指定表並產生 SQL 檔
/var/mysql/bin/mysqldump --add-drop-table --opt $SOURCE_USER $SOURCE_HOST $SOURCE_PASS STATION username > /tmp/username.sql
/var/mysql/bin/mysqldump --add-drop-table --opt $SOURCE_USER $SOURCE_HOST $SOURCE_PASS STATION files > /tmp/files.sql

## 匯入到備份庫
/var/mysql/bin/mysql $BAK_USER $BAK_HOST $BAK_PASS STATION < /tmp/username.sql
/var/mysql/bin/mysql $BAK_USER $BAK_HOST $BAK_PASS STATION < /tmp/files.sql

部署自動化

  1. 儲存為 /usr/local/bin/mysql_auto_backup.sh,給予執行權限:chmod +x
  2. 編輯 crontab:crontab -e
  3. 加入排程(例:每天凌晨 2:30 執行):
    30 2 * * * /usr/local/bin/mysql_auto_backup.sh >> /var/log/mysql_backup.log 2>&1

生產環境建議強化

  • 密碼**不要寫在腳本**,使用 --defaults-extra-file 指向權限 600 的 .my.cnf
  • 加入錯誤判斷與通知(郵件/Slack/Telegram)
  • 備份檔壓縮(gzip)並上傳至異地儲存(S3/OSS/NFS)
  • 定期演練**還原測試**,未測試的備份不算備份
  • 考慮使用 Percona XtraBackup 熱備份(不鎖表、支援增量)

關鍵參數說明

  • --add-drop-table:匯入前先 DROP TABLE,避免重複錯誤
  • --opt:啟用 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 組合,提升匯出入效能
  • --single-transaction(InnoDB):一致性備份不鎖表,建議加上
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved