之前做mysql的回滾操作一直使用binlog2sql,這個工具使用起來很不錯,但是必須要連線到需要回滾的資料庫,需要賬號密碼,這一點使用起來不是很方便,因此測試了一下美團點評myflash工具,只需要從伺服器拷貝出binlog,在任意伺服器就可以生成回滾語句。
1.安裝
yum -y install git
yum install gcc* pkg-config glib2 libgnomeui-devel -y
git clone
cd myflash/
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
如何利用 Myflash 解析 binlog
1 首先需要準備好 myflash 測試環境 這裡的測試環境是 redhat linux 6.5,直接解壓 myflash 無法執行,發現 glibc 版本不匹配,需要 2.14 版本。因此首先需要編譯新版本的 glibc。wget wget tar xvf glibc 2.14.tar.gz ta...
資料恢復系列 開源恢復工具MyFlash
一 簡介 今天來聊聊如何使用開源myflash 二 安裝 2 建議使用阿里源 wget o etc yum.repos.d centos base.repo 更換為阿里源 yum y install libgnomeui devel gcc w pkg config cflags libs glib...
EJunGrid使用總結
1 1。0版沒有實現垂直方向上的對齊,procedure tobgui reportdesign.griddrawcelltext acanvas tcanvas const arect trect const acoord tpoint agrid tzjgrid const text strin...