本文更新于2020-05-03,使用MySQL 5.7,作業系統為Deepin 15.4,
目錄
- 錯誤日志
- 二進制日志
- 查詢日志
- 慢查詢日志
- 其他日志分析工具
MySQL有4種日志:錯誤日志、二進制日志(BINLOG)、查詢日志、慢查詢日志,
錯誤日志
錯誤日志記錄了mysqld的啟動和停止,以及運行程序中發生的嚴重錯誤,其格式為純文本,默認開啟,
SHOW VARIABLES相關變數:
- log_error:當前的錯誤日志檔案名,
mysqld命令列選項:
- --log-error[=filename]:錯誤日志檔案名,默認為“主機名.err”,默認保存在datadir指定的目錄中,
二進制日志
二進制日志記錄了所有的DDL陳述句和DML陳述句,其格式為二進制,默認不開啟,
二進制日志的格式分3種:基于陳述句(STATEMENT)的日志格式SBL、基于行(ROW)的日志格式RBL、混合(MIXED)格式,
SHOW VARIABLES相關變數:
- binlog_format:二進制日志格式,
- expire_logs_days:二進制日志過期天數,
- log_bin:是否開啟二進制日志,
- log_bin_basename:二進制日志基于的檔案名(實際的檔案名會追加形如.000001的編號),
- log_bin_index:二進制索引檔案名,
- sql_log_bin:是否寫入二進制日志,具有SUPER權限可禁止將自己的陳述句寫入二進制日志,
- sync_binlog:0表示由檔案系統控制二進制日志快取的重繪,大于0表示每若干條二進制日志重繪檔案系統快取,
mysqld命令列選項:
- --binlog-do-db=dbname:沒顯式指定的資料庫不記錄二進制日志,可指定多次,
- --binlog-ignore-db=dbname:沒顯式忽略的資料庫都記錄二進制日志,可指定多次,
- --binlog-format=format:設定二進制日志格式,可為STATEMENT、ROW、MIXED,
- --innodb-safe-binlog:經常和--sync-binlog一起使用,令事務在日志中的記錄更安全,
- --expire-logs-days=n:設定二進制日志的過期天數,
- --log-bin[=filename]:啟用二進制日志并指定日志檔案名,默認為“主機名-bin”,默認保存在datadir指定的目錄中,
my.cnf配置[mysqld]:
- expire_logs_days=n:設定二進制日志過期天數,
- log-bin[=basename]:打開二進制日志并指定日志檔案名,默認為“主機名-bin”,默認保存在datadir指定的目錄中,需同時配置server-id,否則服務器會無法啟動,
- server-id=id
洗掉日志有如下幾種方法:
- 執行
RESET MASTER,洗掉所有日志,新的日志編號從000001開始, - 執行
PURGE MASTER LOGS TO 'hostname-bin.xxxxxx',將編號xxxxxx之前(不含)的日志洗掉, - 執行
PURGE MASTER LOGS BEFORE 'yyyy-mm-dd HH:MM:ss',將指定時間之前的日志洗掉,
可使用FLUSH LOGS重繪日志檔案,
查詢日志
查詢日志記錄了所有陳述句,其格式為純文本,默認不開啟,
SHOW VARIABLES相關變數:
- sql_log_off:是否寫入查詢日志,
mysqld命令列選項:
- --general-log[=0|1]:是否啟用查詢日志,
- --general-log-file=filename:指定查詢日志檔案名,默認為“主機名.log”,默認保存在datadir指定的目錄中,
- --log-output[={NONE|TABLE|FILE}[,...]]:設定查詢日志和慢查詢日志的保存方式,NONE為不保存,其優先級最高;TABLE為保存至表中,查詢日志保存至mysql.general_log表,慢查詢日志保存至msql.slow_logy表;FILE為保存至檔案中,為默認值,
慢查詢日志
慢查詢日志記錄所有執行時間(獲得鎖的時間不算執行時間)超過long_query_time(秒)并且掃描記錄數不少于min_examined_row_limit的陳述句,其格式為純文本,默認不開啟,
默認情況下,有兩種陳述句不會記錄到慢查詢日志:管理陳述句和不使用索引進行查詢的陳述句,管理陳述句包括ALTER TABLE、ANALYZE TABLE、CHECK TABLE、OPTIMIZE TABLE、REPAIR TABLE、CREATE INDEX、DROP INDEX,
SHOW VARIABLES相關變數:
- slow_query_log:是否啟用慢查詢日志,
- slow_query_log_file:慢查詢日志檔案名,
mysqld命令列選項:
- --log-output[={NONE|TABLE|FILE}[,...]]:見查詢日志相關選項說明,
- --log-queries-not-using-indexes:監控不使用索引進行查詢的陳述句,
- --log-slow-admin-statements:監控管理陳述句,
- --slow-query-log[=0|1]:是否啟用慢查詢日志,
- --slow-query-log-file=filename:指定慢查詢日志檔案名,默認為“主機名-slow.log”,默認保存在datadir指定的目錄中,
my.cnf配置[mysqld]:
- slow_query_log:是否啟用慢查詢日志,
其他日志分析工具
還可以安裝使用mysqlsla、myprofi、mysql-explain-slow-log、mysqllogfilter等工具,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/3156.html
標籤:MySQL
上一篇:178. 分數排名
下一篇:mysql忘記密碼,如何修改
