在我們平時使用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
來進行恢復。