数据库文件
MySQL主要文件类型有如下几种
参数文件:my.cnf——MySQL实例启动的时候在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还介绍了参数类型以及定义作用域;
日志文件:记录MySQL对某种条件做出响应时候写入的文件,包括错误日志、查询日志、慢查询日志、二进制日志;
Mysql表结构文件:存放MySQL表结构定义文件,不论采用何种存储引擎,MySQL都有一个以frm为后缀名的文件;
Socket文件:当用linux的MySQL命令行窗口登录的时候需要的文件;
Pid文件:MySQL实例的进程ID文件;
存储引擎文件:每个存储引擎都有自己的文件夹来保存各种数据,这些存储引擎真正存储了数据和索引等数据。
参数文件
当MySQL实例启动时,MySQL会读取一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等设置。默认情况下,MySQL实例会按照一定的次序去取,可以通过命令行,查看my.cnf文件的位置;
mysql --help | grep my.cnf
Mysql在启动时可以不需要参数文件,但是如果在默认的数据库目录下找不到mysql架构,则启动会失败;
Mysql的参数可以通过“show variables”来查看,由于从mysql5.1版本开始,可以通过information_schema架构下的GLOBAL_VARIABLES视图来进行查找,所以也可以这样查看
- select * from information_schema.global_variables;
Mysql 的参数类型:
分为动态(dynamic)和静态参数(static)。
动态参数意味着可以再mysql实例运行中进行更改,有些参数修改可以是基于会话的也可以是基于整个实例的生命周期;
静态参数说明在整个实例声明周期内都不得进行更改,就好像是只读(read only)的。。Mysql5.1的动态参数在这里。
日志文件
一般来说日志文件的存放路径如下:
- 错误日志
该文件对Mysql的启动、运行、关闭过程进行了记录,在遇到问题时,首先应该查看此文件,可以通过“show variables like ‘log_error’;”来定位该文件。
- 慢查询日志
该文件记录了所有运行时间超过阀值的SQL语句,该阀值可以通过参数long_query_time来设置。默认值为10秒。
show variables like ‘long_query_time‘;
但是在默认情况下,Mysql并不启动满查询日志,需要手工修改这个参数;
show variables like ‘log_slow_queries‘;
需要注意的两点内容:
首先,慢查询日志记录的是大于阀值的SQL语句,而不是大于等于!!!
其次,从Mysql 5.1开始,long_quey_time开始以微秒记录sql语句运行时间。
另一个和慢查询相关的参数是log_queries_not_using_index,如果运行的SQL语句没有使用索引,则Mysql则同样会将这条SQL语句记录到慢查询日志文件中;
show variables like ‘log_queries_not_using_indexes‘;
在慢查询日志文件逐渐增大时,可考虑使用工具mysqldumpslow工具帮助我们分析。该工具的使用您可以使用 “man mysqldumpslow” 或者去这里了解。Mysql5.1开始可以将慢查询的日志记录放入一张表中,该表在mysql.slow_log表中。是否放在表中由参数‘log_output’来决定;
参数log_output指定了慢查询输出的格式,默认为FILE,也可以将其设置为TABLE,就可以去Mysql.slow_log中去查询了。
show variables like ‘log_output‘;
同样也可以将查询日志的记录放入mysql架构下的general_log表。
- 查询日志
查询日志记录了所有对Mysql数据库请求的信息,不论这些请求是否得到了正确的执行。默认文件名为:主机名.log。我们查看一个查询日志:
4、二进制日志因为二进制日志太重要了,在这里暂且不提。InnoDB存储引擎文件