MySQL主要的文件
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 配置文件内容组成
在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比较慢: 清理慢查询日志文件:
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)