Windows 下 MySQL 簡單定時自動備份、刪除過期備份
問題
MySQL Workbench 客戶端雖然好用,但並不提供自動備份功能。手工備份,確實繁瑣。
環境
- Windows Server 2012
- MySQL 5.6.24
思考
MySQL 提供了 mysqldump 來進行備份。那麼我們可否使用該工具,結合Windows 的定時任務功能,來實現 MySQL 定時自動備份呢?
解決
新建一個 資料庫備份檔案存放目錄,本例為D:\db_backup
.新建一個批處理檔案,可以起任意名,本例為mysql_backup_tool.bat
,檔案內容如下:
rem auther:www.waylau.com
rem date:20150724
rem ******MySQL backup start********
@echo off
forfiles /p "D:\db_backup" /m emsc_backup_*.sql -d -30 /c "cmd /c del /f @path"
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"
C:\mysql\bin\mysqldump --opt --single-transaction=TRUE --user=root --password=123456 --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "emsc" > D:\db_backup\emsc_backup_%Ymd%.sql
@echo on
rem ******MySQL backup end********
其中,forfiles
刪除過期檔案的命令,-d
-30
刪除30天的檔案。C:\mysql\bin\mysqldump
為 MySQL 安裝時,mysqldump.exe
檔案所在路徑,--user=root
指 MySQL 使用者名稱為
root
--password=123456
指 MySQL 密碼為123456
,"emsc"
為要備份的資料庫的名稱,emsc_backup_%Ymd%.sql
, 為備份檔案的名稱,這個名稱是根據當前的時間規則生成的,比如今天生產的備份檔案,名稱為emsc_backup_20150724012120.sql
定期任務
一般的,我們的備份週期是1天,備份的儲存時間是30天,30天后的備份檔案將被刪除。備份的時間應選擇在系統執行負荷最小的時間,比如凌晨1點到3點。具體步驟如下: 在“伺服器管理”--“工具”中選擇“任務計劃程式”
選擇“建立基本任務”
任務的名稱起為“MySQL backup” ,點選“下一步”
選擇“每天”,點選“下一天”
設定開始備份的時間,按實際的需要選擇一個伺服器負荷最小的時間,點選“下一步”
選擇要啟動的程式,這裡我們選擇 mysql_backup_tool.bat 檔案
點選“完成”後,就能在計劃任務列表中看到“MySQL backup”。