MySQL中的binlog刷盤機(jī)制解讀
一、binlog刷盤機(jī)制
- binlog是由mysql的server層提供出來一種日志記錄方式,是所有引擎共用的,不是只屬于innoDB引擎。
- binlog同樣提供了3種同步機(jī)制,通過配置文件中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)文章
php基礎(chǔ)之連接mysql數(shù)據(jù)庫和查詢數(shù)據(jù)
這篇文章主要介紹了php連接mysql數(shù)據(jù)庫和查詢數(shù)據(jù)的方法和示例,需要的朋友可以參考下2014-08-08
mysql 如何使用JSON_EXTRACT() 取json值
這篇文章主要介紹了mysql如何使用JSON_EXTRACT() 取json值的操作方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
mysql啟動(dòng)的error 2003和1067錯(cuò)誤問題解決方法
mysql安裝好經(jīng)常發(fā)現(xiàn)無法正常啟動(dòng)碰到最多的是error 2003的錯(cuò)誤,經(jīng)研究在此附上解決方法,希望可以幫助有類似問題的朋友2013-09-09
Mysql一些復(fù)雜的sql語句(查詢與刪除重復(fù)的行)
這篇文章主要介紹了Mysql一些復(fù)雜的sql語句(查詢與刪除重復(fù)的行),需要的朋友可以參考下2017-05-05
MySQL數(shù)據(jù)庫遷移到Oracle數(shù)據(jù)庫的完整步驟記錄
在研發(fā)過程中可能會(huì)用到將表數(shù)據(jù)庫中的表結(jié)構(gòu)及數(shù)據(jù)遷移到另外一種數(shù)據(jù)庫中,比如說從mysql中遷移到oracle中,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫遷移到Oracle數(shù)據(jù)庫的完整步驟,需要的朋友可以參考下2024-06-06

