《Mysql學(xué)習(xí)mysql二進(jìn)制日志文件恢復(fù)數(shù)據(jù)庫(kù)》要點(diǎn):
本文介紹了Mysql學(xué)習(xí)mysql二進(jìn)制日志文件恢復(fù)數(shù)據(jù)庫(kù),希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
二進(jìn)制日志的文件的作用 MYSQL學(xué)習(xí)
??? mysql二進(jìn)制日志文件用來(lái)記錄所有用戶對(duì)數(shù)據(jù)庫(kù)操作,即記錄用戶對(duì)數(shù)據(jù)庫(kù)操作的sql語(yǔ)句.如果有此文件,當(dāng)數(shù)據(jù)庫(kù)發(fā)生意外時(shí),可以通過(guò)此文件查看到用戶在此文件記錄的時(shí)間段內(nèi)用戶所做的操作,再和數(shù)據(jù)庫(kù)備份配合使用,即可再現(xiàn)用戶操作,使數(shù)據(jù)庫(kù)恢復(fù).MYSQL學(xué)習(xí)
二進(jìn)制日志文件的弊端 MYSQL學(xué)習(xí)
二進(jìn)制日志文件開(kāi)啟后,所有對(duì)數(shù)據(jù)庫(kù)操作的記錄均會(huì)被記錄到此文件,MYSQL學(xué)習(xí)
所以,當(dāng)長(zhǎng)時(shí)間開(kāi)啟之后,日志文件會(huì)變得很大,占用磁盤空間.MYSQL學(xué)習(xí)
使用二進(jìn)制日志文件恢復(fù)數(shù)據(jù)庫(kù)MYSQL學(xué)習(xí)
開(kāi)啟日志文件 MYSQL學(xué)習(xí)
mysql默認(rèn)是不開(kāi)啟日志文件的功能的,需要我們手動(dòng)開(kāi)啟.操作如下:MYSQL學(xué)習(xí)
1、? 打開(kāi)mysql安裝目錄\my.ini(windows系統(tǒng)是my.ini文件,linux是my.cnf文件).MYSQL學(xué)習(xí)
2、? 找到[mysqld]這個(gè)標(biāo)簽,在此標(biāo)簽下面一行,添加語(yǔ)句:log-bin=binary-log.上面語(yǔ)句中,log-bin說(shuō)明要開(kāi)啟二進(jìn)制日志文件,binary-log是二進(jìn)制日志文件的名字.MYSQL學(xué)習(xí)
(測(cè)試的時(shí)候我設(shè)置的:log-bin=d:/mysql_log/logbin_ouyang.log)MYSQL學(xué)習(xí)
3、? 重啟mysql服務(wù).可以在mysql安裝目錄\data 文件夾下看到“binary-log.數(shù)字編號(hào)”文件,MYSQL學(xué)習(xí)
???如binary-log.000001.以后每重啟一次mysql服務(wù),都會(huì)重新生成二進(jìn)制日志文件,MYSQL學(xué)習(xí)
???文件名中的數(shù)字編號(hào)依次遞增.MYSQL學(xué)習(xí)
(你的上一步給出的文件名,加了個(gè)序號(hào) 還有一個(gè)總的文件 index文件 如圖1:)MYSQL學(xué)習(xí)
?MYSQL學(xué)習(xí)
恢復(fù)數(shù)據(jù)庫(kù) MYSQL學(xué)習(xí)
使用日志文件恢復(fù)數(shù)據(jù)庫(kù)必須要有一個(gè)數(shù)據(jù)庫(kù)備份(只要是在二進(jìn)制日志文件功能開(kāi)啟之后備份的就行).恢復(fù)數(shù)據(jù)庫(kù)時(shí),可以通過(guò)時(shí)間恢復(fù),也可以通過(guò)操作點(diǎn)恢復(fù).MYSQL學(xué)習(xí)
1、通過(guò)時(shí)間恢復(fù)辦法如下:MYSQL學(xué)習(xí)
如果我在2011-04-02 00:00:00時(shí)刻開(kāi)啟了二進(jìn)制日志文件功能,并備份了數(shù)據(jù)庫(kù)文件.且在2011-04-02 12:00:00數(shù)據(jù)庫(kù)發(fā)生異常,需要恢復(fù)到2011-04-02 10:00:00.則操作如下:MYSQL學(xué)習(xí)
l???????? 用備份將數(shù)據(jù)庫(kù)回復(fù)到2011-04-02 00:00:00時(shí)候的狀態(tài).MYSQL學(xué)習(xí)
l???????? 在命令行輸入如下命令:MYSQL學(xué)習(xí)
?MYSQL學(xué)習(xí)
mysqlbinlog --stop-date="你想要恢復(fù)的時(shí)間" 日志文件的目錄\binary-log.000001 | mysql -u root Cp (D:\mysql_log>mysqlbinlog logbin_ouyang.000007 --stop-date="2011-10-23 15:05:00"|mysql -uroot -proot)
這樣,系統(tǒng)會(huì)自動(dòng)執(zhí)行從二進(jìn)制日志有記錄開(kāi)始截止到2011-04-02 10:00:00,用戶所做過(guò)的所有操作.與stop-date對(duì)應(yīng)的,還有start-date屬性,可以設(shè)定執(zhí)行記錄的開(kāi)始時(shí)間.也可以兩個(gè)屬性都設(shè)置.MYSQL學(xué)習(xí)
2、通過(guò)操作點(diǎn)恢復(fù)辦法如下:MYSQL學(xué)習(xí)
在命令行中輸入mysqlbinlog D:\binary-log.000003 > D:\log.txt,執(zhí)行后打開(kāi)log.txt,MYSQL學(xué)習(xí)
查看里面語(yǔ)句,可以發(fā)現(xiàn):在每個(gè)操作之前,都會(huì)有一個(gè)獨(dú)特的編號(hào),如下紅字顯示:MYSQL學(xué)習(xí)
/*!*/; # at 450 /*編號(hào)450*/ #110402 15:31:50 server id 1 end_log_pos 529 Query thread_id=2 exec_time=0 error_code=0 SET TIMESTAMP=1301729510/*!*/; DROP TABLE `jwc`
此編號(hào)隨著操作數(shù)增多而變大.和時(shí)間一樣是一個(gè)標(biāo)記,通過(guò)操作點(diǎn)恢復(fù)的語(yǔ)句如下:MYSQL學(xué)習(xí)
mysqlbinlog --stop-position="450" mysql安裝目錄\data\binary-log.000001 ?| mysql -u root CpMYSQL學(xué)習(xí)
這樣,系統(tǒng)會(huì)自動(dòng)執(zhí)行二進(jìn)制日志中編號(hào)最低的語(yǔ)句到編號(hào)450語(yǔ)句.MYSQL學(xué)習(xí)
與stop-position對(duì)應(yīng)的,還有start-position屬性,可以設(shè)定執(zhí)行記錄的開(kāi)始編號(hào).MYSQL學(xué)習(xí)
附:(你應(yīng)該看看)MYSQL學(xué)習(xí)
1.0?????? mysqlbinlog 是mysql自帶的一個(gè)日志操作工具!MYSQL學(xué)習(xí)
2.0?????? 如果直接打開(kāi)log文件 可能會(huì)是亂碼,所以我們一般會(huì):MYSQL學(xué)習(xí)
????? D:\mysql_log>mysqlbinlog logbin_ouyang.000003 >log_3.txt? 復(fù)制下 然后用記事本打開(kāi)!MYSQL學(xué)習(xí)
???就可以清楚的看到 操作的編號(hào)了 或者說(shuō)(行號(hào))MYSQL學(xué)習(xí)
3.0?????? 如果發(fā)生了錯(cuò)誤的操作!如果可以的話!你應(yīng)該立馬停止數(shù)據(jù)庫(kù)!然后恢復(fù)數(shù)據(jù)!MYSQL學(xué)習(xí)
4.0?????? 如果只是去掉某一個(gè)語(yǔ)句,你可以選擇恢復(fù)兩次 ,如圖:MYSQL學(xué)習(xí)
?? MYSQL學(xué)習(xí)
D:\mysql_log>mysqlbinlog logbin_ouyang.000009 --stop-position=10625|mysql -uroot -proot D:\mysql_log>mysqlbinlog logbin_ouyang.000009 --start-position=10843|mysql -uroo t Cproot
5.0 如果發(fā)生 Could not read entry at offset 1478: Error in log format or read error. 類似的錯(cuò)誤!MYSQL學(xué)習(xí)
?? 請(qǐng)檢查你的編號(hào)是否正確!注意這個(gè)編號(hào) 不是一些編輯器顯示的那個(gè)行號(hào)哦,# at 450 /MYSQL學(xué)習(xí)
經(jīng)常delete 、update錯(cuò)了!所有給自己個(gè)文檔!當(dāng)然我也希望你永遠(yuǎn)的用不上這個(gè)文檔 ! 周末愉快!?(排版有的亂哈!多多原諒!)MYSQL學(xué)習(xí)
維易PHP培訓(xùn)學(xué)院每天發(fā)布《Mysql學(xué)習(xí)mysql二進(jìn)制日志文件恢復(fù)數(shù)據(jù)庫(kù)》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/11465.html