《Mysql必讀在MySQL中使用mysqlbinlog flashback的簡單教程》要點(diǎn):
本文介紹了Mysql必讀在MySQL中使用mysqlbinlog flashback的簡單教程,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL學(xué)習(xí)簡介:
mysqlbinlog flashback功能是淘寶彭立勛(http://www.penglixun.com/)的一個(gè)很強(qiáng)勁的作品.
主要功能: 對rows格式的binlog可以進(jìn)行逆向操作.delete反向生成insert, update生成反向的update,insert反向生成delete.讓dba同學(xué)們也有機(jī)會簡單的恢復(fù)數(shù)據(jù).可恢復(fù):insert, update,delete相關(guān)的操作.
MYSQL學(xué)習(xí)演示一下使用過程:
MYSQL學(xué)習(xí)生成帶有flashback mysqlbinlog 工具:
MYSQL學(xué)習(xí)項(xiàng)止主頁:http://mysql.taobao.org/index.php/Patch_source_code#Add_flashback_feature_for_mysqlbinlog
MYSQL學(xué)習(xí)準(zhǔn)備好MySQL-5.5.18的源碼,這里用的Percona-MySQL-5.5.18源碼
cd mysql-5.5.18
wget http://mysql.taobao.org/images/0/0f/5.5.18_flashback.diff
patch -p0<5.5.18_flashback.diff
MYSQL學(xué)習(xí)即可以看到了mysqlbinlog , 因這里只為要mysqlbinlog這個(gè)程序,所以編譯MySQL時(shí)沒加特別的參數(shù).該工具是否具備flashback功能可以確認(rèn)一下是否有 “-B” 這個(gè)參數(shù).
MYSQL學(xué)習(xí)開始實(shí)驗(yàn):
MYSQL學(xué)習(xí)
mysql test
mysql> select count(*) from pic_url;
+----------+
| count(*) |
+----------+
| 786476 |
+----------+
1 row in set (0.11 sec)
mysql>delete from pic_url;
Query OK, 786476 rows affected (22.81 sec)
mysql>select count(*) from pic_url;
+----------+
| count(*) |
+----------+
| 0 |
+----------+
1 row in set (0.03 sec)
MYSQL學(xué)習(xí)
mysql>show binary logs;
...
| mysql-bin.000011 | 195001447 |
| mysql-bin.000012 | 106 |
+------------------+-----------+
MYSQL學(xué)習(xí)Tips:
定位日值,一般看當(dāng)前的log如果當(dāng)前的log文件比擬小,那么就是上一個(gè)文件至于為什么,這里就不講了.也可以用mysqlbinlog 去實(shí)際查看確認(rèn)一下.
MYSQL學(xué)習(xí)接下來就是要找到這個(gè)delete在log中position的變化區(qū)間了.這個(gè)沒什么技巧,通常使用:
MYSQL學(xué)習(xí)
./mysqlbinlog -v --base64-output=decode-rows /u1/mysql/logs/mysql-bin.000011 >11.sql
MYSQL學(xué)習(xí)然后對11.sql文件進(jìn)行搜索了表名,找到相應(yīng)的節(jié)點(diǎn).大表刪除通常最后的stop點(diǎn)都在文件最后.找到節(jié)點(diǎn)后就可以:
MYSQL學(xué)習(xí)
./mysqlbinlog -v --base64-output=decode-rows -B --start-position=377 --stop-position=195001377 /u1/mysql/logs/mysql-bin.000011>B11.sql
MYSQL學(xué)習(xí)同樣對B11.sql這個(gè)文件驗(yàn)證一下.看看結(jié)尾是和預(yù)期一樣.驗(yàn)證OK后就可以:
MYSQL學(xué)習(xí)
./mysqlbinlog -B --start-position=377 --stop-position=195001377 /u1/mysql/logs/mysql-bin.000011|mysql test
MYSQL學(xué)習(xí)如果表比擬大,則執(zhí)行著比擬慢.如不出錯請耐心等待.執(zhí)行完畢后:
MYSQL學(xué)習(xí)
mysql>select count(*) from pic_url;
+----------+
| count(*) |
+----------+
| 786476 |
+----------+
1 row in set (0.11 sec)
MYSQL學(xué)習(xí)數(shù)據(jù)又恢復(fù)了.
MYSQL學(xué)習(xí)注意:
為防止恢復(fù)報(bào)錯必要把:max_allowed_packet 改到最大值1G;
mysql>set global max_allowed_packet=1024*1024*1024;
MYSQL學(xué)習(xí)#max_allow_packet大小不夠時(shí)報(bào)錯如下:
ERROR 1153 (08S01) at line 403133: Got a packet bigger than ‘max_allowed_packet' bytes
MYSQL學(xué)習(xí)恢復(fù)操作有風(fēng)險(xiǎn),請?jiān)趥鋷觳僮骰蚴窃诮?jīng)驗(yàn)豐富的同學(xué)指導(dǎo)下進(jìn)行.
MYSQL學(xué)習(xí)二進(jìn)制文件上傳不到服務(wù)器上,傳到github上一個(gè)二進(jìn)制文件:https://github.com/wubx/mysql-binlog-statistic/tree/master/bin 在64的位的linux系統(tǒng)編譯的. 有必要的直接下載.
歡迎參與《Mysql必讀在MySQL中使用mysqlbinlog flashback的簡單教程》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/8045.html