有時,我們誤刪了mysql資料庫的一些資料,肯定希望能夠恢復我們誤刪的資料,這是可以解決的。有乙個解決的方案是使用mysql的二進位制日誌,也是我們經常說的binlog,不過前提是,在啟動mysql時已經啟用binlog功能。
檢視binlog功能是否啟用:
看到第一行的variable_name為log_bin,對應的value是on,即是啟用,off則是停用。
binlog功能可以通過配置或者命令來啟用。
1.配置檔案/etc/my.cnf
[mysqld]
log-bin=mysql-bin
修改了my.cnf檔案,需要重啟mysql後檔案內容才生效。
2.命令
停用
set sql_log_bin=0
啟用
set sql_log_bin=1
binlog的相關檔案,可以在mysql的data目錄看到
-rw-rw----. 1 mysql mysql 68k 12月 1 12:01 mysql-bin.000001
-rw-rw----. 1 mysql mysql 1.4m 12月 1 12:01 mysql-bin.000002
-rw-rw----. 1 mysql mysql 143 12月 1 13:08 mysql-bin.000003
-rw-rw----. 1 mysql mysql 1.6k 12月 1 16:57 mysql-bin.000004
-rw-rw----. 1 mysql mysql 76 12月 1 13:27 mysql-bin.index
binlog是二進位制形式儲存的,如果需要看裡面的內容,可以通過命令檢視。
檢視日誌的相關資訊
mysql> show binlog events in 'mysql-bin.000004'\g
mysqlbinlog恢復資料成sql檔案
mysqlbinlog mysql-bin.000004 > mysql-bin.000004.sql
根據時間點恢復資料
[root@localhost data]# ../bin/mysqlbinlog --start-datetime="2017-12-01 16:45:00" --stop-datetime="2017-12-01 16:50:00" mysql-bin.000004 | ../bin/mysql -uroot -p
enter password: *****
根據偏移量恢復資料
[root@localhost data]# ../bin/mysqlbinlog --start-position="50" --stop-position="100" mysql-bin.000004 | ../bin/mysql -uroot -p
enter password: *****
官方對binlog的說明: MySQL 通過 binlog 恢復資料
通過了解 binlog 日誌的相關配置,簡單掌握通過 binlog 對資料庫進行資料恢復操作 任何成熟軟體都會有一套成熟的日誌系統,當軟體出現問題時,這些日誌就是查詢問題 的寶庫。同樣,mysql 也不例外,也會有一系列日誌記錄 mysql 的執行狀態。mysql 主要有以下幾種日誌 這些日誌均需要...
MySQL通過bin log恢復資料
binlog是server層實現的二進位制日誌,他會記錄我們的crud操作。因此如果我們誤刪了資料庫,我們可以通過binlog來進行恢復。一 首先,我們需要開啟mysql的binlog功能。binlog預設是關閉的,需要手動開啟 通過以下命令檢視binlog是否開啟 show variables l...
binlog恢復資料
記一次誤刪恢復資料 通過binlog日誌檔案生成時間和誤操作刪除資料的時間對比,分析出生成到哪個檔案中 兩種恢復方式 1 通過時間段 usr local mysql bin mysqlbinlog start datetime 2019 10 11 19 00 00 stop datetime 20...