`

MySQL 日志

阅读更多

MySQL 日志

概述

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,delete等,不包括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目录下
 
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

1
1
分享到:
评论

相关推荐

    MySQL日志分析(包括工具)

    ### MySQL日志分析详解 #### 一、引言 MySQL作为一种广泛使用的开源关系型数据库管理系统,在维护数据库稳定性与性能方面发挥着至关重要的作用。为了更好地监控数据库的状态并及时解决潜在问题,MySQL提供了多种...

    linux运维学习笔记:Mysql日志.pdf

    MySQL日志是MySQL数据库中非常重要的一个组成部分,它们记录了数据库的各种活动,对于数据库的维护、故障排查以及性能优化都有着不可忽视的作用。在运维管理中,熟悉MySQL日志的配置和使用是非常关键的技能。本文将...

    使用Kettle获取MySQL日志文件名称

    使用Kettle获取MySQL日志文件名称

    MySQL日志管理详细讲解

    MySQL日志管理详细讲解 MySQL日志管理是数据库管理员的必备技能之一。日志文件记录了数据库的各种操作和错误信息,对于数据库的维护和错误排查起着至关重要的作用。本文将详细讲解 MySQL 日志管理的概念、种类、...

    阿里开发的,基于mysql日志消费客户端.zip

    基于 MySQL 日志消费客户端是一种用于处理 MySQL 数据库的日志文件的软件。它可以帮助用户实时监控数据库的状态,自动捕获和处理数据库的异常情况,从而提高数据库的可靠性和稳定性。 MySQL 日志消费客户端的主要...

    MYSQL日志与备份还原问题详解

    MySQL日志与备份还原是数据库管理中的重要环节,它们对于数据的安全性和可恢复性起着至关重要的作用。本文主要探讨了MySQL的错误日志、二进制日志(BINLOG)、数据备份和数据恢复这四个关键知识点。 首先,错误日志...

    mysql日志文件的使用.pdf

    MySQL日志文件是数据库管理的重要组成部分,它们记录了MySQL服务器的各种操作,有助于故障排查、数据恢复和性能优化。本文将详细介绍MySQL的日志类型、配置方法以及如何查看和使用这些日志。 1. MySQL日志类型: -...

    mysql日志.txt

    mysql log 学习

    MySQL日志的具体介绍

    MySQL 日志的具体介绍 MySQL 日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此...

    mysql日志清理手册

    MySQL日志清理手册 在MySQL数据库管理中,日志文件起着至关重要的作用,它们记录了数据库的各种操作,包括但不限于错误信息、查询历史以及数据变更等。这些日志对于故障排查、数据恢复和主从复制至关重要。然而,...

    第15章 MySQL日志PPT

    **MySQL日志系统详解** MySQL日志是数据库管理系统中至关重要的一部分,它记录了数据库的各种操作,包括查询、更新、插入和删除等。日志的存在确保了数据的安全性、可恢复性和性能优化。在本章中,我们将深入探讨...

    mysql 日志备份恢复2

    MySQL日志系统是数据库管理的重要组成部分,它对于数据安全、故障恢复和性能优化起到关键作用。本文将详细介绍MySQL中的几种日志类型,以及如何利用这些日志进行备份和恢复。 首先,MySQL的日志系统包括错误日志、...

    MySQL日志系统,一条SQL跟新语句是如何执行的,高清

    MySQL日志系统是数据库管理中非常关键的一部分,它记录了数据库中发生的所有事件。一条SQL更新语句的执行流程不仅仅是简单地修改数据而已,其背后有一整套复杂机制确保数据的安全、准确和恢复能力。本知识点将详细...

    mysql日志文件的使用.docx

    MySQL日志文件在数据库管理中扮演着至关重要的角色,它们记录了数据库的各种操作,帮助管理员监控、诊断问题以及实现数据恢复。以下是对MySQL日志类型的详细解释和使用方法: 1. **错误日志(The error log)**:这...

    MySQL数据库日志管理.ppt

    MySQL日志主要分为四类:错误日志、查询日志、二进制日志和慢查询日志。错误日志记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。查询日志记录建立的客户端连接和执行的语句。二进制日志记录所有更改数据的...

    MySQL 日志详解(超详细)

    MySQL日志系统是数据库管理的重要组成部分,它记录了数据库的各种操作和事件,为故障排查、性能优化、数据恢复等提供了重要参考。以下是对MySQL日志的详细解析: 1. 错误日志(Error Log) MySQL的错误日志记录了...

    07.26MySQL日志 备份与恢复1

    MySQL 日志备份与恢复 MySQL 是一种常用的关系数据库管理系统,它提供了多种日志机制来记录数据库的各种操作和错误信息。这些日志文件对于数据库的备份和恢复至关重要。本文将详细介绍 MySQL 的日志机制、备份类型...

Global site tag (gtag.js) - Google Analytics