MySQL通過bin log恢復資料

2021-10-10 01:56:39 字數 2010 閱讀 9568

binlog是server層實現的二進位制日誌,他會記錄我們的crud操作。

因此如果我們誤刪了資料庫,我們可以通過binlog來進行恢復。

一、首先,我們需要開啟mysql的binlog功能。(binlog預設是關閉的,需要手動開啟)

通過以下命令檢視binlog是否開啟:

show variables like '%log_bin%'

;

查詢結果如下

我們可以發現log_bin的狀態為off。

開啟bin_log

配置開啟

binlog2log‐bin=/usr/local/mysql/data/binlog/mysql‐bin3

注意5.7以及更高版本需要配置本項:server‐id=123454(自定義,保證唯一性);

#binlog格式,有3種statement,row,mixed

binlog‐format=row

#表示每1次執行寫入就與硬碟同步,會影響效能,為0時表示,事務提交時mysql不做刷盤操作,由系統決定

sync‐binlog=1

驗證bin_log是否開啟

show variables like '%log_bin%'

;

發現bin_log的狀態變成on了,說明bin_log已經啟用。

其他相關的bin_log命令

重新整理日誌,將會產生乙個新的日誌檔案用來記錄日誌

flush logs;
檢視最後乙個bin‐log日誌的相關信

show master status;
檢視所有bin_log日誌檔案

show master logs;
清空所有的bin_log日誌檔案

reset master;
二、檢視bin_log日誌

有兩種方式檢視bin_log日誌

通過mysqlbinlog工具檢視

該工具位於mysql/bin目錄下,具體的檢視語句如下

mysql>/usr/local/mysql/bin/mysqlbinlog ‐‐no‐defaults /usr/local/mysql/data/binlog/mysql‐bin.000001
通過命令檢視日誌:

三、恢復資料

1 從bin‐log恢復資料

2 恢復全部資料

3 /usr/local/mysql/bin/mysqlbinlog ‐‐no‐defaults /usr/local/mysql/data/binlog/mysql‐bin.000001

|mysql ‐uroot ‐p test(資料庫名)

4 恢復指定位置資料

5 /usr/local/mysql/bin/mysqlbinlog ‐‐no‐defaults ‐‐start‐position=

"408" ‐‐stop‐position=

"731"

/usr/local/mysql/data/binlog/mysql‐bin.000001 |mysql ‐uroot ‐p test(資料庫)

6 恢復指定時間段資料

7 /usr/local/mysql/bin/mysqlbinlog ‐‐no‐defaults /usr/local/mysql/data/binlog/mysql‐bin.000001

‐‐stop

MySQL 通過 binlog 恢復資料

通過了解 binlog 日誌的相關配置,簡單掌握通過 binlog 對資料庫進行資料恢復操作 任何成熟軟體都會有一套成熟的日誌系統,當軟體出現問題時,這些日誌就是查詢問題 的寶庫。同樣,mysql 也不例外,也會有一系列日誌記錄 mysql 的執行狀態。mysql 主要有以下幾種日誌 這些日誌均需要...

mysql 資料恢復 通過binlog恢復資料

1 首先登入mysql 2 檢視是否開啟bin日誌 show variables like log bin 3 檢視正在被記錄的檔案 show master status 5 篩選出指定表的sql 例如表名為 address list grep address list 1sql basic.sql...

通過binlog恢復mysql備份之前的資料

其中我們提到了的備份資料庫要晚與要恢復的資料庫時間,即要恢復的資料庫在前,而備份的資料庫在後。當時我提到說會單獨寫一篇文章講解這個情況,本篇文章我就來介紹如何通過binlog日誌恢復比備份資料庫早時的資料庫狀態。我們還是以上篇文章的資料及備份檔案為基礎,來進行本篇文章的講解。ailanni資料庫完整...