標籤:pat 事件 參數表 lin 自動 絕對路徑 dex檔案 gen 情況
文章轉自:http://www.ywnds.com/?p=3721
MySQL各類記錄檔相關變數介紹
查詢所有日誌的變數
| 1 |
mysql> show global variables like ‘%log%‘; |
GLOBAL表示查全域系統變數的狀態值(大概有61變數左右)。
一、錯誤記錄檔
log_error=/var/log/mysqld.log
錯誤記錄檔的存放位置,MySQL 5.5在資料目錄下,MySQL 5.6在/var/log/mysql.log檔案
log_warnings=1
設定是否將警告資訊記錄進錯誤記錄檔。預設設定為1,表示啟用;可以將其設定為0以禁用;而其值為大於1的數值時表示將新發起串連時產生的“失敗的串連”和“拒絕訪問”類的錯誤資訊也記錄進錯誤記錄檔。
二、通用日誌
general_log=OFF
一般查詢日誌,預設關閉,在啟動mysqld時可以使用了–general_log選項開啟一般查詢。如若啟用此項,其輸出位置則由–log_output選項進行定義,如果log_output的值設定為NONE,即使用啟用查詢日誌,其也不會記錄任何日誌資訊。作用範圍為全域,可用於設定檔,屬動態變數
general_log_file=FILE_NAME
查詢日誌的記錄檔名稱,預設為“localhost.log”。作用範圍為全域,可用於設定檔,屬動態變數。
log=YES
是否啟用記錄所有語句的日誌資訊於一般查詢日誌(general query log)中,預設通常為OFF。MySQL 5.6已經棄用此選項。
三、慢查詢日誌
slow_query_log = OFF
預設值為OFF,是否記錄慢查詢日誌,慢查詢是指查詢的執行時間超出long_query_time參數所設定時間長度的事件。MySQL 5.5此參數為log_slow_queries={YES|NO},作用範圍為全域層級,可用於設定檔,屬動態變數。
log_output=FILE|TABLE|NONE
定義日誌輸出方式,預設是FILE。作用於查詢日誌和慢查詢日誌,屬於動態變數可線上修改。如果改為TABLE存放,那麼會在mysql架構的產生一個general_log和slow_log的表,此表預設使用的是CSV引擎。最好可以將次引擎改為MyISAM,但是必須在關閉慢查詢之後才可修改。
slow_query_log_file = / PATH/TO/localhost-slow.log
設定檔案格式的慢查詢日誌的儲存路徑
long_query_time= 10.000000
設定區別慢查詢與一般查詢的語句執行時間長度,這裡的語句執行時間長度為實際的執行時間,而非在CPU上的執行時間長度,因此,負載較重的伺服器上更容易產生慢查詢。其最小值為0,預設值為10秒,這裡要注意的是,MySQL只記錄大於10秒的SQL查詢而等於或小於10秒的則不會記錄。一條SQL語句運行0.5秒和0.05秒是非常不同的,前者可能已經進行了表掃,後者可能是走了索引。它也支援微秒級的解析度。作用範圍為全域或會話層級,可用於設定檔,屬動態變數。
log_queries_not_using_indexes=OFF
預設值為OFF,這個參數預設為OFF,當開啟後,如果啟動並執行SQL語句沒有使用索引,則MySQL資料庫同樣會將這條SQL語句記錄到慢查詢記錄檔中。
log_throttle_queries_not_using_indexes=0
預設值為0,這是MySQL5.6.5版本開始新增的一個變數,用來表示每分鐘允許記錄到slow log的且未使用索引的SQL語句次數。該值預設為0,表示沒有限制。這個參數是防止生產環境下SQL語句沒有使用索引而導致慢查詢日誌過大的問題。
log_slow_admin_statements=OFF
預設值為OFF,這個變數是在MySQL5.6.11中加入的,記錄包括表管理語句,如更改表、分析表、表、建立索引、降索引、最佳化表和維修表。作用範圍為全域變數,可用於設定檔,屬於動態變數。
log_slow_slave_statements=OFF
預設值為OFF,這個變數是在MySQL5.6.11中加入的,當慢查詢日誌開啟的時候,這個變數的開啟可以設定複製從庫記錄主庫超過long_query_time時間的查詢日誌。作用範圍為全域變數,可用於設定檔,屬於動態變數。
四、二進位日誌
expire_logs_days=0
設定二進位日誌的到期天數,超出此天數的二進位記錄檔將被自動刪除。預設為0,表示不啟用到期自動刪除功能。如果啟用此功能,自動刪除工作通常發生在MySQL啟動時或FLUSH日誌時。作用範圍為全域,可用於設定檔,屬動態變數
binlog-format={ROW|STATEMENT|MIXED}
這個參數影響了記錄二進位日誌的格式,值有ROW、STATEMENT、MIXED這三種,MySQL5.5預設為MIXED混雜模式(就是平時使用statement記錄二進位日誌,但是需要使用ROW時就會使用);MySQL 5.6已經改為基於STATEMENT 了。
log_slave_updates=OFF
預設值為OFF,用於設定複製情境中的從伺服器是否將從主伺服器收到的更新操作記錄進原生二進位日誌中,本參數設定的生效需要在從伺服器上啟用二進位日誌功能。預設不會將從master取得並執行的二進位日誌寫入自己的二進位記錄檔中。
log_bin=ON
預設為ON,啟用二進位日誌記錄功能,作用範圍為全域層級,屬於靜態變數。
sql_log_bin=ON
預設值為ON,用於控制二進位日誌資訊是否記錄進記錄檔,前提要開啟二進位日誌功能。作用範圍為會話變數,屬於動態變數。
max_binlog_size = 1073741824
預設為1G,指定單個二進位記錄檔的最大值,如果超過該值,則產生新的二進位檔案,尾碼名+1,並記錄到.index檔案中。預設為1G,也可以手動重新整理該檔案。
sync_binlog=0
預設值為0,在預設情況下,二進位日誌並不是在每次寫的時候同步到磁碟,它會進行緩衝寫。因此,當資料庫所在作業系統發生宕機時,可能會有最後一部分資料沒有寫入二進位記錄檔中。此參數表示每次緩衝多少次就同步到磁碟,1表示採用同步寫磁碟的方式來寫二進位日誌,這時寫操作不適用作業系統的緩衝來寫二進位日誌,會帶來一定的效能下降。該值預設為0,表示採取緩衝寫,效能好。
但是,將sync_binlog設為1時,又有一種情況會導致問題的發生。當使用InnoDB儲存引擎時,在一個事務發出COMMIT動作之前,由於sync_binlog設為1,因此會講二進位日誌立即寫入磁碟。如果這個時候已經寫入了二進位日誌,但是提交還沒有發生,並且此時發送了宕機,那麼在MySQL資料庫下次啟動時,因為COMMIT操作並沒有發生,所以這個事物會被復原掉。但是二進位日誌以及記錄了該事物資訊,不能被復原。這個問題可以通過參數innodb_support_xa設為1來解決,雖然innodb_support_xa與XA事務有關,但它同時也確保了二進位日誌和innodb儲存引擎資料檔案的同步。
log_bin_trust_function_creators=OFF
預設值為OFF,此參數僅在啟用二進位日誌時有效,用於控制建立儲存函數時如果會導致不安全的事件記錄二進位日誌條件下是否禁止建立儲存函數。預設值為0,表示除非使用者除了CREATE ROUTING或ALTER ROUTINE許可權外還有SUPER許可權,否則將禁止建立或修改儲存函數,同時,還要求在建立函數時必需為之使用DETERMINISTIC屬性,再不然就是附帶READS SQL DATA或NO SQL屬性。設定其值為1時則不啟用這些限制。作用範圍為全域層級,可用於設定檔,屬動態變數
binlog_cache_size=32768
預設為32k,當使用事務引擎時,所有未提交的二進位日誌會被記錄到一個緩衝中去,而該緩衝的大小有此參數控制。此值不能設定過大,當然也不能過小,不然當一個事務的記錄大於設定的binglog_cahce_size時,MySQL會把緩衝中的日誌寫入一個臨時檔案中。通過SHOW GLOBAL STATUS命令查看binlog_cache_use(記錄使用緩衝寫二進位日誌的次數)、binglog_cahce_disk_use(記錄使用臨時檔案寫二進位日誌的次數)的狀態,可以判斷當前binlog_cache_size的設定是否適合。
max_binlog_cache_size = 18446744073709547520
二進位日誌語句緩衝大小,位元組為單位。表示的是binlog能夠使用的最大cache記憶體大小
當我們執行多語句事務的時候所有的會話的使用的記憶體超過max_binlog_cache_size的值時
就會報錯:“Multi-statement transaction required more than ‘max_binlog_cache_size’ bytes ofstorage”。此值的大小跟記憶體中資料同步到磁碟上的時間有關,緩衝越大效能越好資料丟失比例越大,緩衝越小效能越低資料丟失比例越小。
binlog_stmt_cache_size=32768
預設值32k,這個變數決定舉行非事務語句在事務期間發布的二進位日誌緩衝的大小。如果伺服器支援任何事務儲存引擎,如果伺服器有二進位日誌啟用,則為每個用戶端分配一個單獨的二進位日誌事務和語句緩衝。如果你經常使用大型非事務語句在交易過程中,你可以增加緩衝大小以獲得更好的效能。可以通過查狀態變數binlog_stmt_cache_use和binlog_stmt_cache_disk_use的值來判斷32k是否夠用。
max_binlog_stmt_cache_size = 18446744073709547520
如果非事務語句在事務需要超過多少位元組的記憶體,伺服器會產生一個錯誤。
binlog_rows_query_log_events
MySQL 5.7新增參數,預設關閉 ,可選開啟,建議開啟,還是比較有用的。可以看到二進位日誌格式為row的情況下的sql語句,方便排查問題和恢複資料。
binlog_max_flush_queue_time
預設值為0,用來控制MySQL 5.6新增的BLGC(binary log group commit),就是二進位日誌組提交中Flush階段中等待的時間,即使之前的一組事務完成提交,當前一組的事務也不馬上進入Sync階段,而是至少需要等待一段時間,這樣做的好處是group commit的事務數量更多,然而這也可能會導致事務的回應時間變慢。該參數預設為0表示不等待,且推薦設定依然為0。除非使用者的MySQL資料庫系統中有大量的串連(如100個串連),並且不斷地在進行事務的寫入或更新操作。(註:binlog_max_flush_queue_time在MySQL的5.7.9及之後版本不再生效)
binlog_group_commit_sync_delay=N
binlog_group_commit_sync_no_delay_count=N
MySQL 5.7.9版本後,binlog_max_flush_queue_time參數失效。新增,MySQL等待binlog_group_commit_sync_delay毫秒直到達到binlog_group_commit_sync_no_delay_count事務個數時,將進行一次組提交。
五、中繼日誌
relay_log = mysql-relay-bin
開啟中繼日誌,這裡的值時中繼日誌的基名。預設是庫的名字是host_name-realy-bin,伺服器在資料目錄中寫入檔案,除非給出了一個具有領先絕對路徑的檔案制定一個不同的目錄。伺服器通過在基名中添加一個數字尾碼來建立中繼記錄檔。
relay_log_index = mysql-relay-bin.index
用於中繼日誌索引檔案的名稱,預設名稱是在資料目錄host_name-relay-bin.index,哪裡host_name是從伺服器的名稱。
relay_log_info_file = relay-log.info
該檔案用於記錄中繼日誌的檔案和事件位置以及二進位的檔案和事件位置。
relay_log_info_repository = FILE
這個變數決定中繼日誌的位置寫入到一個檔案(中繼日誌資訊)或表(MySQL.slave_relay_log_info)。
relay_log_purge = ON
預設值為ON,啟動自動清除中繼日誌。這是一個全域變數。
relay_log_recovery = OFF
預設值為OFF,當slave從庫宕機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,則自動放棄所有未執行的relay-log,並且重新從master上擷取日誌,這樣就保證了relay-log的完整性。預設情況下該功能是關閉的,將relay_log_recovery的值設定為 1時,可在slave從庫上開啟該功能,建議開啟。
relay_log_space_limit = 0
防止中繼日誌寫滿磁碟,這裡設定中繼日誌最大限額。但此設定存在主庫崩潰,從庫中繼日誌不全的情況,不到萬不得已,不推薦使用.
sync_relay_log = 10000
sync_relay_log_info = 10000
這個參數和sync_binlog是一樣的,當設定為1時,slave的I/O線程每次接收到master發送過來的binlog日誌都要寫入系統緩衝區,然後刷入relay log中繼日誌裡,這樣是最安全的,因為在崩潰的時候,你最多會丟失一個事務,但會造成磁碟的大量I/O。當設定為0時,並不是馬上就刷入中繼日誌裡,而是由作業系統決定何時來寫入,雖然安全性降低了,但減少了大量的磁碟I/O操作。這個值預設是0,可動態修改,建議採用預設值。
max_relay_log_size = 0
#設定從伺服器上中繼日誌的體積上限,到達此限度時其會自動進行中繼日誌滾動。此參數值為0時,mysqld將使用max_binlog_size參數同時為二進位日誌和中繼日誌設定記錄檔體積上限。作用範圍為全域層級,可用於設定檔,屬動態變數
六、交易記錄
交易記錄也稱為重做日誌(redo log),關於redo相關的變數,在“InnoDB檔案及變數”章節看。
MySQL各類記錄檔相關變數介紹