binlog 從基礎到精通,24 張圖喫透,MySQL 調優必看

Bin log 保證了數據的可靠性和一致性,MySQL 數據庫的數據備份、主備、主主、主從等的實現,都依賴於 Bin log。

毫不誇張地說,Bin log 是 MySQL 極爲重要的內核之一,同時,Bin log 也是 MySQL 的高頻面試題,大廠校招、社招面試 90% 會問到

大家好,我是愛分享的程序員寶妹兒,分享即學習。

本篇是 Bin log 的終結篇,包含了 Bin log 系列的全部內容,想要了解 Bin log 的成體系知識,看這一篇就足夠了,寶子們,看了記得關注 + 收藏哦。

本文內容包括:

01

 Bin log 的概念

在 MySQL 中,Bin log 是一種日誌文件,以二進制形式記錄事務的開始、提交和回滾,以及數據的增、刪、改操作。

通過 Bin log,我們可以追蹤和還原數據庫中的操作歷史。

02

Bin log 的作用

Bin log 的兩個主要作用:

2.1 數據恢復

Bin log 記錄了每個事務的詳細操作,包括數據的修改和事務的狀態變更。

使用 Bin log 恢復 MySQL 數據,簡單地說,就是讓 MySQL 將保存在 Bin log 日誌中指定段落區間的 sql 語句,逐個重新執行一次而已。

Bin log 恢復數據主要有如下 7 個步驟:

1)查看當前 Bin log 的位置

2)tb_person 表中插入兩條記錄

3)記錄當前 Bin log 位置

4)查詢數據

......

查看詳解篇:Bin log 數據恢復,7 個步驟搞定,再不怕 MySQL 宕機了

2.2 主從複製

Bin log 是實現主從複製的關鍵,主數據庫將修改操作記錄到 Bin log 中,從數據庫通過解析 Bin log 實現數據的同步。

MySQL 主從複製中的主要線程

查看詳解篇:基於 Bin log 實現 MySQL 複製,5 個關鍵步驟務必掌握!

03

 Bin log 日誌結構

Bin log 日誌文件包含了索引文件和具體日誌文件。

每個 Bin log 事件由四個部分組成:

04

Bin log 的相關參數

在 MySQL 中,默認設置是 sync_Bin log=0 ,即不作任何強制性的磁盤刷新指令。

sync_Bin log=0 的性能最好、但風險也最大,一旦系統繃 Crash ,在文件系統緩存中的所有 Bin log 信息都會丟失。

05

Bin log 的三種模式

針對不同的應用場景,Bin log 推出了三種模式 Statement、Row、Mixed,以滿足對數據庫的需求。

Bin log 模式的優缺點:

Bin log 模式選型思路:

關於 Bin log 三種模式 Statement、Row、Mixed,及其特點、優缺點、應用場景、配置、切換等。

具體查看詳解篇:喫透 3 大 Bin log 模式,MySQL 數據零丟失

06

Bin log 的開啓、關閉、刪除

Bin log 的開啓

在 MySQL 配置文件 my.cnf 中增加 log-bin 參數,即可開啓 Bin log。

[MySQLd]
log-bin=MySQL-bin

通過命令行的方式開啓 Bin log:

SET SQL_LOG_BIN=1

Bin log 的關閉

通過命令行的方式關閉 Bin log:

SET SQL_LOG_BIN=0

Bin log 的刪除

過期刪除

MySQL> show variables like 'expire_log_days';
MySQL> set global expire_log_days=7;

reset master 會刪除所有 Bin log,reset slave 會刪除所有 relay log。

07

  Bin log 空間查詢

在數據庫管理中,定期查詢和監控 Bin log 的空間佔用情況,評估和監控系統的運行狀態,預防磁盤空間不足和性能問題的發生,確保數據庫的正常運行。

此時,我們可以通過 MySQL 的內置命令和查詢,來評估和監控 Bin log 的大小和增長趨勢。

一些查詢 Bin log 空間的常用方法和命令:

可以將這些命令嵌入到腳本或管理工具中,實現自動化的 Bin log 空間查詢和監控。

08

 Bin log 增長過快怎麼辦?

當 Bin log 增長過快時,磁盤空間佔用過多,就會導致磁盤空間不足或性能下降等問題,影響數據庫性能和穩定性。

Bin log 增長過快的主要原因:

Bin log(歸檔日誌)增長過快的解決方案:

......

詳解篇:Bin log 增長過快怎麼辦?5 個方法完美解決!

09

 Bin log、redolog 和 undolog 的區別

Bin log、Redo log 和 Undo log 的區別,是 MySQL 的高頻面試題,大廠校招面試 90% 會問。

在 MySQL 數據庫中,Bin log、Redo log 和 Undo log 都是極爲重要的日誌文件。

MySQL InnoDB 引擎:

使用 redo log (重做日誌)保證事務的持久性。

使用 Undo log (回滾日誌)來保證事務的原子性。

使用 Bin log(歸檔日誌)同步數據,保證數據一致性。

MySQL 實現事務、崩潰恢復、集羣的主從複製等,底層都離不開日誌,可以說日誌是 MySQL 的內核所在。

只有瞭解 MySQL 日誌,纔算是徹底搞懂 MySQL。

詳解篇:MySQL 的 Bin log、redo log 和 Undo log 的區別,2 分鐘徹底搞懂!

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/VXyMS4UHKOHbW2qfffIoQA