MySQL中的binlog刷盤機(jī)制解讀
一、binlog刷盤機(jī)制
- binlog是由mysql的server層提供出來(lái)一種日志記錄方式,是所有引擎共用的,不是只屬于innoDB引擎。
- binlog同樣提供了3種同步機(jī)制,通過(guò)配置文件中sync_binlog屬性的實(shí)現(xiàn)的刷盤策略。
二、sync_binlog屬性提供的3種刷盤策略
- sync_binlog=0 操作系統(tǒng)決定(實(shí)時(shí)寫,延遲刷)。
由server層的執(zhí)行器在提交了事務(wù)之后,寫到PageCache,再由操作系統(tǒng)決定什么時(shí)候調(diào)用fsync函數(shù)將 binlog 寫入到磁盤(性能最高,但宕機(jī)可能丟失部分 binlog)
- sync_binlog=1 提交時(shí)寫入(實(shí)時(shí)寫、實(shí)時(shí)刷)。
每次事務(wù)提交時(shí)都強(qiáng)制刷新 binlog 到磁盤(最安全,但性能較低)
- sync_binlog=2 n次事務(wù)提交(實(shí)時(shí)寫、延遲刷)。
由server層的執(zhí)行器在提交了N次事務(wù)之后,寫到PageCache,再由操作系統(tǒng)決定什么時(shí)候調(diào)用fsync函數(shù)將 binlog 寫入到磁盤(折中方案,平衡安全性和性能)
- mysql5.7.7以前的版本默認(rèn)使用sync_binlog=0
- mysql5.7.7以后的版本默認(rèn)使用sync_binlog=1
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)連接數(shù)查詢、配置簡(jiǎn)單示例代碼
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)連接數(shù)查詢、配置的相關(guān)資料,連接數(shù)與性能密切相關(guān),需要根據(jù)實(shí)際需求合理配置,通過(guò)設(shè)置最大連接數(shù)、使用連接池和優(yōu)化應(yīng)用程序連接邏輯,可以提高數(shù)據(jù)庫(kù)的穩(wěn)定性和性能,需要的朋友可以參考下2025-03-03ubuntu 16.04下mysql5.7.17開放遠(yuǎn)程3306端口
這篇文章主要介紹了ubuntu 16.04下mysql5.7.17開放遠(yuǎn)程3306端口的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01mysql啟動(dòng)時(shí)報(bào)錯(cuò):error while loading shared li
這篇文章主要給大家介紹了解決mysql啟動(dòng)時(shí)報(bào)錯(cuò):error while loading shared libraries: libncurses.so.5: cannot open shared object file的方法,需要的朋友可以參考下2023-08-08MySQL優(yōu)化全攻略-相關(guān)數(shù)據(jù)庫(kù)命令
MySQL優(yōu)化全攻略-相關(guān)數(shù)據(jù)庫(kù)命令...2006-11-11golang實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)備份的操作方法
這篇文章主要介紹了golang實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)備份的操作方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06