mysql笔记:10. 日志


日志是MySQL数据库的重要组成部分,日志文件中记录着MySQL数据库运行期间发生的变化。MySQL有不同类型的日志文件,包括错误日志、通用查询日志、二进制日志以及慢查询日志等。对于管理工作而言,这些日志文件是不可缺少的。

一、日志概述

MySQL日志主要分为四类。

  1. 错误日志:记录服务的启动、运行或停止MySQL服务时出现的问题。
  2. 查询日志:记录建立的客户端连接和执行的语句。
  3. 二进制日志:记录所有更改数据的语句,可以用于数据复制。
  4. 慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引的查询。

在默认情况下,所有日志创建于MySQL数据目录中。通过刷新日志,可以强制MySQL关闭和重新打开日志文件。当执行一个FLUSH LOGS语句或执行mysqladmin flush-logsmysqladmin refresh时,将刷新日志。
如果正在使用MySQL复制功能,在复制服务器上可以维护更多日志文件,这种日志称为接替日志。
启动日志功能会降低MySQL数据库的性能。同时,日志会占用大量的磁盘空间。

二、错误日志

错误日志记录着MySQL服务器的启动和停止过程中的信息、服务器在运行过程中发生的故障和异常情况的相关信息、事件调试器运行一个事件时产生的信息、从服务器上启动服务器进程时产生的信息等。

1. 启动

在默认状态下错误日志功能是开启的,并且不能被禁止。错误日志信息也可以通过修改my.ini文件自行配置。它所记录的信息是通过log-error和log-warnings来定义的。其中log-error定义是否启用错误日志的功能和错误日志的存储位置,log-warnings定义是否将警告信息也定义到错误日志中。
–log-error=[file-name]是用来指定错误日志存放的位置。如果没有指定,则默认hostname.err作为文件名,默认存放在DATADIR目录中。

2. 查看

错误日志是以文本文件形式存储的,可以直接使用普通文本工具打开查看。
通过show命令可以查看错误日志文件所在目录及文件名信息:

mysql> show variables like 'log_error';

3. 删除

管理员可以删除很久之前的错误日志以释放磁盘空间。
可以使用mysqladmin和flush logs来开启新的错误日志。

> mysqladmin -u username -p flush-logs
# 或
mysql> flush logs

三、二进制日志

二进制日志文件用来记录所有用户对数据库的操作。当数据库发生意外时,可以通过此文件查看在一段时间内用户所做的操作,结合数据库备份技术,即可再现用户操作,使数据库恢复。
它有三种不同的格式:

  • statement:每一条变更记录的构图都会记录。执行啥,记录啥
  • row:不记录SQL,SQL影响几行,记录这些修改内容
  • mixed:以上两种方式混合使用。Service层根据执行的SQL语句智能选择一种。

1. 启动

二进制日志记录了所有对数据库数据的修改操作,开启二进制日志可以实现以下功能:

  • 恢复(recovery):某些数据的恢复需要二进制日志。
  • 复制(replication):其原理与恢复类似,通过复制和执行二进制日志使一台远程的MySQL数据库(一般称为slave或standby)与另一台MySQL数据库(一般称为master或primary)进行实时同步。
  • 审计(audit):用户可以通过二进制日志中的信息来进行审计。
[mysqld]
log-bin [=path/ [filename] ]
expire_logs_days = 10
max_binlog_size = 100M

2. 查看

# 查看二进制日志是否开启
mysql> show variables like 'log_bin';

# 查看二进制日志的上限值
mysql> show variables like 'max_binlog_size';

# 查看二进制日志文件
mysql> show binary logs;

# 查看二进制日志文件的具体信息
mysql> show binlog events in filename\G

3. 删除

开启二进制日志会对数据库整体性能有所影响,但性能损失十分有限。MySQL的二进制文件可以配置自动删除,同时MySQL也提供了安全的手工删除方法,即reset master;使用purge master logs语句删除部分二进制日志文件。

# 删除所有日志
mysql> reset master;
# 删除指定编号前的日志
mysql> purge master logs to 'filename.****';
# 删除指定日期前的日志
mysql> purge master logs before 'YYYY-MM-DD HH24:MI:SS';

四、通用查询日志

通用查询日志记录所有用户操作,包括启动和关闭服务、执行查询和更新语句等。

1. 启动

默认情况下,MySQL并没有开启通用查询日志。

# 查看通用查询日志状态
mysql> show variables like '%general%';

# 开启通用查询日志
mysql> set @@global.general_log=1;
# 关闭通用查询日志
mysql> set @@global.general_log=0;

2. 查看

通用查询日志是文本文件的形式存储的,可直接打开。

3. 删除

直接删除日志文件即可。

五、慢查询日志

慢查询日志主要用来记录执行时间较长的查询语句。通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化。

1. 启动

慢查询日志默认是关闭的。可以通过配置文件my.ini或my.cnf中的log-slow-queries选项打开,也可以在服务启动时使用–log-slow-queries[=file_name]启动。
启用慢查询日志时,需要配置long_query_time选项指定记录阈值。如果某条查询语句的查询时间超过了这个阈值,这个查询过程将被记录到慢查询日志文件中。

# my.ini或my.cnf
[mysqld]
log-slow-queries=[path / [filename] ]
log-query-time=n

默认存储在数据目录,文件名是hostname-slow.log
时间单位是秒,默认10秒。

mysql> show variables like '%slow%';

2. 查看

文本形式存储,直接查看。

3. 删除

直接删除日志文件即可。

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值