概述
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
查询日志记录了客户端的所有语句
启用查询日志:
- [mysqld]
- general_log[={0 | 1}] # 设为1或不设值则代表启用
- general_log_file = file_name # 指定日志文件名,若不配置该项则默认为hostname.log,hostname为主机名,位于data目录下
关于log-output配置项
该选项指定日志输出到哪里,该选项对查询日志和慢查询日志都有效
- [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] 配置项启用:
- 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是动态参数,可以在运行时改变
- set session binlog_format = row;
- 或者
- set global binlog_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设置
启用慢查询日志:
- [mysqld]
- slow_query_log[={0 | 1} # 不设置或设为1则启用
- slow_query_log_file[=file_name] # 指定日志文件名,若不配置该项则默认为hostname-slow.log,hostname为主机名,位于data目录下
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日志分析详解 #### 一、引言 MySQL作为一种广泛使用的开源关系型数据库管理系统,在维护数据库稳定性与性能方面发挥着至关重要的作用。为了更好地监控数据库的状态并及时解决潜在问题,MySQL提供了多种...
MySQL日志是MySQL数据库中非常重要的一个组成部分,它们记录了数据库的各种活动,对于数据库的维护、故障排查以及性能优化都有着不可忽视的作用。在运维管理中,熟悉MySQL日志的配置和使用是非常关键的技能。本文将...
使用Kettle获取MySQL日志文件名称
MySQL日志管理详细讲解 MySQL日志管理是数据库管理员的必备技能之一。日志文件记录了数据库的各种操作和错误信息,对于数据库的维护和错误排查起着至关重要的作用。本文将详细讲解 MySQL 日志管理的概念、种类、...
基于 MySQL 日志消费客户端是一种用于处理 MySQL 数据库的日志文件的软件。它可以帮助用户实时监控数据库的状态,自动捕获和处理数据库的异常情况,从而提高数据库的可靠性和稳定性。 MySQL 日志消费客户端的主要...
MySQL日志与备份还原是数据库管理中的重要环节,它们对于数据的安全性和可恢复性起着至关重要的作用。本文主要探讨了MySQL的错误日志、二进制日志(BINLOG)、数据备份和数据恢复这四个关键知识点。 首先,错误日志...
MySQL日志文件是数据库管理的重要组成部分,它们记录了MySQL服务器的各种操作,有助于故障排查、数据恢复和性能优化。本文将详细介绍MySQL的日志类型、配置方法以及如何查看和使用这些日志。 1. MySQL日志类型: -...
mysql log 学习
MySQL 日志的具体介绍 MySQL 日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此...
MySQL日志清理手册 在MySQL数据库管理中,日志文件起着至关重要的作用,它们记录了数据库的各种操作,包括但不限于错误信息、查询历史以及数据变更等。这些日志对于故障排查、数据恢复和主从复制至关重要。然而,...
**MySQL日志系统详解** MySQL日志是数据库管理系统中至关重要的一部分,它记录了数据库的各种操作,包括查询、更新、插入和删除等。日志的存在确保了数据的安全性、可恢复性和性能优化。在本章中,我们将深入探讨...
MySQL日志系统是数据库管理的重要组成部分,它对于数据安全、故障恢复和性能优化起到关键作用。本文将详细介绍MySQL中的几种日志类型,以及如何利用这些日志进行备份和恢复。 首先,MySQL的日志系统包括错误日志、...
MySQL日志系统是数据库管理中非常关键的一部分,它记录了数据库中发生的所有事件。一条SQL更新语句的执行流程不仅仅是简单地修改数据而已,其背后有一整套复杂机制确保数据的安全、准确和恢复能力。本知识点将详细...
MySQL日志文件在数据库管理中扮演着至关重要的角色,它们记录了数据库的各种操作,帮助管理员监控、诊断问题以及实现数据恢复。以下是对MySQL日志类型的详细解释和使用方法: 1. **错误日志(The error log)**:这...
MySQL日志主要分为四类:错误日志、查询日志、二进制日志和慢查询日志。错误日志记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。查询日志记录建立的客户端连接和执行的语句。二进制日志记录所有更改数据的...
MySQL日志系统是数据库管理的重要组成部分,它记录了数据库的各种操作和事件,为故障排查、性能优化、数据恢复等提供了重要参考。以下是对MySQL日志的详细解析: 1. 错误日志(Error Log) MySQL的错误日志记录了...
MySQL 日志备份与恢复 MySQL 是一种常用的关系数据库管理系统,它提供了多种日志机制来记录数据库的各种操作和错误信息。这些日志文件对于数据库的备份和恢复至关重要。本文将详细介绍 MySQL 的日志机制、备份类型...