1.错误日志文件
默认情况下,错误文件的文件名为服务器的主机名。
2.慢查询日志文件
通过long_query_time设置阀值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。默认情况,慢查询日志不启动
log_queries_not_using_indexes:该参数设为ON时,运行的没有使用索引的sql语句也会被记录到慢查询日志文件中。
3.查询日志文件
记录所有对数据库的请求,无论是否正确执行。默认文件名:主机名.log。
4.二进制文件
记录了对数据库执行更改的所有操作(包括操作时间和执行时间等),select和show这类操作除外。
具体有分储存statement和row的
5.套接字文件
本地连接MySQL采用Unix域套接字方式时,需要一个套接字文件。一般在/tmp目录下,名为mysql.sock
6.pid文件
MySQL实例启动时,会将自己的进程ID写进pid文件中,有pid_file参数控制,默认路径位于数据库目录下,文件名为主机名.pid
7.表结构定义文件
以frm为后缀名,记录该表的表结构定义,包括视图的定义。该文件为文本文件,可直接用cat查看
8.InnoDB存储引擎文件
表空间文件、重做日志文件
8.1重做日志文件
InnoDB存储引擎存储的数据按表空间进行存放,默认表空间文件名为ibdatal。可通过参数innodb_data_file_path设置
设置innodb_data_file_path参数后,所有基于InnoDB存储引擎的表的数据都会记录到该文件内。
innodb_file_per_table参数:设为ON时,可以为每个基于InnoDB存储引擎的表,单独产生一个表空间,文件名为表名.ibd,这些单独的表空间文件仅存储该表的数据、索引和插入缓冲等信息,其余信息还是存放在默认的表空间中。
InnoDB存储引擎对于文件的存储方式:
8.2重做日志文件
默认情况会有两个文件,ib_logfile0和ib_logfile1。
每个InnoDB存储引擎至少有1个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0和ib_logfile1。日志组中每个重做日志文件大小相同,循环使用,文件1写满了则使用文件2,文件2写满了则使用文件1。
二进制文件和重做日志文件的区别:
二进制文件:1.记录所有与MySQL有关的日志记录,包括InnoDB、MyISAM、Heap等其他存储引擎的日志;
2.记录关于一个事务的具体操作内容;
3.事务提交前进行记录。
InnoDB重做日志文件:1. 只记录有关InnoDB存储引擎本身的事务日志;
2.记录关于每个页(Page)的更改的物理情况;
3.事务进行过程中记录。
写入重做日志文件的操作不是直接写,而是先写入一个重做日志缓冲(redo log buffer)中,然后按照一定的条件写入日志文件,如下图:
innodb_flush_log_at_trx_commit参数,表示在提交commit操作时,处理重做日志的方式。
0:并不将重做日志写入磁盘上的日志文件,而是等待主线程每秒的刷新
1:commit时将重做日志缓冲同步写到磁盘
2:重做日志异步写到磁盘,即不能完全保证commit时肯定会写入重做日志文件