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

每日 MySQL 自動備份 Shell 腳本實作指南

     編輯:MySQL 綜合教學

每日 MySQL 自動備份 Shell 腳本實作指南

為了確保資料安全,建立自動化的每日資料庫備份機制至關重要。本文提供一個成熟的 Shell 腳本範例,利用 mysqldump 於每天固定時間備份 MySQL 資料,並自動清理舊備份檔案。

腳本完整代碼

#!/bin/bash
# 每天早上 4 點執行 MySQL 備份
# 使用方式:
# chmod 700 backup.sh
# crontab -e 加入:0 4 * * * /home/erya/run/moniter/mysql_backup.sh

user="radius"
password=""
host="localhost"
db_name="radius"

# 備份目錄設定
base_dir="/home/backup"
backup_log="${base_dir}/mysql_backup.log"
backup_path=${base_dir}

# 檔案命名:資料庫名稱-日期.sql.gz
date=$(date +"%Y-%m-%d")
filename=$backup_path/$db_name-$date.sql.gz

# 設定檔案權限掩碼,確保備份檔案只有擁有者可讀寫
umask 177

# 執行備份並壓縮
mysqldump --user=$user --password=$password --host=$host $db_name | gzip > $filename

# 刪除 10 天前的舊備份檔案
find $backup_path/* -mtime +10 -exec rm {} \;

# 記錄備份完成時間
echo "backup finished at $(date +'%Y-%m-%d %H:%M:%S')" >> "$backup_log"

關鍵參數說明

  • crontab 排程:0 4 * * * 表示每天凌晨 4 點自動執行
  • umask 177:確保產生的備份檔案權限為 600(僅擁有者可讀寫)
  • gzip 壓縮:透過管道直接壓縮,節省磁碟空間
  • find -mtime +10:自動清理超過 10 天的舊備份,避免磁碟爆滿
  • 日誌記錄:每次備份完成時間會追加寫入 log 檔,方便稽核

部署步驟

  1. 將腳本儲存為 mysql_backup.sh
  2. 執行 chmod 700 mysql_backup.sh 賦予執行權限
  3. 使用 crontab -e 加入排程任務
  4. 確認 /home/backup 目錄存在且具備寫入權限

此腳本經過實務驗證,穩定可靠,適合生產環境部署。建議定期檢查備份日誌與檔案完整性,確保災難發生時能順利還原。

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