[分享]在 Windows 上使用批次檔遠端定期自動備份資料庫

Webmasters Discussion
站長們到此分享架站甘苦、管理心得等;歡迎大家多多提出意見喔!
(請勿發表任何跟站長經驗分享不相干的文章,違者砍文)

版主: 版主管理群

回覆文章
小斌
星球公民
星球公民
文章: 129
註冊時間: 2003-03-03 22:57
來自: 麥麥團
聯繫:

[分享]在 Windows 上使用批次檔遠端定期自動備份資料庫

文章 小斌 »

備份非常重要,請記得定期備份。 :)
以下提供您一種自動進行異地備份的方案!此方案的運作環境是裝有 MySQL 的 Windows NT/XP/2003 系統;這裡指的是用來進行備份工作的主機,資料庫主機可以是任何作業系統。
  1. 適當修改以下內容,然後存成一個 .bat 檔。

    代碼: 選擇全部

    @echo off
    REM /* MysqlBinPath: MySQL 可執行檔路徑,結尾請不要放 "\"
    REM  * BackupPath: 放置 sql 備份檔的位置,結尾請不要放 "\"
    REM  * DBhost: 資料庫主機的位址,可用 dn 或 ip
    REM  * DBuser: 資料庫使用者名稱
    REM  * DBpass: 資料庫使用者密碼
    REM  * DBname: 資料庫名稱 
    REM  * Argument: 其他的參數 */
    SET MysqlBinPath=D:\AppServ\mysql\bin
    SET BackupPath=D:\Backup
    SET DBhost=127.0.0.1
    SET DBuser=username
    SET DBpass=password
    SET DBname=databasename
    SET Argument=--opt --compress --force --default-character-set=utf8
    REM /* 以下不必修改 */
    
    REM /* 取得日期。參照: http://alexchuo.blogspot.com/2006/07/blog-post.html */
    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
    )
    
  2. 之後,只要執行這個 .bat 檔,就會在設定的目錄中依目前日期產生以 "西元年/月/日 星期幾.sql" 為檔名的備份檔了。您可以先自己執行一次試試看有沒有成功。
  3. 使用 Windows 的排程工具(控制台/排定的工作)定期執行這個 .bat 檔,就能輕鬆地遠端定期自動備份資料庫囉。
備份出來的 .sql 檔案並不會自動壓縮,您可以自行將這些 .sql 檔壓縮起來保存。
網頁13秒黃金定律 寫:無論頻寬如何變大、無論網路如何變快,一旦載入某個頁面所需的時間超過了13秒,使用者就會不耐煩而按下「上一頁」。
回覆文章

回到「站長交流」