天天看點

深入淺出MySQL開發優化和管理維護學習筆記之MySQL日志檔案

一、配置檔案分類與參數

錯誤日志

資料庫啟停過程中錯誤,運作過程中的異常。

儲存方式: 檔案

啟用方式:無需使用開關參數啟用,預設開啟

相關參數

檔案位置參數log_error,如果不指定值預設在DATADIR目錄下,名稱為host_name.error。

2.二進制(bin)日志

所有DDL和DML但不包含查詢語句。

啟用方式:需要配置檔案中設定開關參數啟用,預設關閉(OFF)

檔案位置參數log_bin,如果不指定名稱,名稱為host_name-bin.NUM;如果隻指定名稱,以指定名稱。均預設放到DATADIR目錄下。

binlog_format=STATEMENT/ROW/MIXED,日志格式控制,預設自動開啟。

expire_logs_days=N,日志儲存周期,預設為0,無限制。

也可使用指令删除SQL指令行RESET MASTER 或 PERGE MASTER LOGS

讀取指令

mysqlbinlog

使用場景:高可用主從複制、資料庫恢複時使用

3.查詢日志

全部SQL語句包含select。

儲存方式: 檔案 或 表(general_log)

要永久生效,需要配置檔案中設定開關參數啟用,預設關閉(OFF)

檔案位置參數general_log,參數已經顯示設定設定為 1 或不設定均表示啟用,設定為0 表示禁用。

general_log_file,如果未指定值,或者未顯示設定log_output的值,預設放到DATADIR目錄下hostname.log

4.慢查詢日志

全部超過參數long_query_time且掃描記錄數不小于long_query_time的SQL語句,管理語句和不适用索引的select不記錄。

儲存方式: 檔案 ,日志檔案中可以精确到微妙 或 表(slow_log),表中記錄隻能精确到秒。

啟用方式:要永久生效,需要配置檔案中設定開關參數啟用,預設關閉(OFF)

檔案位置參數slow_query_log,參數已經顯示設定,值設定為 1 或不設定均表示啟用,設定為0 表示禁用。

slow_query_log_file ,如果未指定值,預設hostname-slow.log放到DATADIR目錄下

log_output = file,table,可以指定其一或全部選擇;

相關工具

msqldumpslow 對慢日志進行分類,建議正常情況下開啟設定,并經常檢視。

使用場景:SQL優化,伺服器性能診斷。

5.第三方日志工具

慢查詢日志、查詢日志、二進制日志、使用者自定義類型日志檢視工具

mysqlsla

二、配置檔案舉例

[root@mdb01 mysql]# pwd

/opt/mysql

[root@mdb01 mysql]# vi my.cnf 

# Start of my.cnf file

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

####### log setting ########

### bin log ###

log-bin

binlog_format = STATEMENT

expire_logs_days = 7

### slow log ###

slow_query_log = 1

log_output = file

# These are commonly set, remove the # and set as required.

# basedir = .....

# datadir = .....

# port = .....

# server_id = .....

# socket = .....

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

# End of my.cnf file

三、驗證配置

1.二進制日志

mysql> show variables like "log_bin";

+---------------+-------+

| Variable_name | Value |

| log_bin       | ON    |

1 row in set (0.00 sec)

mysql> show variables like "binlog_format%";

+---------------+-----------+

| Variable_name | Value     |

| binlog_format | STATEMENT |

mysql> show variables like "expire_logs_days";

+------------------+-------+

| Variable_name    | Value |

| expire_logs_days | 7     |

2.慢查詢日志

mysql> show variables like "slow_query_log%";

+---------------------+--------------------------------+

| Variable_name       | Value                          |

| slow_query_log      | ON                             |

| slow_query_log_file | /opt/mysql/data/mdb01-slow.log |

2 rows in set (0.00 sec)

mysql> show variables like "log_output%";

| log_output    | FILE  |

1 row in set (0.01 sec)

mysql> 

本文轉自 pgmia 51CTO部落格,原文連結:http://blog.51cto.com/heyiyi/1638585