MySQL各種日誌總結

來源:互聯網
上載者:User

MySQL各種日誌總結

日誌類型:

  • 錯誤記錄檔(error log)
  • 常規日誌(general log)
  • 二進位日誌(bin log)
  • 中繼日誌(relay log)
  • 慢日誌(slow log)
  • InnoDB引擎的redo log

錯誤記錄檔

log-error = error.log

不加儲存路徑儲存到datadir下,如果不指定名字是hostname.err

記錄mysql啟動關閉,運行中的異常或是重要提示資訊

在生產環境中,監控這個日誌

全量日誌(常規日誌)

general_log = OFF|ON

general_log_file = general.log

不指定路徑儲存到datadir下,如果不指定名字是hostname.log

開啟後,記錄client和資料庫的所有請求

二進行日誌  最大檔案數為2的32次方個

log-bin = /data/mysql/mysql3306/logs/mysql-bin

設定二進位日誌的儲存位置及prefix名字

用記錄資料庫寫入操作的日誌,可以用於備份或是master/slave的複製,必須有server-id

如果沒有可以通過修改記憶體裡的值加上,但是有風險

不能太快產生,盡量大些,5分鐘左右產生一個日誌

log_bin = /data/mysql/mysql3306/log/mysql-bin 是否開啟binlog

log_bin_index = /data/mysql/mysql3306/log/mysql-bin.index

指定binlog的一個索引檔案,預設是在datadir形成log_bin的prefix名index

binlog_do_db = thunder

用於指定只記錄那個庫的二進位日誌(建議不要用)

max_binlog_size = 500M

指定binlog的大小為500M一個檔案,預設是1G

expire-logs-days = 5

指定保留binlog的天數

binlog_format = row

指定binlog的日誌格式,支援statement,row,mixed格式

statement格式記錄原生的sql

row格式裡沒有,但5.6後增加了一個query event可以看到原來的sql

binlog_rows_query_log_events 預設是off

mixed格式是兩種形式的混合體,DDL語句記錄statement格式,DML語句記錄row格式

推薦使用row格式

binlog_row_image = full

控制日誌中binlog的詳細相關的程度,支援full(default),minimal,nobolb

minimal:只記錄變化的行和唯一識別欄位

nobolb:除了blob,text其它列都記

binlog_error_action = abort_server

當遇到mysql不能寫binlog時,報出異常,預設是ignore error不報錯

binlog_direct_non_transactional_updates = on

對於非事務引擎表,直接走日誌,不走2pc提交,預設是不支援

binlog_order_commit = on

按順序寫入日誌

binlog_cache_size=1M 已經很大

此參數表示binlog使用的記憶體大小,可以通過狀態變數binlog_cache_use和bin_cache_disk_use 來協助測試

binlog_cache_use:使用二進位日誌緩衝的事務數量

binlog_cache_disk_use:使用二進位日誌緩衝但超過binlog_cache_size值並使用臨時檔案來儲存事務中的語句的事務數量

binlog_checksum (5.6.2引入)在高版本上修改

mysql5.6.6後預設是crc32,之前版本是none

在啟用這個參數之前對於日誌的完整校正就是通過對比長度,引入新的方式後,利用新方法對內容進行校正

binlog_rows_query_log_events (5.6.2引入)

只作用於RBR格式,預設不啟用

如果啟用,會把使用者寫直的原生態DML操作記錄到binlog中

log_bin_use_v1_row_events (5.6.6引入)

預設是0,如果使用1是使用Version1的格式,mysql5.5可以認出來的形式,如果0是5.6.6後使用的version2格式

sync_binlog = 1|0

這個參數對效能影響嚴重,資料一致性條件要求高調整為1,效能差別大概為10倍

當事務提交後,mysql僅僅是將binlog_cache中的資料寫入binlog檔案,但不執行fsync之類的磁碟同步指令通知檔案系統將緩衝重新整理到磁碟,面讓filesystem自行決定什麼時候來同步,這個是效能最好的。

sync_binlog=n 在進行n次事務提交以後,mysql將執行一次fsync之類的磁碟同步指令,同步檔案系統將binlog檔案快取重新整理到磁碟。

mysql中預設的設定是sync_binlog=0,即不作任何強制性的磁碟排清指令,這是效能是最好的,但風險也是最大的。一旦系統crash,在檔案系統快取中的所有binlog資訊都會丟失

中繼日誌

relay-log = relay-bin

設定中繼日誌的名稱首碼,不指定路徑預設在datadir下

log_thread從master就讀到的日誌寫到中繼日誌中,供sql_thread執行,以完成複製

慢日誌

slow-query-log-file = slow.log

slow-query-log

long_query_time=1

是怎麼計時的,

ddl語句 exec時間

dml語句 select從等待鎖開始計時,insert只記錄執行時間

利用slow-query-log這個參數開啟慢日誌,slow-query-log-file指定慢日誌的名稱,不指定路徑預設在datadir下

建議每天一個檔案,時間長可能會很大,做定時任務

Innodb的redo log 《交易處理概念》交易處理聖經

innodb_log_group_home_dir=/data/mysql/mysql3317/logs 預設在datadir下

SSD磁碟中,記錄檔不要放在SSD磁碟中,普通硬碟即可

innodb_log_file_size = 200M 512M左右即可

innodb_log_files_in_group = 3 個數

指定redo log的儲存位置及大小,檔案個數

Innodb事務操作不可缺少的一個環節

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.