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資料庫完整...