🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# MySQL服务日志 [TOC] ## 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服务日志](http://www.cnblogs.com/wangkongming/p/3684950.html)(待梳理)