Friday, May 22, 2009

Windows系統自動備份Mysql資料庫

先撰寫一個批次檔, 內容如下:

@echo off
REM /* MysqlBinPath: MySQL 可執行檔路徑,結尾請不要放 "\"
REM  * BackupPath: 放置 sql 備份檔的位置,結尾請不要放 "\"
REM  * DBhost: 資料庫主機的位址,可用 dn 或 ip
REM  * DBuser: 資料庫使用者名稱
REM  * DBpass: 資料庫使用者密碼
REM  * DBname: 資料庫名稱
REM  * Argument: 其他的參數 */
SET MysqlBinPath=MySQL\bin的路徑( eg. D:\Mysql\bin )
SET BackupPath=備份的資料夾 (eg. D:\backup)
SET DBhost=機器IP ( eg. 211.58.1.2)
SET DBuser=資料庫使用者名稱 (eg. root)
SET DBpass=資料庫使用者密碼 (eg. 12345)
SET DBname=databaseName
SET Argument=--opt --compress --force --default-character-set=utf8
REM /* 以下不必修改 */
REM /* 取得日期。
FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO (
   SET _MyDate=%%a-%%b-%%c %%d
)
REM /* 以日期為檔名,匯出 .sql 檔案。 */
echo 資料庫 %DBname% 備份中……
"%MysqlBinPath%\mysqldump" --host=%DBhost% --user=%DBuser% --password=%DBpass% %Argument% %DBname%  >; "%BackupPath%\%_MyDate%.sql"
REM /* 偵錯處理,發生錯誤就停住畫面以便看清楚錯誤訊息。 */
IF NOT %ERRORLEVEL% == 0 (
   del "%BackupPath%\%_MyDate%.sql
   echo.
   echo 不好了,好像出了什麼問題的樣子。請看上面的訊息吧!
   pause
)






然後再把這個批次擋加入排定工作裡.


1. 控制台 -> 排定的工作


tmp1


2. 新增排定工作

tmp2





3. 下一步


 image  



4. 瀏覽


image  



5. 選擇剛剛做好的批次檔


tmp3





6. 因為要每日都備份, 所以我選擇 每日


tmp4 



7. 選擇工作的 開始時間, 執行方式 開始日期


tmp5





8.  這裡就輸入您的使用者名稱登入密碼

使用者名稱的格式是: 電腦名稱\使用者名稱


tmp6 



9. 點一下 完成 就OK了!


tmp7

1 comment:

  1. 請問
    我手動備份資料庫時 是選擇Replace來備份
    如果照你給的程式檔備份的話怎麼改成Replace呢

    ReplyDelete