binlog二進位制日誌包含描述資料庫更改的「事件」,如表建立操作或表資料更改。除非使用基於行的日誌記錄,否則它還包含可能已進行更改的語句的事件(例如,不匹配任何行的delete)。二進位制日誌還包含關於每個語句花費多長時間更新資料的資訊。二進位制日誌有兩個重要的用途:
1、備份,用於從伺服器的備份。主伺服器將二進位制日誌中包含的事件傳送給從伺服器,從伺服器執行這些事件以對主伺服器進行相同的資料更改。
2、恢復,某些資料恢復操作需要使用二進位制日誌。備份恢復後,將重新執行備份後記錄的二進位制日誌中的事件。這些事件使資料庫從備份時起保持最新的資料。
其中:二進位制日誌不用於select或show等不修改資料的語句。在進行了修改後資料不變的情況下也會將此修改記錄到二進位制檔案。要記錄所有語句(例如,要識別問題查詢),請使用常規查詢日誌。
在執行啟用了二進位制日誌記錄的伺服器會使效能稍微降低。但是,二進位制日誌的好處是允許您設定複製和恢復操作,這個小的效能下降不會影響到資料庫的正常操作。
但是,二進位制記錄檔案的前提是必須將修改任務執行完畢,只有完整的事件或事務才會被記錄或讀取。
binlog的 優點:不需要記錄每條資料的變化,只記錄怎樣運算元據的語法,減少了io,提高效能
缺點:會產生大量的日誌,尤其是alter table的時候會讓日誌暴漲。
新特性:
從mysql 8.0.14開始,二進位制日誌檔案可以被加密,幫助保護這些檔案和其中包含的潛在敏感資料不被外部攻擊者濫用,也不被儲存它們的作業系統的使用者未經授權地檢視。通過將binlog_encryption系統變數設定為on,可以在mysql伺服器上啟用加密。
在此我們簡單的介紹了mysql的binlog更多binlog請到官網自行閱讀。
binlog的配置
1、找到資料庫配置檔案my.cfn在檔案中的[mysql]下配置
server_id=1918
log_bin = mysql-bin
binlog_format = row
2、關閉資料庫服務,並且重新啟動
systemctl stop mysqld.service
systemctl start mysqld.service
3、在資料庫中檢視是否修改了log_bin為no
4、這樣bin_log已開啟我們簡單測試一下
1.檢視所有binlog日誌列表
2.檢視master狀態,即最後(最新)乙個binlog日誌的編號名稱,及其最後乙個操作事件pos結束點(position)值
3.重新整理log日誌,自此刻開始產生乙個新編號的binlog日誌檔案
mysql> flush logs;
注:每當mysqld服務重啟時,會自動執行此命令,重新整理binlog日誌;在mysqldump備份資料時加 -f 選項也會重新整理binlog日誌;
4.重置(清空)所有binlog日誌
目前我們還沒有看到裡面的具體內容,因為其為二進位制檔案,所以我們不可以直接檢視,所以我們引出下面的檢視方法。
在檢視之前我們可以看到開啟bin_log後會產生2個檔案
其中 二進位制日誌索引檔案(檔名字尾為.index)用於記錄所有的二進位制檔案,二進位制日誌檔案(檔名字尾為.00000*)記錄資料庫所有的ddl和dml(除了資料查詢語句)語句事件。
1、我們使用mysql自帶的檢視工具mysqlbinlog
注: server id 1918 資料庫主機的服務號;
end_log_pos 123 pos點
thread_id=11 執行緒號
由於我們沒有寫任何對資料庫的操作,所以我們看不到任何被操作的日誌資訊。我們手動寫一些語句。再看其結果。
我們寫了乙個建立binlog庫的語句再次檢視
2、通過sql語句進行查詢
mysql> show binlog events [in 'log_name'] [from pos] [limit [offset,] row_count];
選項解析:
in 'log_name' 指定要查詢的binlog檔名(不指定就是第乙個binlog檔案)
from pos 指定從哪個pos起始點開始查起(不指定就是從整個檔案首個pos點開始算)
limit [offset,] 偏移量(不指定就是0)
row_count 查詢總條數(不指定就是所有行)
mysqlbinlog命令介紹
1 mysqlbinlog 1.1 mysqlbinlog作用 解析mysqlbinlog日誌 1.2 mysqlbinlog日誌是什麼?在mysql資料庫中的資料目錄的下述檔案 mysql bin.000001 mysql bin.000002 mysql bin.000003 mysql bin...
mysql binlog備份初探
備份mysql的binlog檔案,可以配合分庫或全庫的備份檔案實現基於時間點的資料恢復.在工作過程中,遇到兩種情況 1.不執行flush logs命令 缺點 對於不進行頻繁寫入和更新的業務,備份後,浪費磁碟空間.優點 對於一天只生成乙個binlog檔案的業務,恢復資料比較容易,只需要解壓乙個binl...
mysqlbinlog使用詳解
mysqlbinlog用於處理二進位制日誌檔案的實用工具詳解 mysqlbinlog 從二進位制日誌讀取語句的工具。在二進位制日誌檔案中包含的執行過的語句的日誌可用來幫助從崩潰中恢復 在my.cnf這個檔案中加一行 windows為my.ini vi etc my.cnf mysqld log bi...