windows恢復下誤刪MySQL的數據

1、遇到問題

最近在本地開發的時候,一不小心把一個數據表當成廢棄表給刪掉了,其中有很多比較重要的數據,懊惱的同時想到我開啓了binlog日誌,依稀記得可以根據這個可以恢復數據,於是開始一頓搜索資料…

2、解決問題

(1)首先確認是否開啓binlog,如果開啓了就可以此恢復刪除的數據

	show VARIABLES like '%log_bin%';

結果如下圖所示:
在這裏插入圖片描述
可以看到log_bin對應的那行爲ON,表示已經開啓日誌記錄(日誌怎麼開啓不再贅述)

(2)查看日誌,找到刪除數據的記錄

上圖的log_bin_basename對應的地址就是記錄日誌的位置,我本機的位置是D:\program\mysql\mysql-8.0.17-winx64\data,
在這裏插入圖片描述
這裏有記錄所有操作數據庫的日誌文件,但是這些都是二進制文件,普通文本編輯器是沒法查看的,索性MySQL自帶查看工具


一、查看最早binlog的日誌:
show binlog events;

二、查看指定的binlog日誌:
show binlog events in 'binlog.000047';

三、指定查看 binlog.000047 這個文件,從pos點:20開始查起:        
show binlog events in 'binlog.000047' from 20;      

四、指定查看 binlog.000047 這個文件,從pos點:20開始查起,查詢10條        
show binlog events in 'binlog.000047' from 20 limit 10;      

五、指定查看 binlog.000047 這個文件,從pos點:20開始查起,偏移5行,查詢10條        
show binlog events in 'binlog.000047' from 20 limit 5,10;

在sql後面加上“\G”,不會顯示詳情,便於查找操作的節點,每一小塊都是一個操作,server_id 記錄是在哪臺機器上操作的,
event_type 記錄操作類型,如下圖:
在這裏插入圖片描述
由於寫這篇文章的時候,已經放棄處理那部分日誌以及恢復那部分數據了(主要沒有設置單個日誌大小,導致日誌文件太大,已經達到GB級別,普通文本編輯器已經打不開了,chrome瀏覽器異步加載文件比較好,可以查看一部分信息,但最終會崩潰,可能是內存問題沒有繼續深入,想到過文件分割,但沒有嘗試),這裏僅模擬當時的操作

(3)日誌導出sql

到日誌所在的位置,執行以下命令,成功導出到d盤

mysqlbinlog --nodefaults binlog.000048 > d:/my.sql 

在這裏插入圖片描述
在這裏插入圖片描述

注意查看下大小,如果命令報錯也可能生成空腳本

(4)恢復數據

新開一個cmd窗口,然後執行以下命令

mysql -uroot -p -v plist < my.sql // plist是數據庫名,需要和腳本中操作的數據庫名一致

至此,成功恢復數據。

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