mysql最高安全级别双一_MySQL核心之双一原则
所謂的雙一就是指:
sync_binlog=1;
innodb_flush_log_at_trx_commit=1
innodb_flush_log_at_trx_commit和sync_binlog這兩個參數(shù)是控制MySQL磁盤寫入策略以及數(shù)據(jù)安全性的關(guān)鍵參數(shù)。
innodb_flush_log_at_trx_commit表示log buffer寫入log file以及刷新到磁盤的過程,
sync_binlog表示事務(wù)寫入binary log并使用fdatasync()函數(shù)同步到磁盤的過程。
1、對于innodb_flush_log_at_trx_commit來說
取值為0:log buffer每秒寫入日志文件log file并刷新flush到磁盤。這種情況下,MySQL的日志刷寫操作和事務(wù)提交操作沒有關(guān)系。因此MySQL的性能是最好的時刻。不過不安全
取值為1:每次事務(wù)提交時,log buffer會被寫入到日志文件并且還要刷寫到磁盤上。由于每次事務(wù)都要提交到I/O設(shè)備,因此會慢一點,不過是最安全的。
取值為2:0和1的中間效果,即每次的事務(wù)提交會寫入log buffer,而刷寫到磁盤則是一秒進行一次。性能屬于一般。
2、對于sync_binlog來說:
取值為0:MySQL自己不主動同步,依賴操作系統(tǒng)本身不定期把文件內(nèi)容刷新到磁盤。性能最佳
取值為1:每次事務(wù)提交后將binlog_cache中的數(shù)據(jù)強制寫入磁盤bin log日志中,是最慢的,但是最安全
取值 >1:當(dāng)進行n次事務(wù)提交后,MySQL將binlog_cache中的數(shù)據(jù)強制寫入磁盤中。
當(dāng)兩個參數(shù)都設(shè)為1,這適用于那些數(shù)據(jù)安全要求比較高的場合,同時要求磁盤等也比較好才行。
對于重做日志redo log和二進制bin log的區(qū)別是什么,我們有必要說一下:
1)二進制日志會記錄所有與mysql有關(guān)的日志記錄,包括InnoDB等其他存儲引擎的日志,而InnoDB存儲引擎的重做日志只記錄有關(guān)其本身的事務(wù)日志,2)記錄的內(nèi)容不容,不管你將二進制日志文件記錄的格式設(shè)為哪一種,其記錄的都是關(guān)于一個事務(wù)的具體操作內(nèi)容,而InnoDB存儲引擎的重做日志文件記錄的關(guān)于每個頁的更改的物理情況;3)寫入的時間也不同,二進制日志文件是在事務(wù)提交前進行記錄的,而在事務(wù)進行的過程中,不斷有重做日志條目被寫入重做日志文件中。
總結(jié)
以上是生活随笔為你收集整理的mysql最高安全级别双一_MySQL核心之双一原则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存升级,电脑秒变超级跑车
- 下一篇: 游戏性能提升秘籍:ryzen处理器+内存