1. 程式人生 > >mysql安全引數設定

mysql安全引數設定

  • innodb_flush_log_at_trx_commit:有個網上的圖很直觀


  • sync_binlog=0/n
如果為0,那麼由作業系統決定什麼時候將二進位制日誌重新整理到檔案。
設定為n,那麼mysql會在n次提交後將二進位制日誌重新整理到檔案,顯然n=1是最安全的,也是最慢的。
  • innodb_support_xa=1/0:保證binlog與innodb redo log之間資料一致性,如果開啟,更改資料將會有如下順序操作:
prepare,然後將redo log持久化到磁碟;
如果前面prepare成功,那麼再繼續將事務日誌持久化到binlog;
如果前面成功,那麼在redo log裡面寫上一個commit記錄
這樣就保證binlog裡面存在的事務一定在redo log裡面存在,保證binlog裡面事務順序與redo log事務順序一致性(多執行緒寫的時候需要)

  • innodb_doublewrite:在把髒頁寫到data file(.idb)之前,innodb首先把資料寫到叫做doublewrite buffer的連續表空間區域(共享表空間ibdata的一段連續區域),
當資料寫入doublewrite buffer並且重新整理到磁碟之後,innodb才寫髒頁到對應的資料檔案中。innodb_doublewrite主要是解決寫資料頁出現中斷,產生torn page
(殘缺頁,mysql的每個資料頁的讀寫都是以16KB為單位,如果在寫入髒頁的時候只寫到8KB就停止了,那麼這一個頁就是torn page)問題,此時,mysql崩潰恢復
無法讀取torn page進行恢復推演,而之能通過innodb_doublewrite中的頁副本恢復資料。

總結,最安全的設定為:
innodb_flush_log_at_trx_commit=1
sync_binlog=1
innodb_support_xa=1
innodb_doublewrite=1