查询日志
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]进行配置。
-
如:
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执行超时时间
-
如
linux下,MySQL配置文件未/etc/my.cnf,如上添加命令。 -
如
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运行过程中所有的出错信息,方便数据库运维人员排查故障。
开启错误日志:
-
如:
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的错误日志。
-
如
linux下,MySQL配置文件未/etc/my.cnf,如上添加命令。 -
如
不支持MySQL命令行中开启。
配置完成后,重启MySQL服务才生效。
二进制日志
二进制日志以“事件”的形式记录数据库中数据的变化情况,对于MySQL数据库的灾难恢复起着重要作用。
开启二进制日志:
-
如:
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不会清理过期日志
-
如
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文件,记录的时当前目录下存在的所有二进制文件的完整路径。
删除二进制文件
- 根据编号删除二进制
格式:purge master logs to ‘log_name’; - 根据时间删除二进制
格式:purge {binary|master} logs before datatime_expr; - 删除所有二进制日志
格式:reset master;
实现如下:
日志关闭
注释或删除配置文件中相关的配置项,并重启MySQL服务器,即可关闭相关的日志文件。
日志配置截图
window下日志配置:
linux下日志配置:
注:本文根据CSDN技能树整理。