MYSQL 二進位制日誌檔案

2021-08-20 12:42:23 字數 1260 閱讀 6719

主要作用:

1.恢復,可以用來恢復資料,可以進行point_in_time的恢復

2.複製,通過複製,使遠端的一台mysql資料庫與另一台mysql資料庫進行實時同步

寫入原理(使用事務的情況下):

1.預設情況下資料會先寫入快取,基於binlog_cache_size快取配置

2.如果快取寫滿,會寫入臨時檔案

3.事務提交前,將快取和臨時檔案的資料刷入二進位制檔案中

基本配置引數:

1.log_bin:配置啟動二進位制檔案記錄功能

2.bin_log.index:二進位制的索引檔案,用來儲存過往生產的二進位制序號

3.max-binlog-size:單個二進位制日誌檔案的最大值

4.binlog_format:statement、row、mixed

statement:記錄邏輯sql

row:基於行,記錄每一行修改的記錄(可以為資料庫的恢復和複製帶來更大可靠性,但需要更大的磁碟容量,對主從複製網路開銷有影響)

mixed:上述兩者混合,例如在使用到函式的sql會使用row模式記錄

5.mysqlbinlog:用來檢視binlog內容,如果是row模式,可以加-v或-vv引數來檢視

快取引數:

1.binlog_cache_size:當使用事務引擎,未提交的二進位制日誌會被記錄到乙個快取中,等該事務提交時,直接將快取中的二進位制日誌寫入到二進位制日誌檔案中,該引數基於會話,每開啟乙個會話,分配乙個binlog_cache_size大小,如果緩衝不夠用了,則會寫入到臨時檔案中,所以該值不能設定過大或過小,可通過以下兩個引數判斷設定是否合理

2.binlog_cache_use:記錄寫入快取的次數

3.binlog_cache_disk_use:快取寫滿後,會寫入臨時檔案,該屬性表示記入臨時檔案的次數

存在問題:

1.當伺服器傳送宕機時,會導致最後一部分資料沒有寫入二進位制檔案中,會給恢復和複製帶來問題

解決方式:

1.配置sync_binlog:該值預設為0,當sync_binlog=1,採用同步方式寫二進位制檔案,這時寫操作不使用作業系統的緩衝來寫二進位制日誌,開啟該值,會對資料庫io系統帶來一定影響,但是可以一定程度上解決問題1

2.配置innodb_support_xa:雖然通過sync_binlog在一定程度上解決了問題,但在使用innodb事務引擎時,事務未提交,但日誌已經寫入二進位制檔案,這時發生宕機還是會給恢復和複製帶來問題,通過設定innodb_support_xa=1引數可以解決該問題,保證二進位制日誌檔案和innodb儲存引擎資料檔案的同步

mysql 二進位制日誌

如果mysql 伺服器啟用了二進位制日誌,你可以使用mysqlbinlog工具來恢復從指定的時間點開始 例如,從你最後一次備份 直到現在或另乙個指定的時間點的資料。mysqlbinlog 用於處理二進位制日誌檔案的實用工具 要想從二進位制日誌恢復資料,你需要知道當前二進位制日誌檔案的路徑和檔名。一般...

mysql 二進位制日誌

1.日誌型別 二進位制日誌記錄了所有對mysql資料庫的修改事件,包括增刪改事件和對錶結構的修改事件。2.配置使用二進位制日誌 在my.ini 配置 log bin mysql bin 3.二進位制日誌格式 基於段的日誌格式 binlog format statement 記錄了操作的sql語句。優...

MySQL日誌 二進位制日誌(1)

一 二進位制日誌的介紹 二進位制日誌的資料當然是二進位制形式了,所以無法直接通過文字工具來檢視,並且二進位制日誌也不是用來檢視的而是通常給mysql使用的。它記錄了對資料發生或潛在發生更改的sql語句。二進位制日誌的用途有如下幾點 可以記錄對資料庫所在的變更,包括ddl和dml語句。用於資料庫的增量...