記錄MySQL 8在windows 10系統下用Delete語句刪除了記錄用自帶的mysqlbinlog復原方法

前提條件:

1.你的MySQL數據庫開了binlog功能;
2.用了Delete刪除語句,刪除的是表裏的記錄,不是整個表;

怎麼看我的MySQL數據開沒開啓binlog功能呢?

在這裏插入圖片描述

登入mysql,然後輸入指令:
show variables like '%log_bin%';
第二個紅框顯示ON說明已經開啓binlog功能;

Variable_name Value
log_bin ON

我安裝MySQL 8 的時候沒有注意這裏,好像是默認打開的;在我的配置文件裏也沒有顯示的有,可是就是開了,MySQL 8就是這麼好用麼?;
在這裏插入圖片描述

沒打開binlog的怎麼打開呢?

打開my.ini文件,添加如下配置,重啓mysql即可開啓

# log-bin
log-bin=mysql-bin 
binlog_format = ROW

我沒試過的啊,因爲我的已經打開了的…

然後輸入指令,查到有3個binlog日誌文件:

show binary logs;

在這裏插入圖片描述
找到你的這幾個文件位置,我的是在MySQL的安裝目錄下和bin文件夾平級的data目錄下:
在這裏插入圖片描述
這3個文件的修改日期以15結尾的這個是最後修改的,我剛好是這個時候做了刪除一條記錄的測試,因此我重點準備放在這個文件上;
輸入指令:



show binlog events in 'binlog.000015';

在這裏插入圖片描述
看到有個Delete_rows,更加篤定就是這了;

怎麼看這條Delete_rows記錄呢?

在這裏插入圖片描述
找到有mysqlbinlog.exe這個程序的地方,輸入指令:

mysqlbinlog.exe --no-defaults -v  --start-datetime="2021-01-28 01:00:00" --stop-datetime="2021-01-30 01:30:00" -d forinterview ..\data\binlog.000015
mysqlbinlog.exe 是執行查看日誌文件的程序
no-defaults -v 照着寫
–start-datetime=“2021-01-30 01:30:00” 是開始時間
-d forinterview 是數據庫名稱,forinterview改爲你的數據庫名
–stop-datetime=“2021-01-30 01:30:00” 是結束時間
…\data\binlog.000015 是數據庫日誌文件的地址

在這裏插入圖片描述
這時候看到的是Base64編碼的值,看不懂;
則輸入指令:

mysqlbinlog.exe --no-defaults -v --base64-output=decode-rows  --start-datetime="2021-01-28 01:00:00" --stop-datetime="2021-01-30 01:30:00" -d forinterview ..\data\binlog.000015
-base64-output=decode-rows 把base64解碼

可是看到的還是這樣的,不過SQL語句的雛形已經出來了:
在這裏插入圖片描述
再在上一條指令後加入指令,把cmd的日誌輸出到文件:

mysqlbinlog.exe --no-defaults -v --base64-output=decode-rows  --start-datetime="2021-01-28 01:00:00" --stop-datetime="2021-01-30 01:30:00" -d forinterview ..\data\binlog.000015 > D:\temp\t1.sql
> 輸出日誌爲文件
D:\temp\t1.sql 文件路徑和文件名,沒有的話會創建

得到t1.sql文件,還是亂碼:
在這裏插入圖片描述

記錄亂碼怎麼辦?

用notepad++打開選擇編碼:
在這裏插入圖片描述
就可看到中文了:
在這裏插入圖片描述
復原的話,有這個作爲依據,看具體用什麼方式復原了;



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