有點(diǎn)要注意 如果你誤刪了表 想通過(guò)這個(gè)恢復(fù) 必須恢復(fù)日志里面有創(chuàng)建表的日志 不然的話是無(wú)法回復(fù)的 ?就是必須是從你開始創(chuàng)建表的時(shí)候就已經(jīng)記錄日志了? 恢復(fù)到哪個(gè)位置 就按照哪個(gè)位置來(lái)計(jì)算 mysql ?5.0不支持增量備份 增量備份定義 ? ? mysql數(shù)據(jù)庫(kù)會(huì)以二進(jìn)
有點(diǎn)要注意 如果你誤刪了表 想通過(guò)這個(gè)恢復(fù) 必須恢復(fù)日志里面有創(chuàng)建表的日志 不然的話是無(wú)法回復(fù)的 ?就是必須是從你開始創(chuàng)建表的時(shí)候就已經(jīng)記錄日志了?
恢復(fù)到哪個(gè)位置 就按照哪個(gè)位置來(lái)計(jì)算
mysql ?5.0不支持增量備份
增量備份定義
? ? mysql數(shù)據(jù)庫(kù)會(huì)以二進(jìn)制形式 自動(dòng)把用戶對(duì)mysql數(shù)據(jù)庫(kù)的操作 記錄到文件 當(dāng)用戶希望恢復(fù)的時(shí)候可以使用備份文件 進(jìn)行回復(fù)
? ? 增量備份會(huì)記錄 (dml 語(yǔ)句 建表語(yǔ)句 不會(huì)記錄select語(yǔ)句)
? ? 記錄的 (a 操作語(yǔ)句本身 b 操作的時(shí)間 ?c 操作的位置 position)
實(shí)例
? ? 配置 my.ini文件 或者 my.conf 啟用二進(jìn)制備份
???log-bin=e:/mysqldb/logbin.log ? ?先設(shè)置mysql日志存放位置
? ? 配置好后 再啟動(dòng)模樣上去了 就會(huì)在備份目錄多了2個(gè)文件?
? ? logbin.index ?這個(gè)是索引文件 有哪些增量備份
????logbin.000001 ? 存放用戶對(duì)數(shù)據(jù)庫(kù)操作的文件
? ? 如果你想看看 這個(gè) 里面是什么東西 我們可以使用 mysql的bin目錄下面的一個(gè)工具查看?
? ? 就是 mysqlbinlog.exe ?這個(gè)東西看?
????
? ? 首先用cmd進(jìn)入 mysql的 bin目錄下面 然后執(zhí)行
? ? mysqlbinlog e:/mysqldb/logbin.000001
????
mysql 對(duì)于你的每一次操作 都會(huì)記錄一次時(shí)間 同時(shí) 給你分配一個(gè)位置 (pos)
換句話說(shuō) 以后我們恢復(fù) 可以根據(jù)時(shí)間點(diǎn)來(lái)恢復(fù) 或者根據(jù)位置來(lái)恢復(fù)
比如說(shuō) 我們把一個(gè)表個(gè)drop 了 那么我們只要把表恢復(fù)到 drop之前就好了?
時(shí)間點(diǎn)恢復(fù)
? ? 我們可以畫個(gè)流程圖
? ? 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
????
? ? 恢復(fù)的話可以這么寫
? ? mysqlbinlog ?--stop-datatime="2013-07-23 20:50:00"?e:/mysqldb/logbin.000001
? ? 上面這句的意思是 一直恢復(fù)到?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 ?開始恢復(fù)
按照位置來(lái)恢復(fù)
??????? mysqlbinlog ?--stop-position="100"?e:/mysqldb/logbin.000001? |?
????? ? 上面這個(gè)語(yǔ)句意思是 恢復(fù)到100的位置
真實(shí)性恢復(fù)
按照位置恢復(fù)
mysqlbinlog ?--stop-position=4590?e:/mysqldb/logbin.000001? | mysql -uroot -p
按照時(shí)間恢復(fù)
mysqlbinlog ?--stop-datetime="2013-07-24 18:17:19"?e:/mysqldb/logbin.000001? | mysql -uroot -p
可以控制從什么時(shí)候開始 到什么是結(jié)束
mysqlbinlog?--start -position=4? --stop-position=106
yueliangd
ao_binglog.000001 > c:\\test1.txt
在工作中 可以每周一做一個(gè)全備份 就是 mysqldump ?
然后 啟用我們的增量備份 把過(guò)期時(shí)間設(shè)為 大于等于7天
如果數(shù)據(jù)庫(kù)崩潰了 就可以通過(guò)時(shí)間和位置來(lái)恢復(fù)
如何關(guān)閉 mysql 自動(dòng)記錄日志
找到log-bin=mysql-bin,前面添加#即可。
個(gè)別版本需要關(guān)閉
binlog_format=mixed前面添加#,否則會(huì)出現(xiàn)mysql無(wú)法啟動(dòng)。
作者:ebw123 發(fā)表于2013-7-24 22:27:12 原文鏈接
閱讀:109 評(píng)論:0 查看評(píng)論
原文地址:mysql實(shí)現(xiàn)增量備份, 感謝原作者分享。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com