使用批處理文件執行mysql備份,然後用windows自代的任務計劃執行
1.使用批處理自動的XCOP命令
net stop mysql
xcopy D:\wwwroot\xuxu123\*.* D:\wwwroot\xuxu123\%date:~,10%\ /y
net start mysql
2.使用mysql的mysqldump指令生成sql腳本
@echo on
REM------------------------backup sq_xuxu123 which is InnoDB-----------------------------
cd D:/Program Files/MySQL/MySQL Server 5.0/bin
set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set filename=taoche_db_%date:~,10%
mysqldump.exe sq_xuxu123 -uroot -pxuxu_123 > D:/ssh/database_backup/%filename%
@echo off
依次解釋一下每句代碼的意思:
- 第四行:刪除指定目錄下的文件名包含有“bugdb_”字樣的sql文件。因爲這個代碼是我先前寫的,在公司的服務器上每天晚上跑一次。所以每次備份之前,先刪除頭天已備份成功的文件。
- 第五行:進入MySQL的bin目錄,因爲在此目錄下有個mysqldump.exe的文件,該文件時MySQL數據庫自帶的備份和恢復MySQL數據庫的工具,這個腳本文件正是用到該工具。
- 第六行:取當前系統日期的年份,以四位數字表示,如2010。
- 第七行:取當前系統日期的月份,以兩位數字表示,如03。
- 第八行:取當前系統日期的日期,以兩位數字表示,如12。
- 第九行:定義備份文件名,最終的文件名以bugdb_20100312.sql形式存在,即文件名加日期的形式。
- 第十行:執行備份。
再來解釋一下mysqldump的語法格式。格式爲:
- mysqldump.exe "要備份的數據庫名" -u(接用戶名) -p(接密碼) > "備份文件存放的路徑及文件名"
其中“>”的作用是輸出重定向,即把mysqldump.exe備份的數據輸出到一個文件裏並保存。
將以上腳本複製到一個文本文件裏,並另存爲*.bat,如backup.bat的批處理文件,接下來會要用到該文件,我把它存在D:/scripts/backup_bugdb.bat。
還原數據庫的命令如下:
D:/html/wamp/mysql/bin/mysql.exe -uroot -p123456 --default-character-set=utf8 bugdb < F:/bugdb_20100312.sql