1. 程式人生 > >mysql使用binlog恢復使用delete誤刪的資料

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

來進行恢復。