mysql數據庫在我們WEB開發與網站中是很重要的一個點,我們可以說要實時備份數據庫或每天一備份,但是如果我們每天手工備份,這樣可能會忘記了,下面我來介紹在windows下使用批處理方法實現定時mysql數據庫備份方法.
步驟非常的簡單,就三部搞定.
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 --Vevb.com
- 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%的用法參考.
新聞熱點
疑難解答