概述

MySQL日志记录了MySQL服务器的各种行为,MySQL中日志有如下几种:

类型

描述

Error Log

记录 MySQL启动,运行,停止过程

General Query Log

记录客户端的连接以及接受的SQL

Binary Log

记录改变数据的语句(通常用于复制)

Relay Log

记录 从Master上接受到的数据变更

Slow Query Log

记录慢查询

DDL Log

记录DDL

在Windows平台,默认情况下只有Error Log是开启的

1. 错误日志 Error Log

错误日志记录了当mysql启动、停止和运行过程中发生任何严重错误时的相关信息,以便排错,可通过配置项log-error=[file-name] 来指定错误日志文件位置,默认文件名为 hostname.err,位于data目录下。.

2. 查询日志General Query Log

查询日志记录了客户端的所有语句

启用查询日志:

Java代码  

[mysqld]

general_log[={0|1}] # 设为1或不设值则代表启用

general_log_file = file_name # 指定日志文件名,若不配置该项则默认为hostname.log,hostname为主机名,位于data目录下

关于log-output配置项

该选项指定日志输出到哪里,该选项对查询日志和慢查询日志都有效

Java代码  

[mysqld]

log-output=[value,...]

value 可取值为FILE,TABLE和NONE

FILE表示记录到文件中,TABLE表示记录到mysql.general_log表中,NONE表示不记录,可以设置多个,用逗号隔开,但只要设置了NONE,则即使设置了FILE或者TABLE也不会记录

3. 二进制日志 Binary Log

二进制日志记录了对数据库的所有更改数据的操作,意味着包括update,select等,不包括select,show等,此外,二进制日志同时也会记住更改操作的执行时间点和执行时长。

二进制日志主要有两方面的用途:

1.恢复(Recovery):某些数据的恢复需要二进制日志,如当一个数据库全备文件恢复后,可以通过二进制日志进行Point-In-Time恢复

2.复制(Replication):Master通过将二进制日志发给Slave,Slave将日志存到Relay Log中,然后Slave中的进程/线程再从Relay Log中读取记录执行数据更改操作,从而达到数据一致的目的

二进制日志默认是不开启的,我们可以再配置文件中 用log-bin[=name] 配置项启用:

Ini代码  

log_bin = mysql_bin

按上面配置后,MySQL会把二进制日志写到data目录下文件名为mysql_bin.00001,mysql_bin.00002....的文件中,同时data目录下还会有个文件名为mysql_bin.index的文件,该文件用来存储所有的二进制日志文件的文件名。

和二进制日志相关的配置项有如下:

max_binlog_size:指定单个二进制日志文件的最大大小,单位为字节,默认为1GB

binlog_cache_size:当使用事务时,未提交的事务二进制日志会写到缓存中,等到提交时才把缓存中的写到磁盘中,而该参数指定了缓存的大小,默认为32KB,该参数是基于会话的,当一个线程开始一个事务时,都会申请一个该参数指定大小的缓冲区,所以不能设太大,另外,当该缓存用完时MySQL会把日志写入到一个临时文件中,因此也不能设的太小。通过show global status查看binlog_cache_use和binlog_cache_disk_use,前者表示写缓冲二进制日志的次数,后者表示写临时文件日志的次数,从而调整适应当前生产环境

sync_binlog:表示写缓冲多少次就将缓冲区的日志刷到磁盘中,设为1则表示不使用缓冲,每次写日志都直接写到磁盘中

binlog-do-db:要写二进制日志的数据库

binlog-ignore-db:不用写二进制日志的数据库

log-slave-update:如果当前MySQL为Slave,那么默认是不会把从Master那里接受到的binlog写入到自己的binlog中的,如果想这么做,那么加上该配置即可,在Master -> Slave1 -> Slave2 这种情况下非尾的Slave必须配置该项。

binlog_format:二进制日志的格式,可选值:STATEMENT、ROW和MIXED

STATEMENT:记录的是SQL语句,在语句中使用了如UUID,TIMESTAMP等时会导致数据不一致的问题

ROW:记录表的行更改情况,解决了上面说的数据不一致问题

MIXED:混合使用,根据语句具体情况来判断使用STATEMENT还是ROW

binlog_format是动态参数,可以在运行时改变

Sql代码  

setsession binlog_format = row;

或者

setglobalbinlog_format = row;

可以使用mysqlbinlog来查看二进制日志:

查看当前格式

删除二进制日志的一些方法

1.用reset master 命令删除所有binlog文件,之后的文件将重新于000001后缀开始命名

2.执行 "PURGE MASTER LOGS TO 'mysql-bin.******' "命令,该命令将删除'******'编号之前的所有日志

3.执行 "PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh24:mi:ss'" 命令,该命令将删除日期为 'yyyy-dd-dd hh24:mi:ss'之前的所有日志。

4.设置mysqld组的配置项 expire_logs_days=n, n指定了过期天数,过了指定的天数后,日志文件将被自动删除

4. 慢查询日志

慢查询日志记录了所有执行事件超过参数long_query_time(秒) 指定的时长并且扫描记录数不小于min_examined_row_limit的所有SQL语句的日志(获得表锁定的事件不算执行时间)

在默认情况下,管理语句(如ALTER TABLE,ANALYZE TABLE,CHECK TABLE,CREATE INDEX,DROP INDEX,OPTIMIZE TABLE和REPAIR TABLE)和不使用索引进行查询的语句不会记录到慢查询日志中,

如想启用,则分别用参数--log-slow-admin-statements和log_queries_not_using_indexes设置

启用慢查询日志:

Java代码  

[mysqld]

slow_query_log[={0|1} # 不设置或设为1则启用

slow_query_log_file[=file_name] # 指定日志文件名,若不配置该项则默认为hostname-slow.log,hostname为主机名,位于data目录下

logout配置项同样对慢查询日志有效。

5. DDL日志

DDL语句顾名思义就是记录DDL语句的,mysql用此文件来从执行ddl语句down掉时恢复,日志记录到data目录下的ddl_log.log中;该文件为二进制文件,每次mysqld成功启动,该文件都将被删除;

该文件最大大小为1048573字节,即4GB

参考:http://dev.mysql.com/doc/refman/5.7/en/server-logs.html

http://lixiaohui.iteye.com/blog/2351504

mysql 日志 iteye_MySQL 日志相关推荐

  1. 简单分析MySQL 一则慢日志监控误报问题

    这篇文章主要介绍了MySQL 一则慢日志监控误报的问题分析与解决,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下 之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原 ...

  2. MySQL慢查询日志分析(一)

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...

  3. mysql有多少种日志_MySQL到底有多少种日志类型必须我们记住的!

    MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...

  4. MySQL管理之日志详解

    MySQL日志详解 错误日志 MySQL的错误信息是在data目录下的 错误日志本身所定义的内容本身是可以定义的 编辑配置文件,定义错误日志: log-error=/path/to/xx.err   ...

  5. MySQL 慢查询日志分析及可视化结果

    MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的 ...

  6. mysql慢查询日志平时开启吗_MySQL开启慢查询日志功能的方法

    mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里是否有很耗费资源的sql语句,这是一个有用的日志.它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失 ...

  7. MySQL的binlog日志

    一:MySQL的4种不同日志 1:error log,错误日志. 记录了系统启动,运行以及停止过程中遇到的一些问题 2:general log,普通日志 记录了MySQL执行的所有语句以及语句开始执行 ...

  8. MySQL慢查询日志的配置与使用_MySQL 慢查询日志的开启与配置

    简介 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能. 查看是否开启慢查询功能: mysql> show variables like 'slow_ ...

  9. MySQL慢查询日志总结

    https://www.cnblogs.com/kerrycode/p/5593204.html 慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间 ...

最新文章

  1. 仲兆鹏 160809329 第5次
  2. Maven的生命周期和maven-assembly-plugin插件使用
  3. WPF自定义产品框架
  4. Boostrap ZURB Foundation —— Web开发前端框架
  5. 通用业务流水号功能设计
  6. mysql数据库作业_mysql数据库操作练习
  7. php自定义tcp协议,如何实现自定义协议?
  8. 【NodeJS 学习笔记02】入门资源很重要
  9. 在兼职的情况下,有什么办法可以在年底之前挣5000到一万块?
  10. 三星oneui主屏幕费电_这或许是单手握持手感最佳的手机 三星Galaxy S20上手体验...
  11. Java (do while)
  12. epsonl360打印机连接电脑_爱普生l360驱动下载
  13. 嵌入式:ARM相关开发工具概述
  14. caffe make runtest 错误
  15. WinRT surface屏幕常亮设置
  16. 商法——企业法律风险防范
  17. Python学习基础方便查询
  18. java中除法和取余的若干注意
  19. iOS开发,导入c文件引发的 Unknown type name 'NSString' 问题
  20. VS2017 水晶报表安装及使用

热门文章

  1. c语言整形符号位_C语言中32位有符号整数如何定义
  2. 独立站需要ERP系统吗?
  3. mysql 查看表格scott_在mysql中创建 oracle scott 用户的四个表及插入初始化数据
  4. node ajax crud,基于node.js和rethinkdb的CRUD(增删改查)Web服务
  5. 二叉搜索树(二叉排序树)
  6. 面试准备每日五题:C++(五)——野指针、句柄指针、newdeletemallocfree、extern、类成员权限
  7. sigmoid函数手动求导
  8. 机器学习-吴恩达-笔记-5-神经网络学习
  9. 若依图片上传成功不能显示的解决办法?
  10. fiddler如何显示IP地址栏?