1. 程式人生 > >MyFlash使用總結

MyFlash使用總結

之前做mysql的回滾操作一直使用binlog2sql,這個工具使用起來很不錯,但是必須要連線到需要回滾的資料庫,需要賬號密碼,這一點使用起來不是很方便,因此測試了一下美團點評MyFlash工具,只需要從伺服器拷貝出binlog,在任意伺服器就可以生成回滾語句。
1.安裝
yum -y install git
yum install gcc* pkg-config glib2 libgnomeui-devel -y
git clone https://github.com/Meituan-Dianping/MyFlash.git
gcc -w pkg-config --cflags --libs glib-2.0

source/binlogParseGlib.c -o binary/flashback
vi /etc/profile
最後一行加上
alias flashback="/root/MyFlash/binary/flashback"
source /etc/profile
2.使用舉例
flashback --binlogFileNames=/root/mysql-bin.001312 --start-datetime=“2019-01-07 07:58:00” --stop-datetime=“2019-01-07 07:59:00” --databaseNames=資料庫名 --tableNames=表名 --sqlTypes=‘UPDATE’,‘DELETE’ —outBinlogFileNameBase=rollbackbinlog
執行回滾binlog
mysqlbinlog --no-defaults rollbackbinlog |mysql -uroot -p
以下引數可以任意組合

databaseNames

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

tableNames

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

start-position

指定回滾開始的位置。如不指定,從檔案的開始處回滾。請指定正確的有效的位置,否則無法回滾

stop-position

指定回滾結束的位置。如不指定,回滾到檔案結尾。請指定正確的有效的位置,否則無法回滾

start-datetime

指定回滾的開始時間。注意格式必須是 %Y-%m-%d %H:%M:%S。 如不指定,則不限定時間

stop-datetime

指定回滾的結束時間。注意格式必須是 %Y-%m-%d %H:%M:%S。 如不指定,則不限定時間

sqlTypes

指定需要回滾的sql型別。目前支援的過濾型別是INSERT, UPDATE ,DELETE。多個型別可以用“,”隔開。

maxSplitSize

一旦指定該引數,對檔案進行固定尺寸的分割(單位為M),過濾條件有效,但不進行回滾操作。該引數主要用來將大的binlog檔案切割,防止單次應用的binlog尺寸過大,對線上造成壓力

binlogFileNames

指定需要回滾的binlog檔案,目前只支援單個檔案,後續會增加多個檔案支援

outBinlogFileNameBase

指定輸出的binlog檔案字首,如不指定,則預設為binlog_output_base.flashback

 logLevel

僅供開發者使用,預設級別為error級別。在生產環境中不要修改這個級別,否則輸出過多

include-gtids

指定需要回滾的gtid,支援gtid的單個和範圍兩種形式。

exclude-gtids