mysql使用binlog恢復使用delete誤刪的數據

在我們平時使用MySQL數據庫的時候,可能會出現delete from table_name 忘記寫條件語句而導致刪除了整個表的數據。

這個時候就很棘手了。如果公司的數據庫都有開啓數據備份那自然是沒有問題。source   一下備份下來的sql文件就好。


但是如果沒有備份數據呢?

辦法還是有的。

答案就是bin log。

MySQL帶了一個 bin log 的功能,

但是默認是沒有開啓的。

我們可以敲入  

show VARIABLES 

命令。

我們會發現log_bin的值是OFF,所以我們需要開啓bin log的功能。

如何開啓呢?也是很簡單的。

我們在my.ini文件配置下即可。就是以前安裝MySQL的那個配置文件。


[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8 
[mysqld]
log-bin=mysql-bin
#設置3306端口
port = 3306 
# 設置mysql的安裝目錄
basedir=F:\mysql\mysql-5.6.21-winx64\mysql-5.6.21-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=F:\mysql\mysql-5.6.21-winx64\mysql-5.6.21-winx64\data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB 

紅色的字是筆者特意標紅的。在原有的配置上添加即可。

重啓下MySQL服務,bin log就是起起來了。


現在筆者的test數據庫下的user表中有這麼多數據


我們先用命令將記錄刷到log bin中 

FLUSH LOGS ;

我們可以看到在MySQL的安裝目錄下的data目錄下多了mysql-bin.000001和mysql-bin.000002這兩個文件




現在我們模擬一個誤操作。

將數據全部刪除掉。



我們可以使用 

mysqlbinlog  --start-date="2012-10-15 16:30:00" --stop-date="2017-6-11 17:16:00" F:\mysql\mysql-5.6.21-winx64\mysql-5.6.21-winx64\data\mysql-bin.000001 |mysql -uroot -p

來進行恢復。

發佈了241 篇原創文章 · 獲贊 71 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章