MySQL 定時備份可以通過結合操作系統的定時任務工具(如 Linux 的 crontab、Windows 的任務計劃程序)和 MySQL 備份命令(如 mysqldump)來實現。以下是具體實現方法:
首先創建一個備份腳本(.sh 文件),使用 mysqldump 命令導出數據庫,并添加壓縮、日志記錄等功能。
#!/bin/bash
DB_USER="root"
DB_PASS="your_password"
DB_HOST="localhost"
DB_NAME="your_database"
BACKUP_DIR="/var/mysql_backup"
LOG_FILE="/var/mysql_backup/backup_log.txt"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7
mkdir -p $BACKUP_DIR
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz
if [ $? -eq 0 ]; then
echo "[$DATE] 備份成功: ${DB_NAME}_${DATE}.sql.gz" >> $LOG_FILE
else
echo "[$DATE] 備份失敗" >> $LOG_FILE
fi
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -type f -mtime +$RETENTION_DAYS -delete
-
替換
DB_USER、DB_PASS、DB_NAME 等參數為實際值。
-
使用
gzip 壓縮備份文件,節省存儲空間。
-
自動記錄備份日志,便于排查問題。
-
自動刪除超過
RETENTION_DAYS 天的備份文件,避免磁盤占滿。
chmod +x /path/to/mysql_backup.sh
通過 crontab 配置定時執行備份腳本。
-
編輯定時任務:
-
添加定時規則(例如:每天凌晨 2 點執行備份):
0 2 * * * /path/to/mysql_backup.sh
-
時間格式說明:
分 時 日 月 周,* 表示任意值。
-
示例:
*/30 * * * * 表示每 30 分鐘執行一次。
-
保存退出,crontab 會自動生效。
-
編寫批處理腳本(mysql_backup.bat):
@echo off
set "DB_USER=root"
set "DB_PASS=your_password"
set "DB_HOST=localhost"
set "DB_NAME=your_database"
set "BACKUP_DIR=C:\mysql_backup"
set "DATE=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%"
set "DATE=%DATE: =0%" # 處理時間中的空格
mkdir %BACKUP_DIR% 2>nul
# 執行備份(需將mysql安裝目錄的bin路徑添加到環境變量)
mysqldump -h %DB_HOST% -u %DB_USER% -p%DB_PASS% %DB_NAME% > %BACKUP_DIR%\%DB_NAME%_%DATE%.sql
# 記錄日志
echo %DATE% 備份完成 >> %BACKUP_DIR%\backup_log.txt
-
通過「任務計劃程序」設置定時任務:
-
打開「控制面板 → 管理工具 → 任務計劃程序」。
-
創建基本任務,設置觸發時間(如每天凌晨 2 點),選擇執行上述批處理腳本。
-
權限問題:
-
Linux 中,執行腳本的用戶需要有
mysqldump 執行權限和備份目錄的讀寫權限。
-
避免在腳本中明文存儲數據庫密碼(可通過
~/.my.cnf 配置文件隱藏密碼,見下方補充)。
-
備份驗證:
-
定期檢查備份文件是否生成,大小是否合理。
-
偶爾通過
gunzip < 備份文件.sql.gz | mysql -u 用戶名 -p 數據庫名 測試恢復流程。
-
遠程備份:
-
若數據庫在遠程服務器,
DB_HOST 改為遠程 IP,確保網絡連通且 MySQL 允許遠程連接。
-
隱藏密碼(推薦):在 Linux 中創建 ~/.my.cnf 文件,避免腳本明文暴露密碼:
[mysqldump]
user=root
password=your_password
然后腳本中可省略 -u 和 -p 參數:mysqldump -h $DB_HOST $DB_NAME | gzip > ...。
通過以上方法,可以實現 MySQL 數據庫的自動化定時備份,保障數據安全。