MyFlash 回滾mysql binlog

簡介:MyFlash是由美團點評公司技術工程部開發維護的一個回滾DML操作的工具。該工具通過解析v4版本的binlog,完成回滾操作。相對已有的回滾工具,其增加了更多的過濾選項,讓回滾更加容易。

安裝:
git clone https://github.com/Meituan-Dianping/MyFlash.git
cd MyFlash
gcc -w pkg-config --cflags --libs glib-2.0 source/binlogParseGlib.c -o binary/flashback
cd binary
./flashback --help --查看幫助

使用:
下面的這些參數是可以任意組合的。

* 1.databaseNames

指定需要回滾的數據庫名。多個數據庫可以用“,”隔開。如果不指定該參數,相當於指定了所有數據庫。

  • 2.tableNames
    指定需要回滾的表名。多個表可以用“,”隔開。如果不指定該參數,相當於指定了所有表。
  • 3.start-position
    指定回滾開始的位置。如不指定,從文件的開始處回滾。請指定正確的有效的位置,否則無法回滾
  • 4.stop-position
    指定回滾結束的位置。如不指定,回滾到文件結尾。請指定正確的有效的位置,否則無法回滾
  • 5.start-datetime
    指定回滾的開始時間。注意格式必須是 %Y-%m-%d %H:%M:%S。 如不指定,則不限定時間
  • 6.stop-datetime
    指定回滾的結束時間。注意格式必須是 %Y-%m-%d %H:%M:%S。 如不指定,則不限定時間
  • 7.sqlTypes
    指定需要回滾的sql類型。目前支持的過濾類型是INSERT, UPDATE ,DELETE。多個類型可以用“,”隔開。
  • 8.maxSplitSize
    一旦指定該參數,對文件進行固定尺寸的分割(單位爲M),過濾條件有效,但不進行回滾操作。該參數主要用來將大的binlog文件切割,防止單次應用的binlog尺寸過大,對線上造成壓力
  • 9.binlogFileNames
    指定需要回滾的binlog文件,目前只支持單個文件,後續會增加多個文件支持
  • 10.outBinlogFileNameBase
    指定輸出的binlog文件前綴,如不指定,則默認爲binlog_output_base.flashback
  • 11.logLevel
    僅供開發者使用,默認級別爲error級別。在生產環境中不要修改這個級別,否則輸出過多
  • 12.include-gtids
    指定需要回滾的gtid,支持gtid的單個和範圍兩種形式。
  • 13.exclude-gtids
    指定不需要回滾的gtid,用法同include-gtids

測試:
/root/test/MyFlash/binary/flashback --binlogFileNames=/mysqllog/mysql-bin.000011 --start-datetime="2018-01-04 13:50:00" --stop-datetime="2018-01-04 14:35:00" --databaseNames=test --tableNames=test_tb --sqlTypes='UPDATE','DELETE' --outBinlogFileNameBase=test_tb
mysqlbinlog --no-defaults --base64-output=decode-rows -vv binlog_output_base.flashback --查看回滾sql
mysqlbinlog --no-defaults binlog_output_base.flashback |mysql -uroot -pyourpass --執行恢復
可以在.bash_profile增加
alias flashback="/root/test/MyFlash/binary/flashback"
以後即可這樣使用
flashback --binlogFileNames=/mysqllog/mysql-bin.000011 --start-datetime="2018-01-04 13:50:00" --stop-datetime="2018-01-04 14:35:00" --databaseNames=test --tableNames=test_tb --sqlTypes='UPDATE','DELETE' --outBinlogFileNameBase=test_tb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章