watak

MySQL服务日志

  • MySQL服务日志

    • MySQL服务日志分类

      • 慢查询日志

        • 查看慢查询日志的定义

        • 启动和设置慢查询日志

      • 二进制日志

MySQL服务日志分类

  • 错误日志(error):记录MySQL服务进程mysqld在启动/关闭或者运行过程中遇到的错误信息;

  • 查询日志(query log),分为以下两类:

    • 普通日志(general query log):记录客户端连接信息和执行的SQL语句信息(

      生产环境中一般不开启

      );

    • 慢查询日志(slow query log):记录执行时间超出指定值(long_query_time)的SQL语句;

  • 二进制日志(binary log):记录数据被修改的相关信息

慢查询日志

慢查询日志是用来记录执行时间超过指定时间的查询语句。
  通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。
  一般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执行了很长时间的查询语句,可以帮助我们定位性能问题的。

查看慢查询日志的定义

mysql> SHOW  GLOBAL VARIABLES LIKE 'slow_query%';
|  slow_query_log    | OFF    # 定义慢查询日志的
|  slow_query_log_file    |/mydata/data/stu18-slow.log    # 输出方式为file(文件)时定义慢查询日志的位置

启动和设置慢查询日志

通过配置文件my.cnf中的log-slow-queries选项可以开启慢查询日志;
>[danger]
[mysqld]
slow_query_log=1
long_query_time=10 # 设置默认超过时间记录慢查询日志
log-slow-queries [=  DIR/[filename] ]
log_queries_not_using_indexes=on # 未使用索引的查询语句是否记录

通过命令行直接定义或者修改满查询日志时间

mysql>  SHOW  GLOBAL VARIABLES LIKE 'long%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+

mysql> set global long_query_time=10;
Query OK, 0 rows affected (0.00 sec)

mysql>  SHOW  GLOBAL VARIABLES LIKE 'long%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

二进制日志

二进制日志中常用的定义格式:

1、语句(statement):默认的记录格式;
2、行(row):定义的并非数据本身而是这一行的数据是什么;
3、混合模式(mixed):交替使用行和语句、由mysql服务器自行判断。

其中基于行的定义格式数据量会大一些但是可以保证数据的精确性。

更多详情参考:MySQL服务日志(待梳理)


Artikel sebelumnya: Artikel seterusnya: