Skip to content

MySQL主要的文件

1. 配置文件

  1. 最早my.cnf文件是放在/etc/my.cnf位置,也可以是my.ini, MySQL支持多个配置文件配置,可以执行下面命令查看配置文件有哪些:
sh
[jack@hadoop104 ~]$ mysql --help |grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf /opt/module/mysql-8.0.39/my.cnf ~/.my.cnf
  1. 不同文件里面配置的相同变量会按照优先级顺序覆盖替换

1.1 配置文件内容组成

在my.cnf文件中,可以使用include指令指定文件将其内容合并到当前my.cnf文件中。my.cnf文件一共分为6大部分:

  • [client]: mysql客户端配置连接配置。
  • [mysql]: mysql命令行的相关配置。
  • [mysqld]: mysql服务的相关配置。
  • [mysqldump]: 用于配置mysqldump备份工具的参数。
  • [mysqladmin]: 配置mysqladmin管理工具的参数。
  • [mysqld_multi]: 配置m多实例管理的参数。
  • [mysqld-x]: mysql特定版本配置信息,在启动符合版本的MySQL会配置生效。
  • [mysqldx]: 多实例节点的配置信息。

2. 表结构定义文件

在MySQL5.7之前,存储MySQL数据的文件目录中,表结构文件存储为xxx.frm。

sh
## 查看frm文件内容

3. 错误文件

参数: log.error

  • 默认名:机器名.err
  • 建议统一修改成一个固定的名称,例如mysql.err

4. 慢查询日志

将运行超过某个时间阈值的SQL语句记录到文件中。从MySQL5.1开始可以以毫秒为单位记录运行的SQL语句,MySQL5.5开始可以将慢查询保存到表中。在MySQL5.6开始可以更细粒度的记录查询慢查询。
查询当前慢日志开启情况:

sql
mysql> SHOW variables LIKE 'slow%';
+---------------------+----------------------------------------------+
| Variable_name       | Value                                        |
+---------------------+----------------------------------------------+
| slow_launch_time    | 2                                            |
| slow_query_log      | ON                                           |
| slow_query_log_file | /opt/module/mysql-5.7.44/logs/mysql-slow.log |
+---------------------+----------------------------------------------+
3 rows in set (0.01 sec)

可以看到配置的慢查询是超过2s就记录慢查询日志。慢日志相关参数如下:

参数说明版本说明
slow_query_log是否开启慢查询日志
slow_query_log_file慢查询日志文件名
long_query_time指定慢查询阈值5.5 支持毫秒
min_examined_row_limit扫描记录少于该值的SQL不记录到慢查询日志
log-queries-not-using-indexes将没有使用索引的SQL记录到慢查询日志中
log_throttle_queries_not_using_indexes限制每分钟记录没有使用索引SQL语句的次数5.6
log-slow-admin-statment记录管理操作,如ALTER/ANALYZE TABLE
log_output慢查询日志的格式5.5
log_slow_slave_statements在从服务器上开启慢日志查询
log_timestamps写入时区信息5.7

打开slow.log文件,可以看到有一条插入sql比较慢:
Alt text 清理慢查询日志文件:

sh
# 重命名文件后,mysql慢查询日志还是会往老文件slow.log.20250211中写入
[root@hadoop104 mysql-8.0.39]# mv slow.log slow.log.20250211
# mysql释放文件句柄,开始往slow.log中写
mysql>flush slow logs

需要注意的是记录慢查询日志并不会记录sql锁住的情况。

5. 通用日志

可以记录数据库所有相关操作,开启后会性能下降明显。参数为:general_log, 默认文件保存为:机器名.log

sh
mysql> show variables like 'general%';
+------------------+----------------------------------------------+
| Variable_name    | Value                                        |
+------------------+----------------------------------------------+
| general_log      | OFF                                          |
| general_log_file | /opt/module/mysql-8.0.39/data1/hadoop104.log |
+------------------+----------------------------------------------+
2 rows in set (0.00 sec)