MySQL8 日志配置

MySQL8 日志配置,MySQL8教程,介绍 MySQL8 日志类型和配置示例等。

【全栈教程】:https://try8.cn/article
教程目录:
教程内容:
最近更新:2023-04-17

一、MySQL8 日志配置介绍

MySQL8 日志除了用于发现错误之外,它在数据复制、数据恢复、操作审计、以及数据永久性和一致性方面都发挥着重要作用。学会如何查看和配置 MySQL 日志,将有效的提升您的数据库技能和快速解决问题的能力。


1.1、MySQL8 日志分类

MySQL8 数据库主要有六种类型的日志文件,用来存储不同的信息,分别是:二进制日志、错误日志、一般查询日志、慢查询日志、中继日志和数据定义语句日志。

  • 二进制日志:记录更改数据的语句,用于数据同步和无损恢复;
  • 错误日志 :记录 MySQL 服务异常,用于解决服务器故障;
  • 一般查询日志:记录客户端连接发送给数据库的操作指令;
  • 慢查询日志:记录超过指定时间的查询语句,方便优化 SQL;
  • 中继日志:主从架构,从服务器读取中继日志同步主服务器数据;
  • 数据定义语句日志:记录数据定义执行的元数据操作。


小提示:不合理的日志配置会增加服务器开销、降低数据库性能和占用大量磁盘空间,所以学习日志配置很重要。


二、MySQL8 日志配置详细教程

2.1、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。

  • STATEMENT:日志记录是基于语句的;
  • ROW:日志记录基于行,这是默认设置;
  • MIXED:日志记录使用混合格式。
[mysqld]
binlog_format=ROW


二进制日志过期时间配置,单位为秒,默认 30 天。

[mysqld]
binlog_expire_logs_seconds=2592000


二进制日志文件大小配置,单位为字节,最大值和默认值均为 1 GB。

[mysqld]
max_binlog_size=1073741824


2.2、MySQL8 错误日志

MySQL8 错误日志默认是开启的,且无法被禁用,设置错误日志路径示例:

[mysqld]
log-error=/data/mysql/error.log


2.3、MySQL8 一般查询日志

MySQL8 一般查询日志一般需要禁用,只有需要查看更多详细日志的情况开启,否则会导致磁盘暴涨。


查看一般查询日志:

show variables like '%general%';


开启一般查询日志,可选值:ON / OFF(1或0也支持):

[mysqld]
general_log=ON
general_log_file=/data/mysql/general.log


2.4、MySQL8 慢查询日志

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


开启慢查询日志,可选值:ON / OFF(1或0也支持),时间单位为秒,默认值10,最大365天:31536000。

[mysqld]
slow_query_log=ON
slow_query_log_file=/data/mysql/slow.log
long_query_time=7


2.5、MySQL8 中继日志

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


2.6、MySQL8 数据定义语句日志

InnoDB 存储引擎将数据定义语句日志写入 mysql.innodb_ddl_log 表中,该表属于隐藏数据字典表,不能在非调试版本的 MySQL 中直接访问,但是您可以手动开启查看。


开启 DDL 日志,创建测试表查看日志输出:

set global innodb_print_ddl_logs=1;
create table try8 (try8_id int) engine = innodb;


三、MySQL8 日志配置 总结

MySQL8教程 - MySQL8 日志配置,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 日志配置介绍开始,逐步到 MySQL8 日志类型详细教程和语法示例等,通篇实用易懂,让 MySQL8 入门更加快速和简单。


《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。