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

Linux Shell 腳本實現 MySQL 定時全量/增量備份並自動上傳 FTP

     編輯:MySQL 資料庫相關知識

腳本核心功能

  • 支援全量備份(週日)與增量備份(其餘天)切換。
  • 檔案系統與 MySQL 全庫同步備份。
  • 備份文件自動上傳至指定 FTP 伺服器(支援 lftp/ncftp)。
  • 失敗郵件報警通知管理員。

關鍵配置區段

### System Setup ###
DIRS="/home/xxxx"                    # 要備份的本地目錄
BACKUP=/tmp/backup.$$
NOW=$(date +"%Y-%m-%d")
INCFILE="/home/xxxx"                 # 增量備份快照文件
DAY=$(date +"%u")                    # 週幾 (1-7)
FULLBACKUP="7"                       # 週日全量備份

### MySQL Setup ###
MUSER="chaos"; MPASS="password"; MHOST="host"
MYSQL="$(which mysql)"; MYSQLDUMP="$(which mysqldump)"; GZIP="$(which gzip)"

### FTP Setup ###
FTPD="/backup/xxxx/incremental"      # 增量備份遠程目錄
FTPU="chaos"; FTPP="password"; FTPS="xxx.xxx.com"
# 全量備份時 FTPD 自動切換為 "/backup/xxxx/full"

### Notification ###
EMAILID="admin@example.com"

備份邏輯流程

  1. 建立臨時備份目錄 $BACKUP。
  2. 判斷 $DAY == $FULLBACKUP 決定全量/增量:
    全量:tar -zcvf $BACKUP/fs-full-$NOW.tar.gz $DIRS
    增量:tar -g $INCFILE -zcvf $BACKUP/fs-i-$NOW-$i.tar.gz $DIRS(-g 指定增量快照文件)。
  3. 遍歷 SHOW DATABASES 逐庫導出:
    mysqldump -u $MUSER -h $MHOST -p$MPASS $db | gzip -9 > $BACKUP/mysql-$db.$NOW-$(date +%T).gz
  4. 用 lftp 登入 FTP,建立日期子目錄,mput * 上傳所有備份文件。
  5. 檢查 FTP 返回碼:成功刪除本地臨時文件;失敗發送郵件報警。

部署建議

  • 修改腳本中路徑、帳號密碼、郵件地址後放入 /etc/cron.daily/ 或 crontab -e 設定每日執行。
  • 確保伺服器安裝 lftp 或 ncftp、mail 指令可用。
  • 生產環境建議密碼寫在 .my.cnf 或單獨配置文件,腳本引用避免明文。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved