溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MyFlash 回滾mysql binlog

發(fā)布時(shí)間:2020-06-21 21:17:53 來(lái)源:網(wǎng)絡(luò) 閱讀:709 作者:wangkunj 欄目:MySQL數(shù)據(jù)庫(kù)

簡(jiǎn)介:MyFlash是由美團(tuán)點(diǎn)評(píng)公司技術(shù)工程部開(kāi)發(fā)維護(hù)的一個(gè)回滾DML操作的工具。該工具通過(guò)解析v4版本的binlog,完成回滾操作。相對(duì)已有的回滾工具,其增加了更多的過(guò)濾選項(xiàng),讓回滾更加容易。

安裝:
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 --查看幫助

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

* 1.databaseNames

指定需要回滾的數(shù)據(jù)庫(kù)名。多個(gè)數(shù)據(jù)庫(kù)可以用“,”隔開(kāi)。如果不指定該參數(shù),相當(dāng)于指定了所有數(shù)據(jù)庫(kù)。

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

測(cè)試:
/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 --執(zhí)行恢復(fù)
可以在.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

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI