MySQL数据库和InnoDB引擎的各种类型文件:

  • 参数文件:告诉MySQL在实例启动时在哪里找到数据库文件,保存某些初始化参数
  • 日志文件:错误日志文件,二进制日志文件,慢查询日志文件(记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询),查询日志文件(记录建立的客户端连接和执行的语句)等
  • socket文件:用UNIX socket方式连接时需要的文件
  • pid文件:MySQL实例的进程ID文件
  • MySQL表结构文件:存放MySQL表结构定义文件
  • 存储引擎文件:保存存储引擎相关的文件,真正存储了记录和索引等数据。

参数文件

MySQL实例启动时读取的配置参数文件,用来寻找数据库的各种文件位置和指定某些初始化参数(一系列的key-value值)。
参数也分动态和静态参数

日志文件

记录数据库各种类型活动

错误日志

记录所有错误信息和一些警告/正确信息

慢查询日志

可以用来定位可能存在问题的SQL语句,来进行SQL语句层面的优化。他会把执行时间超过阈值的SQL记录起来。阈值参数long_query_time,默认10秒。如果某个SQL语句没有使用索引,也会记录在这里面,每分钟记录没用到索引的SQL语句次数可通过参数log_throttle_queries_not_using_indexes. 默认0无限制个数。

查询日志

记录所有对MySQL数据库请求的信息

二进制日志

记录了对MySQL数据库执行更改的所有操作,但不包括SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改。
默认情况下不会启动,需要手动指定参数来启动。
二进制日志的作用:

  • 恢复:某些数据的恢复需要二进制文件,比如point-in-time恢复
  • 复制:通过复制和执行二进制日志来实时同步远程MySQL和本地MySQL
  • 审计:通过log来判断是否有对数据库进行注入攻击等

未提交时也有缓冲机制来缓存

socket文件

UNIX用socket方式连接时需要的文件,路径一般是/tmp/mysql.sock

pid文件

MySQL实例启动时会将自己的PID写入一个文件,即pid文件

表结构定义文件

MySQL数据的存储是根据表进行的,每个表都有与之对应的文件, MySQL都有一个以frm为后缀名的文件,该文件记录了该表的表结构定义。

InnoDB存储引擎文件

每个表存储引擎都有自己独立文件,包括redo log文件,表空间文件等。

表空间文件

InnoDB采用将存储的数据按表空间进行存放的设计。默认情况下会有一个10MB大小的表空间文件

重做日志文件

当数据库出现掉电等问题时,可以用redo log文件中存储的最新信息来保证数据的完整性。
每个InnoDB引擎至少有一个redo log日志文件组,每个组下至少有2个redo log文件。用户也可以设置其他的镜像文件来提高可用性和安全性。
redo日志会循环写入各个redo log文件,遍历完后又重头开始覆写。
写入redo log日志文件的操作不是直接写,而是先写入redo log buffer,再按照一定条件顺序来写入日志文件。redo log buffer写入redo log文件时每次写入的大小是最小扇区大小512byte,可以保证写入必定成功,不需要double write。
InnoDB和MySQL-文件

相关文章: