文章目录
- MYSQL5.7/8.0支持的几种日志文件
- 1、错误日志(Error log)
- 2、一般或通用查询日志(General query log)
- 3、二进制日志(Binary log)
- 3、1 查看是否开启二进制日志
- 3、2二进制日志开启
- 3、3查看二进制文件位置
- 3、4二进制日志(Binary log) 的操作语句
- 4、 慢查询日志(Slow query log)
MYSQL5.7/8.0支持的几种日志文件
1、错误日志(Error log)
MySQL 错误日志记录 MySQL 运行过程中较为严重的警告和错误信息,以及 MySQL 每次启动和关闭的详细信息。
MySQL 错误日志默认是开启的。可以通过 MySQL 配置文件中的 log-error=/var/log/mysqld.log 配置,修改错误日志的配置信息。
可以通过如下 SQL 查看错误日志的详细信息:
show variables like ‘%log_err%’;
注意点:
error log存放位置:/data/mysql_log/mysql-error-3306.log
vim mysql-error-3306.log 可查看日志内容
2、一般或通用查询日志(General query log)
记录已连接MYSQL数据库的客户端所执行的语句。
可以通过如下 SQL 查看当前的通用日志是否开启:
SHOW VARIABLES LIKE ‘%general%’;
开启通用查询日志:
set global general_log = on;
关闭通用查询日志:
set global general_log = off;
3、二进制日志(Binary log)
MySQL 的二进制日志(binary log)是一个二进制文件
,主要用于记录修改数据或有可能引起数据变更的 SQL 语句。二进制日志(binary log)中记录了对 MySQL 数据库执行更改的所有操作
,并且记录了语句发生时间、执行时长、操作数据等其它额外信息
,但是它不记录 SELECT、SHOW 等那些不修改数据的 SQL 语句。二进制日志(binary log)主要用于数据库恢复和主从复制,以及审计(audit)操作
3、1 查看是否开启二进制日志
mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin | ON |
+---------------+-------+
1 row in set (0.00 sec)
系统变量log_bin的值为OFF表示没有开启二进制日志(binary log)。ON表示开启了二进制日志(binary log)
3、2二进制日志开启
查看系统变量log_bin,如果其值为OFF,表示没有开启二进制日志(binary log),如果需要开启二进制日志,则 在my.cnf中[mysqld]下面添加log-bin [=DIR[filename]] ,DIR参数指定二进制文件的存储路径;filename参数指定二级制文件的文件名。 其中filename可以任意指定,但最好有一定规范。
3、3查看二进制文件位置
mysql> show variables like 'datadir';
+---------------+-------------------+
| Variable_name | Value |
+---------------+-------------------+
| datadir | /data/mysql_data/ |
+---------------+-------------------+
二进制文件存储位置:/data/mysql_data/
3、4二进制日志(Binary log) 的操作语句
/删除所有二进制日志文件:/
reset master
reset slave
/删除部分二进制日志文件:/
purge master logs to/befor ‘args’;
例如:
PURGE MASTER LOGS TO ‘mysql-bin.010’;
PURGE MASTER LOGS BEFORE ‘2021-06-02 22:46:26’;
/查看是否启用二进制日志:/
show variables like ‘%log_bin%’;
/查看所有的二进制日志参数/
show variables like ‘%binlog%’;
/查看文件的位置/
show variables like ‘%datadir%’;
/查看当前服务器所有的二进制日志文件/
show binary logs;
show master logs;
4、 慢查询日志(Slow query log)
记录所有执行时间超过 long_query_time 秒的查询 SQL 或者没有使用索引的查询 SQL,默认情况下,MySQL 不开启慢查询日志,
1.long_query_time值查询语句: show variables like ‘long_query_time’;
2.long_query_time值修改语句: set long_query_time = 秒数;
/查看当前慢查询日志的开启情况:/
show variables like ‘%query%’;
mysql> show variables like '%query%';
+------------------------------+-------------------------------------+
| Variable_name | Value |
+------------------------------+-------------------------------------+
| binlog_rows_query_log_events | OFF |
| ft_query_expansion_limit | 20 |
| have_query_cache | NO |
| long_query_time | 1.000000 |
| query_alloc_block_size | 8192 |
| query_prealloc_size | 8192 |
| slow_query_log | ON |
| slow_query_log_file | /data/mysql_log/mysql-slow-3306.log
slow_query_log:ON 表示开启慢查询日志,OFF 表示关闭慢查询日志
slow_query_log_file:记录慢查询日志的文件地址(默认为主机名.log)
long_query_time:指定了慢查询的阈值,单位是秒,即执行语句的时间若超过这个值则为慢查询语句
log_queries_not_using_indexes:ON 表示会记录所有没有利用索引来进行查询的语句,前提是 slow_query_log 的值也是 ON,否则,不会奏效,OFF 表示不会记录所有没有利用索引来进行查询的语句。