mysql 誤刪除資料恢復

2021-10-16 16:48:40 字數 2808 閱讀 6546

第一步:保證mysql已經開啟binlog(值必須為on)

開啟binlog方法

第二步:檢視binlog存放日誌檔案目錄

第三步:檢視binlog_row_image(值必須為full)

修改 binlog_row_image

第四步:檢視binlog模式(必須為行級模式row)

修改模式方法

第五步:安裝myflash(只支援mysql5.6和5.7)

git clone 

cd myflash/

yum install glib2*

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

第六步:測試資料

刪除id為4的資料

第七步:生成回滾資料檔案

cd myflash/binary

./flashback --start-datetime='2021-01-05 12:40:00' --stop-datetime='2021-01-05 12:41:00' --sqltypes='delete' --binlogfilenames=/www/server/data/mysql-bin.000005

第八步:恢復到資料庫

/www/server/mysql/bin/mysqlbinlog binlog_output_base.flashback |mysql -uroot -p
具體命令

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

參考文章

恢復誤刪除資料

用log explorer試一下!下面是對該軟體的介紹 解壓縮密碼 www.heibai.net 序號產生器產生的是註冊碼,是兩個 用解壓縮密碼解開後,壓縮包裡也有乙個序號產生器的 開啟log explorer file attach log file 選擇伺服器和登陸方式 connect 選擇資料...

mysql 誤刪除資料恢復(binlog)

恢復前提 mysql有開啟日誌記錄 恢復概覽 1 通過mysql二進位制日誌檔案生成sql,整個庫恢復需把刪除的sql語句去掉,執行sql 2 部分恢復同樣生成sql檔案,過濾sql檔案,複製sql後去掉不需要的sql語句,執行sql 生成sql檔案方法 通過mysqlbinlog工具 一般在 my...

誤刪除資料恢復(flashback)

flashback query flashback drop flashback table用法總結 1.flashback query 閃回到15分鐘前 select from orders as of timestamp systimestamp interval 15 minute where...