步驟非常的簡單,就三部搞定:
1.建立bat文件,bat文件內容
@echo off
set "a=%date% %time:~0,2%_%time:~3,2%"
E:/backdata/tool/mysqldump.exe -uroot -p111111 --database database1 database2> "E:/backdata/back_up(%a%).sql"
//以下是解釋
第一句,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的問題是大有好處的。
我自己mysql備份實例 xcopy
第一步:新建mysql數據庫備份腳本文件
新建一個記事本,然後重命名為: mysql_backup.bat 然後單擊右鍵選擇編輯,把下面的部分粘貼進來然後修改保存,比如我要備份activecode這個數據庫,腳本如下:
******************************************************mysql_backup.bat*******************************************************
代碼如下 復制代碼net stop mysql
xcopy "C:/Program Files/MySQL/MySQL Server 5.0/data/activecode/*.*" D:/db_backup/%date:~0,10%/ /y
net start mysql
******************************************************mysql_backup.bat*******************************************************
上面的D盤和db_backup等目錄大家都可以自行修改,腳本的意思就是復制taobao 這個目錄到D盤的db_backup這個目錄裡面的以當天為名稱的目錄裡面,比如: d:/backup/2010-05-23/ ,請大家注意,網上很多人轉載的說以%date:~4,10%這個來作為當天目錄是錯誤的。
第二步:新建Windows計劃任務
然後新建一個計劃任務,把mysql_backup.bat加入進去,設置為每天凌晨幾點運行下就行了。
第三步:數據庫恢復
將備份的文件夾進行替換即可。
還有一個方法是通過mysql的mysqldump把數據庫備份成.sql文件,這種方法的弊端就是數據庫小的話沒問題,但是數據庫稍微大點, 比如1g以上的時候,就特別慢,而且超級占用內存,速度絕對比復制文件慢,而且在備份的時候數據庫照樣是無法訪問的,這樣子還不如用上面我給的那種方式。
以上方法僅對有服務器控制權或者vps的有效,虛擬主機就只能用phpmyadmin或者帝國備份王備份了。