天天看點

mysql資料庫,binlog資料恢複

作者:評評無奇打勞工

mysql的二進制日志binlog記錄了所有的DDL和DML語句,以事件形式記錄,還包括語句執行所消耗的時間,mysql的二進制日志是事務安全型的。

測試環境

mysql資料庫版本5.7,免安裝版,測試mysql binlog資料恢複功能。

檢視資料庫是否開啟binlog日志

登入mysql

執行

show variables like '%log_bin%';

mysql資料庫,binlog資料恢複

ON:辨別開啟日志

開啟binlog日志的

修改my.cnf配置檔案

log-bin=mysql-bin

server_id=1

#設定日志格式

binlog_format=ROW

檢視binlog日志清單

show master logs;

mysql資料庫,binlog資料恢複

查詢日志事件

show binlog events in 'mysql-bin.000001';

mysql資料庫,binlog資料恢複

重置所有的binlog日志

reset master;

binlog轉化為文本檔案

mysqlbinlog --base64-output=decode-rows -v E:\mysql-5.7.32-winx64\data\mysql-bin.000001 > e:\1.log

資料恢複

先新增資料:

insert into

再删除資料

delete from

然後檢視日志事件,找到新增事件的結束位置,stop-position對應了結束位置

mysql資料庫,binlog資料恢複

mysqlbinlog --stop-position=524 --database=test E:\mysql-5.7.32-winx64\data\mysql-bin.000002 | mysql -uroot –p

重新檢視資料庫,删除的資料已恢複到删除前。

注意:

如果insert時,未開啟binlog日志,那麼delete該資料後,無法使用binlog恢複該資料。(一開始還以為能恢複,結果測試的時候一直提示ERROR 1032 (HY000) at line 17: Can't find record in 'tablexxx')

繼續閱讀