深入浅出MySQL开发优化和管理维护学习笔记之MySQL日志文件

一、配置文件分类与参数


  1. 错误日志


数据库启停过程中错误,运行过程中的异常。

保存方式: 文件

启用方式:无需使用开关参数启用,默认开启

相关参数

文件位置参数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 |

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

1 row in set (0.00 sec)


mysql> show variables like "expire_logs_days";

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

| Variable_name    | Value |

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

| expire_logs_days | 7     |

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

1 row in set (0.00 sec)


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%";

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

| Variable_name | Value |

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

| log_output    | FILE  |

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

1 row in set (0.01 sec)


mysql> 

本文出自 “yiyi” 博客,请务必保留此出处http://heyiyi.blog.51cto.com/205455/1638585

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。