MySQL日志——查询、慢查询、错误、二进制

查询日志

MySQL中的查询日志保存在文本文件中,能够记录MySQL中的所有数据操作。
MySQL默认情况下未开启查询日志。
开启查询日志:对MySQL配置文件中的[mysqld]进行配置。


Window下,MySQL安装路径E:\Mysql\mysql-5.6.24-win32下的my-default.ini文件:

添加
general_log = 1 #是否开启查询日志(1或不带值开启,0或未配置此项关闭)
general_log_file = /data/log/general_log/general_statement.log #查询日志的文件目录
log_output = FILE #日志存储方式,TABLE(数据表)、FILE(文件)、NONE(不保存)

注意:未指定general_log_file、log_output时,查询日志将保存至配置文件datadir选项指定的目录下,默认文件名为host_name.log(host_name为主机名)。


Linux下,MySQL配置文件为/etc/my.cnf,添加如上命令。


MySQL命令行中开启。
命令如下:

set global general_log = 1;
set global general_log_file = 'E:\Mysql\mysql-5.6.24-win32\data\log\host-name.log'; #(host-name为主机名) 
set global log_output = 'file';

命令执行情况
查询日志内容:
查询日志内容
开启查询日志配置完成后,需重启MySQL服务。

慢查询日志

MySQL的慢查询日志主要用来记录执行时间超过设置值的MySQL语句,方便数据库运维人员进行针对性的优化。

开启慢查询日志:
对MySQL的配置文件中的[mysqld]进行配置。

  1. 如:
    Window下,MySQL安装路径E:\Mysql\mysql-5.6.24-win32下的my-default.ini文件:
    添加

    [mysqld]
    slow_query_log = 1 #开启慢查询日志(1或不带值开启,0或未配置此项关闭)
    slow_query_log_file = /log/query_log/slow.log #慢查询日志文件目录
    long_query_time = 5 #MySQL执行超时时间


  2. linux下,MySQL配置文件未/etc/my.cnf,如上添加命令。


  3. MySQL命令行中开启。

set global slow_query_log = 1;
set global slow_query_log_file = 'E:\Mysql\mysql-5.6.24-win32\data\DESKTOP-OCFP8IR-slow.log';
set global long_query_time = 5;

命令行执行情况

配置完成后,重启MySQL服务才生效。

错误日志

MySQL错误日志记录了MySQL运行过程中所有的出错信息,方便数据库运维人员排查故障。

开启错误日志:

  1. 如:
    Window下,MySQL安装路径E:\Mysql\mysql-5.6.24-win32下的my-default.ini文件:
    添加

    [mysqld]
    log_error = /log/error/error.err #通过配置错误日志文件目录配置,未指定文件目录,MySQL默认会在datadir指定的目录(配置文件中设置)下创建一个host_name.err文件来记录MySQL的错误日志。


  2. linux下,MySQL配置文件未/etc/my.cnf,如上添加命令。


  3. 不支持MySQL命令行中开启。

配置完成后,重启MySQL服务才生效。

二进制日志

二进制日志以“事件”的形式记录数据库中数据的变化情况,对于MySQL数据库的灾难恢复起着重要作用。

开启二进制日志:

  1. 如:
    Window下,MySQL安装路径E:\Mysql\mysql-5.6.24-win32下的my-default.ini文件:
    添加

    [mysqld]
    log_bin = /log_bin #二进制日志文件目录
    binlog_format = mixed #二进制文件格式(STATEMENT、ROW、MIXED)
    binlog_cache_size = 32m #缓存大小
    max_binlog_cache_size=64m #最大缓存大小
    max_binlog_size=512m #单个二进制文件最大大小
    expire_logs_days = 10 #日志过期时间,设为0不会清理过期日志


  2. Linux下,MySQL配置文件为/etc/my.cnf,添加如下命令。
    server_id = 1001 #必须指定server_id,这是MySQL 5.7.3以后的要求
    log_bin =mysql-bin
    binlog_format = ROW
    binlog_cache_size = 32m #缓存大小
    max_binlog_cache_size=64m #最大缓存大小
    max_binlog_size=512m #单个二进制文件最大大小
    expire_logs_days = 10 #日志过期时间,设为0不会清理过期日志
    注:MySQL用server-id来唯一的标识某个数据库实例,并在链式或双主复制结构中用它来避免sql语句的无限循环。

配置完成后,重启MySQL服务才生效。

查看二进制日志

采用MySQL的mysqlbinlog命令进行查看,因二进制日志文件不能以纯文本文件形式来查看。
命令行:
mysqlbinlog --no-defaults /data/log_bin/mysql-bin.000001

注意:随二进制文件生成的mysql-bin.index文件,记录的时当前目录下存在的所有二进制文件的完整路径。

删除二进制文件

  1. 根据编号删除二进制
    格式:purge master logs to ‘log_name’;
  2. 根据时间删除二进制
    格式:purge {binary|master} logs before datatime_expr;
  3. 删除所有二进制日志
    格式:reset master;
    实现如下:
    删除二进制日志

日志关闭

注释或删除配置文件中相关的配置项,并重启MySQL服务器,即可关闭相关的日志文件。

日志配置截图

window下日志配置:
日志配置
linux下日志配置:
日志配置
注:本文根据CSDN技能树整理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

f2k_维护者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值