MySQL知识(二十四)——MySQL日志

1 日志简介

  MySQL日志记录了MySQL数据库日常操作和错误信息,从日志当中可以查询到MySQL数据库的运行情况、用户操作、错误信息等,可以为MySQL管理和优化提供必要的信息。
  MySQL日志主要分为4类:错误日志、查询日志、二进制日志、慢查询日志。

2 二进制日志

  二进制日志主要记录MySQL数据库的变化,其包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的语句。
  二进制日志包含关于每个更新数据库的语句的执行时间信息,它不包含没有修改任何数据的语句。使用二进制日志的主要目的是最大可能地恢复数据库,因为二进制日志包含备份后进行的所有更新。

2.1 启动和设置二进制日志

  默认情况下,二进制日志是关闭的。可在MySQL配置文件my.ini下的[mysqld]组添加如下信息来启动:

[mysqld]
log-bin[=path/[filename]]
expire_logs_days=10
max_binlog_size=100M
  • path:日志文件所在的目录路径
  • filename:日志文件的名称,如文件全名为filename.000001,filename.000002等,默认为hostname.000001等;还有一个名为filename.index的文件,文件内容为所有日志的清单。
  • expire_logs_days:清除过期日志的时间,即二进制日志自动删除的天数。默认为0,没有自动删除。
  • max_binlog_size:单个文件的大小限制,超过限制则会新建另一文件。默认是1GB.

2.2 查看二进制日志

  登录MySQL服务器后,通过show binary logs语句可以查看当前的二进制日志文件个数及其文件名。

mysql> SHOW BINARY LOGS;
1381 - You are not using binary logging

  MySQL二进制日志不能直接查看,可以在命令行窗口通过mysqlbinlog命令查看:

C:\Users\asus> mysqlbinlog D:\MySQL\log\binlog.000001

2.3 删除二进制日志

  (1)删除所有二进制文件

RESET MASTER

  (2)删除指定日志文件
登录MySQL服务器后,执行

PURGE {MASTER|BINARY} LOGS TO 'log_name'  /*删除文件名编号比指定文件名编号小的所以日志文件*/
或者
PURGE {MASTER|BINARY} LOGS BEFORE 'date'  /*删除指定日期以前的所有日志文件*/

2.4 使用二进制日志还原数据库

mysqlbinlog [option] filename|mysql -uuser -ppass

option指定可选项。比较重要的两对option参数:- -start-date、- -stop-date(指定恢复数据库的起始时间和结束时间点)和- -start-position、- -stop-position(指定恢复数据库的开始位置和结束位置)。

例如,根据binlog.000008日志文件恢复2011年08月30日15:27:48以前的所有操作:

mysqlbinlog --stop-date="2016-01-01 15:27:48" D:\MYSQL\log\binlog.000008|mysql -uuser -ppass

2.5 暂时停止二进制日志功能

  通过使用SET SQL_LOG_BIN语句可以使用MySQL暂停或者启动二进制日志。

SET sql_log_bin={0|1}

  0:暂停记录二进制日志;
  1:恢复记录。

3 错误日志

  错误日志记录MySQL服务的启动、运行或停止MySQL服务时出现的问题。

3.1 启动和设置错误日志

  默认情况下,错误日志会记录到数据库的数据目录下(即data文件夹)。默认文件名为hostname.err,例如我的电脑名为JTZen9,那么记录错误信息的文件名为JTZen9.err。FLUSH LOGS,重新加载错误日志文件。
  启动错误日志
  修改my.ini(或my.cnf)来配置。在MySQL配置文件的[mysqld]下配置log-error,则启动错误日志:

[mysqld]
log-error=[path/[file_name]]

3.2 查看错误日志

  MySQL错误日志是以文本形式存储的,可以使用文本编辑器直接查看MySQL错误日志。
  如果不知道日志文件在哪里,可以使用SHOW VARIABLES语句查看存储路径:

mysql> SHOW VARIABLES LIKE 'log_error';
+---------------+----------------------------------------+
| Variable_name | Value                                  |
+---------------+----------------------------------------+
| log_error     | D:\mysql-5.6.24-winx64\data\JTZen9.err |
+---------------+----------------------------------------+
1 row in set

3.3 删除错误日志

  MySQL错误日志是以文本形式存储的,可以直接删除。

4 通用查询日志

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

4.1 启动和设置通用查询日志

  MySQL服务器默认没有开启通用查询日志。
  可以通过修改my.ini(或my.cnf)来配置文件来开启。在my.ini(或my.cnf)的[mysqld]组下加入log选项:

[mysqld]
log[=path/[filename]]

不指定路径和文件名,默认存储在数据目录中,且文件名为 hostname.err。

4.2 查看通用查询日志

  使用文本编辑器直接打开查看。

4.3 删除通用查询日志

  在用户查询、更新频繁的情况下,通用查询日志会增长得很快,所以可以定期删除比较早的通用日志,以节省磁盘空间。
  可以直接删除日志文件。要重新建立新的日志文件,可以使用语句mysqldamin -flush logs。

5 慢查询日志

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

5.1 启动和设置慢查询日志

  默认是关闭的,可以通过配置文件mysql.ini或my.cnf中的log-slow-queries选项打开,也可以在MySQL服务启动的时用- -log-slow-queries[=file_name]启动慢查询日志。

[mysqld]
log-slow-queries[=path/[filename]]
long_query_time=n

  long_query_time,单位秒,指定记录记录阈值,如果某条查询语句的查询时间超过了这个值,这个查询过程将被记录到慢查询日志文件中。

5.2 查看慢查询日志

  直接使用文本编辑器查看。在数据目录下的hostname-slow.log文件。

5.3 删除慢查询日志

  和通用查询日志,慢查询日志也可直接删除。删除后在不重启服务器的情况下,需要执行mysqladmin -u root -p flush -logs重新生成日志文件,或者在客户端登陆到服务器执行flush logs语句重建日志文件。

6 点拨

  根据不同的使用环境,可以考虑开启不同的日志。
  例如,在开发环境中优化查询效率低的语句,可以开启慢查询日志;如果需要记录用户的所有查询操作,可以开启通用查询日志;如果需要记录数据的变更,可以开启二进制日志;错误日志是默认开启的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值