有點要注意 如果你誤刪了表 想通過這個恢復 必須恢復日志裡面有創建表的日志 不然的話是無法回復的 就是必須是從你開始創建表的時候就已經記錄日志了
恢復到哪個位置 就按照哪個位置來計算
mysql 5.0不支持增量備份
增量備份定義
mysql數據庫會以二進制形式 自動把用戶對mysql數據庫的操作 記錄到文件 當用戶希望恢復的時候可以使用備份文件 進行回復
增量備份會記錄 (dml 語句 建表語句 不會記錄select語句)
記錄的 (a 操作語句本身 b 操作的時間 c 操作的位置 position)
實例
配置 my.ini文件 或者 my.conf 啟用二進制備份
log-bin=e:/mysqldb/logbin.log 先設置mysql日志存放位置
配置好後 再啟動模樣上去了 就會在備份目錄多了2個文件
logbin.index 這個是索引文件 有哪些增量備份
logbin.000001 存放用戶對數據庫操作的文件
如果你想看看 這個 裡面是什麼東西 我們可以使用 mysql的bin目錄下面的一個工具查看
就是 mysqlbinlog.exe 這個東西看
首先用cmd進入 mysql的 bin目錄下面 然後執行
mysqlbinlog e:/mysqldb/logbin.000001
mysql 對於你的每一次操作 都會記錄一次時間 同時 給你分配一個位置 (pos)
換句話說 以後我們恢復 可以根據時間點來恢復 或者根據位置來恢復
比如說 我們把一個表個drop 了 那麼我們只要把表恢復到 drop之前就好了
時間點恢復
我們可以畫個流程圖
logbin.000001
insert ...... 3 2013-07-23 17:57:00
update ..... 4 2013-07-23 17:59:00
insert ...... 100 2013-07-23 19:57:00
drop ... 101 2013-07-23 20:57:00
恢復的話可以這麼寫
mysqlbinlog --stop-datatime="2013-07-23 20:50:00" e:/mysqldb/logbin.000001
上面這句的意思是 一直恢復到 2013-07-23 20:50:00 停止
mysqlbinlog --start-datatime="2013-07-23 20:50:00" e:/mysqldb/logbin.000001
上面這句的意思是 從2013-07-23 20:50:00 開始恢復
按照位置來恢復
mysqlbinlog --stop-position="100" e:/mysqldb/logbin.000001 |
上面這個語句意思是 恢復到100的位置
真實性恢復
按照位置恢復
mysqlbinlog --stop-position=4590 e:/mysqldb/logbin.000001 | mysql -uroot -p
按照時間恢復
mysqlbinlog --stop-datetime="2013-07-24 18:17:19" e:/mysqldb/logbin.000001 | mysql -uroot -p
可以控制從什麼時候開始 到什麼是結束
mysqlbinlog --start-position=4 --stop-position=106 yueliangd
ao_binglog.000001 > c:\\test1.txt
在工作中 可以每周一做一個全備份 就是 mysqldump
然後 啟用我們的增量備份 把過期時間設為 大於等於7天
如果數據庫崩潰了 就可以通過時間和位置來恢復
如何關閉 mysql 自動記錄日志
找到log-bin=mysql-bin,前面添加#即可。
個別版本需要關閉
binlog_format=mixed前面添加#,否則會出現mysql無法啟動。