共計(jì) 1143 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
這篇文章主要介紹了 mysql 中 sync_binlog 和 innodb_flush_log_at_trx_commit 怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
sync_binlog:
其值默認(rèn)為 0,范圍為 0~4294967295(mysql 5.6)
〇 為 0 時(shí),即 mysqld 不去控制磁盤(pán)的同步,而是等待操作系統(tǒng)的 fdatasync 從內(nèi)存 flush 到磁盤(pán)。(與操作系統(tǒng)同步)。在復(fù)制結(jié)構(gòu)中,dump 線程會(huì)在 flush 階段進(jìn)行 binlog 傳輸。
〇 最安全的設(shè)置為 1,在開(kāi)啟了 autocommit 的情況下,如果 mysqld 或者 os 此時(shí) crash 掉,會(huì)至多遺失一個(gè)事務(wù)。(同時(shí)也是最慢的設(shè)置)。在復(fù)制結(jié)構(gòu)中,dump 線程會(huì)在 sync 階段進(jìn)行 binlog 傳輸。
〇 當(dāng)值為范圍內(nèi)其他值時(shí),如 100,即意味著 mysql 在寫(xiě) 100 次 binlog 時(shí),再將緩存刷到磁盤(pán)。在復(fù)制結(jié)構(gòu)中,dump 線程會(huì)在 flush 階段進(jìn)行 binlog 傳輸。
將該值設(shè)置為稍大的情況下,可以提高 tps,并且需要使用 battery-backed cache 防止異常斷電。
innodb_flush_log_at_trx_commit:
(控制 REDO log 刷盤(pán)策略)
其默認(rèn)值為 1,其他可取值為 0 和 2。
〇 當(dāng)為 1 時(shí),每個(gè)事務(wù)提交,將會(huì)使 log buffer 的內(nèi)容寫(xiě)到 log file 中,同時(shí)將被 flush 到磁盤(pán),這也是最安全的做法。可以完全遵從 ACID。(the contents of the InnoDB log buffer are written out to the log file at each transaction commit and the log file is flushed to disk.)
〇 當(dāng)為 0 時(shí),每個(gè)事務(wù)提交,會(huì)寫(xiě)入 mysqld 自己的 log buffer 中,每隔 1 秒將 log buffer 的內(nèi)容寫(xiě)到 log file 中,然后 flush 到磁盤(pán)。
〇 當(dāng)為 2 時(shí),每個(gè)事務(wù)提交,就會(huì)被寫(xiě)到 log file(OS cache),但是 log file 每隔 1 秒才會(huì)被 flush 到磁盤(pán),當(dāng)操作系統(tǒng) crash 或斷電時(shí),此時(shí)至多丟失 1 秒的事務(wù)。
0 和 2 的區(qū)別是,
為 0 時(shí),mysqld 或操作系統(tǒng) crash 則會(huì)導(dǎo)致 1 秒內(nèi)的事務(wù)被丟失。
為 2 時(shí),當(dāng)操作系統(tǒng) crash 或斷電會(huì)導(dǎo)致 1 秒內(nèi)的事務(wù)被丟失。
性能而言(由快至慢):
0 2 1
安全性而言(由好至差):
1 2 0
感謝你能夠認(rèn)真閱讀完這篇文章,希望丸趣 TV 小編分享的“mysql 中 sync_binlog 和 innodb_flush_log_at_trx_commit 怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持丸趣 TV,關(guān)注丸趣 TV 行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!