MySQL8 日志除了用于发现错误之外,它在数据复制、数据恢复、操作审计、以及数据永久性和一致性方面都发挥着重要作用。学会如何查看和配置 MySQL 日志,将有效的提升您的数据库技能和快速解决问题的能力。
MySQL8 数据库主要有六种类型的日志文件,用来存储不同的信息,分别是:二进制日志、错误日志、一般查询日志、慢查询日志、中继日志和数据定义语句日志。
小提示:不合理的日志配置会增加服务器开销、降低数据库性能和占用大量磁盘空间,所以学习日志配置很重要。
二进制日志是 MySQL 中比较重要的日志类型,它记录了数据库所有执行的 DDL 和 DML 等数据库更新事件的语句,但是不包含没有修改任何数据的语句,如数据查询语句等。二进制日志主要用于数据复制和数据恢复。
首先,打开 MySQL8 配置选项:
vim /etc/my.cnf 或:vim /etc/mysql/my.cnf 或:vim /etc/mysql/conf.d/mysqld.cnf
然后,修改日志配置路径:
[mysqld] log-bin=/data/mysql/bin
最后,重启服务生效:
# 重启服务 systemctl restart mysql; # 查看状态 show variables like '%log_bin%';
二进制日志格式配置,可选值:STATEMENT / ROW / MIXED。
[mysqld] binlog_format=ROW
二进制日志过期时间配置,单位为秒,默认 30 天。
[mysqld] binlog_expire_logs_seconds=2592000
二进制日志文件大小配置,单位为字节,最大值和默认值均为 1 GB。
[mysqld] max_binlog_size=1073741824
MySQL8 错误日志默认是开启的,且无法被禁用,设置错误日志路径示例:
[mysqld] log-error=/data/mysql/error.log
MySQL8 一般查询日志一般需要禁用,只有需要查看更多详细日志的情况开启,否则会导致磁盘暴涨。
查看一般查询日志:
show variables like '%general%';
开启一般查询日志,可选值:ON / OFF(1或0也支持):
[mysqld] general_log=ON general_log_file=/data/mysql/general.log
慢查询日志是记录查询时长超过指定时间的日志。慢查询日志主要用来记录执行时间较长的查询语句,通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化。
开启慢查询日志,可选值:ON / OFF(1或0也支持),时间单位为秒,默认值10,最大365天:31536000。
[mysqld] slow_query_log=ON slow_query_log_file=/data/mysql/slow.log long_query_time=7
MySQL8 中继日志由一组编号的文件组成,用于 MySQL 主从架构,从服务器用来存放主服务器二进制日志的一个中间文件,从服务器读取中继日志来同步主服务器上的数据,MySQL8 中继日志默认保存在从服务器的数据目录下。
中继日志格式:从主机名-relay-bin.序号:
# 中继日志文件名示例 slave_try8-relay-bin # 中继日志索引文件名示例 slave_try8-relay-bin.000001
查看中继日志:
show variables like '%relay%';
中继日志是保存在从服务器上,因此您应该修改从服务器的数据库配置:
[mysqld] relay-log=/data/mysql/relay.log
InnoDB 存储引擎将数据定义语句日志写入 mysql.innodb_ddl_log 表中,该表属于隐藏数据字典表,不能在非调试版本的 MySQL 中直接访问,但是您可以手动开启查看。
开启 DDL 日志,创建测试表查看日志输出:
set global innodb_print_ddl_logs=1; create table try8 (try8_id int) engine = innodb;
MySQL8教程 - MySQL8 日志配置,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 日志配置介绍开始,逐步到 MySQL8 日志类型详细教程和语法示例等,通篇实用易懂,让 MySQL8 入门更加快速和简单。
《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。