三、文件
- 参数文件:告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还会介绍各种参数的类型。
- 日志文件:用来记录MySQL实例对某种条件作出响应时写入的文件,如错误日志文件、二进制日志文件、慢查询日志文件、查询日志文件等。
- socket文件:当用UNIX域套接字方式进行连接时需要的文件
- pid文件:MySQL实例的进程ID文件
- MySQL表结构文件:用来存放MySQL表结构定义文件
- 存储引擎文件:真正存储了记录和索引等数据
3.1 参数文件
参数类型:
- 动态参数
- 静态参数
动态参数意味着可以在MySQL实例运行中进行更改,静态参数说明在整个实例生命周期内都不得进行更改,就好像是只读的。可以通过SET命令对动态的参数值进行修改,SET的语法如下:
SET
| [global | session] system_var_name = expr
| [@@global. | @@session. | @@] system_var_name = expr
set read_buffer_size=76813;
set @@session.read_buffer_size\G;
3.2 日志文件
1)错误日志
该文件不仅记录了所有的错误信息,也记录一些警告信息或正确的信息
默认情况下错误文件的文件名为服务器的主机名
2)慢查询日志
long_query_time
设置
- 设置
long_query_time
这个阈值后,MySQL数据库会记录运行时间超过该值得所有SQL语句,但运行时间正好等于long_query_time
的情况并不会被记录下 - 其次,从MySQL5.1 开始,
long_query_time
开始以微秒记录SQL语句运行的时间,之前仅用秒为单位记录。
long_queries_not_using_indexes
如果运行得SQL语句没有使用索引,则MySQL数据库同样会将这条SQL语句记录到慢查询日志文件
MySQL5.6.5 log_throttle_queries_not_using_indexes
,用来表示每分钟记录到 slow_log
的且未使用索引的SQL语句次数。该值默认为0,表示没有限制。
3)查询日志
记录了所有对MySQL数据库请求的信息,无论这些请求是否得到了正确的执行。
4)二进制日志(binary log)
记录了对MySQL数据库执行更改的所有操作,但是不包括 SELECT
和 SHOW
这类操作,因为这类操作对数据本身没有修改。5
二进制日志主要有以下几种作用:
- 恢复:某些数据的恢复需要二进制日志
- 复制(replication):其原理和恢复类似,通过复制和执行二进制日志使一台远程的MySQL数据库(slave或standby)与一台MySQL数据库(master或primary)进行实时同步
- 审计:用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入攻击
5)套接字文件
在UNIX系统下本地连接MySQL可以采用UNIX域套接字方式,这种方式需要一个套接字(socket)文件
6)pid文件
当MySQL实例启动时,会将自己的进程ID写入一个文件中-该文件即为pid文件。该文件可由参数pid_file控制,默认位于数据库目录下,文件名为主机名.pid
7)表结构定义文件
MySQL数据的存储是根据表进行的,每个表都会有与之对应的文件。但不论表采用何种存储引擎,MySQL都有一个以 frm
为后缀名的文件,这个文件记录了该表的表结构定义
8)InnoDB 存储引擎文件
之前介绍的文件都是MySQL数据库本身的文件,和存储引擎无关。除了这些文件外,每个表存储还有其自己独有的文件。
表空间文件
ibd