步驟非常的簡單,就三部搞定:
1.建立bat檔案,bat檔案內容
代碼如下 |
複製代碼 |
@echo off set host=localhost set username=root set passward=ansure set database=weihe set backup_path=D:/db_backup/ echo "Mysql Backup , please waitting" mysqldump -h%host% -u%username% -p%passward% --skip-lock-tables %database% > %backup_path%/%database%_%date:~0,10%.sql echo "OK ! "
|
//以下是解釋
第一句,bat檔案的通用命令。
第二句,設定月份格式,為了檔案名稱不重複,並且知道當前檔案的產生日期,產生的格式為:back_up(2013-04-25 星期四 18_00).sql 紅色的這段。
第三句,我是將mysqldump.exe從安裝檔案拷貝到這個目錄的,目的是為了防止空格(E:/backdata/tool/mysqldump.exe這段不能有空格,空格需要非常特殊的處理,這裡不寫詳細的)。-u後面是使用者名稱,注意沒有空格哦, -u root這樣是要出錯的,同樣-p也是。--database後面可以跟多個資料庫。
2.建立計劃任務,執行bat檔案
到windows的任務計劃裡建立一個計劃任務,我的計劃任務執行是1個月執行一次上面的bat檔案,完整備份一次資料庫,以sql的形式,一般情況下設定在淩晨3點左右。
為什麼一個月一次呢,因為我們還有增量備份,如果太頻繁的話,消耗磁碟空間,也會消耗大量的資料庫效能。所以建議是較長的時間周期,做好增量備份就可以應付了。
3.mysql的增量備份
通過上面的方案,可以將資料庫恢複到上個月的資料,但是如果只有上面的備份方案,這個月的資料就不能找回了。配合增量備份方案,就可以恢複到過去的任何時候,達到比較實用的程度。那麼增量備份是怎麼樣備份的呢?
只需在my.ini檔案末尾加上這個配置就可以了:
代碼如下 |
複製代碼 |
#log log-error=D:/backdata/logs/error.log log_bin=D:/backdata/logs/logbin.log long_query_time=2 log-slow-queries=D:/backdata/logs/slowquery.log |
這裡有用的是第二行,產生的bin檔案。其它幾個不是用於備份的,但感覺很有用的日誌,而且佔用空間不大,對於分析mysql的問題是大有好處的。
4.直接備份資料庫檔案
建立db_bak.bat,寫入以下代碼
*******************************Code Start*****************************
代碼如下 |
複製代碼 |
net stop mysql xcopy c:/mysql/data/bbs/*.* c:/db_bak/bbs/%date:~0,10%/ /S /I net start mysql
|
*******************************Code End *****************************
然後使用Windows的“計劃任務”定時執行該批處理指令碼即可。(例如:每天淩晨3點執行back_db.bat)
解釋:備份和恢複的操作都比較簡單,完整性比較高,控製備份周期比較靈活,例如,用%date:~0,10%。此方法適合有外掛式主控件但對mysql沒有管理經驗的使用者。缺點是佔用空間比較多,備份期間mysql會短時間斷開(例如:針對30M左右的資料庫耗時5s左右),針對%date:~0,10%的用法參考