天天看點

美團點評MyFlash個人安裝使用

美團點評myflash安裝

git clone https://github.com/meituan-dianping/myflash.git

幾點需要注意的細節

binlog格式必須為row,且binlog_row_image=full

僅支援5.6與5.7

隻能復原dml(增、删、改)

之前本人常用的binlog復原工具binlog2sql。其上手比較容易。是采用業界提供的解析binlog的庫,然後進行sql構造,且實作上受制于binlog庫提供的功能。

myflash實作原理是通過binlog event進行復原,每個binlog event中event header有個type_code,其中insert為30,update為31,delete為32。對于insert和delete兩個相反的操作,隻需把type_code互換,則在binlog event級别完成復原

而update語句相對繁瑣,需要對binlog event中data部分修改前資料和修改後資料的内容進行反轉,而update語句復原的核心在于計算出每個修改前資料和修改後資料的長度。

官方文檔建議進入安裝包目錄進行

動态編譯連結

<code>gcc -w</code>pkg-config --cflags --libs glib-2.0<code>source/binlogparseglib.c -o binary/flashback</code>

靜态編譯連結

<code>gcc -w -g</code>pkg-config --cflags glib-2.0<code>source/binlogparseglib.c -o binary/flashback /usr/lib64/libglib-2.0.a -lrt</code>

這裡我直接使用安裝包目錄下binary目錄下flashback可執行檔案進行使用,有可能會報出glibc版本過低,自行更新2.14進行使用,更新代碼如下

安裝後可以直接使用可執行檔案進行使用。

下列參數可以任意組合

一般常用于時間段復原及pos點復原,先确認異常sql的pos點位或時間點位

通過flashback指令轉換binlog内容,之後使用binary目錄下的mysqlbing解析成可執行sql後校驗完成并應用

當檔案超過20m時候需要使用切片參數進行執行

復原大檔案

繼續閱讀