【Mysql】閃回--mysqlbinlog flashback 5.6版本

小亮520cl發表於2016-04-01

簡介

DBA或者開發人員,有時會誤刪除或者誤更新資料。傳統的資料庫恢復方法是利用之前的備份再加上誤操作之前的binlog,來恢復資料。該方法需要耗費較長時間來恢復備份,甚至需要停機維護,嚴重降低系統的可用性。

MySQL的flashback功能是由淘寶的彭立勳,在的基礎上開發的。隨著binlog格式的變動和型別的增加,基於5.5.18的版本,無法用於目前主流的5.6版本的。因此平民軟體將該功能移植到5.6版本上,讓相關人員對資料庫有更強的掌控能力。

 

使用方法

  1. 定位誤操作的binlog位置

mysqlbinlog -v | grep

舉例

       mysqlbinlog -v --base64-output=decode-rows /var/lib/mysql/128.000110 | grep -B10 -A5 items

輸出類似為

 

# at 1093

#160215 15:22:39 server id 10  end_log_pos 1240 CRC32 0x6146d30e        Table_map: `zabbix`.`items` mapped to number 73

# at 1240

#160215 15:22:39 server id 10  end_log_pos 1824 CRC32 0xe2d557b8        Update_rows: table id 73 flags: STMT_END_F

'/*!*/;

### UPDATE `zabbix`.`items`

### WHERE

###   @1=24138

###   @2=0

###   @3=''

###   @4=''

###   @5=10106

 

 

  1. 確認相關位置

假設找到相關位置,開始位置1017,結束位置2563

mysqlbinlog     -v --base64-output=decode-rows  --start-position=1017 --stop-position=2563 /var/lib/mysql/128.000110


    2. 使用平民軟體提供的flashback軟體

mysqlbinlog   -B  -v   --start-position=1017 --stop-position=2563 /var/lib/mysql/128.000110 | mysql -u -p

       注意:恢復之前先在不使用的從機上做測試,測試成功後,再在主庫上做。

限制

       該軟體利用binlog中記錄了操作前的資料映象和操作後的資料映象。有如下限制

1)        binlog_format=row

2)        只支援insert、update、delete

3)        不支援drop 、truncate、alter等ddl語句

結論

       flashback功能,可以在緊急情況下,避免使用者漫長的資料庫恢復過程。讓高可用提升一個級別。
下載地址:


原文地址:http://www.cnblogs.com/youge-OneSQL/p/5249736.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2073694/,如需轉載,請註明出處,否則將追究法律責任。

相關文章