构成MySQL数据库的各种类型文件,包括:参数文件
日志文件
socket文件(套接字方式连接时需要)
pid文件(mysql实例进程id)
MySQL表结构文件
存储引擎文件(每个存储引擎自己用来保存数据的文件)
关键词参数文件参数类型
生命周期与关键字session
global
日志文件错误日志error log
慢查询日志slow query log
查询日志log
二进制日志binlog记录内容
作用
记录方式
查看方式
表结构定义文件
InnoDB存储引擎文件表空间文件
重做日志文件重做日志文件和二进制文件的区别
写入方式
1.参数文件
1.1参数类型
分为两类:动态(dynamic)参数autocommit
静态(static)参数log_slave_updates:将slave从master收到的更新记入到slave自己的bin log中,默认不开启
back_log:如果等待连接的数量超过back_log,将不被授予连接资源,default 50
1.2生命周期与关键字
1.2.1session
基于当前会话的生命周期
1.2.2global
基于整个实例的生命周期
注:对变量全局值进行修改,在实例生命周期内都有效,但MySQL实例本身不会对参数文件中的该值进行修改。在下次启动时MySQL实例还是会读取参数文件。
2.日志文件
2.1错误日志error log
记录MySQL的启动、运行、关闭过程。遇到问题时应该首先查看该文件以便定位问题。
2.2慢查询日志slow query log
可以在MySQL启动时设一个阈值,将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中。
慢查询表是mysql下的slow_log。
2.3查询日志log
记录所有对MySQL数据库请求的信息,无论这些请求是否得到正确的执行。
查询日志表是mysql下的general_log。
2.4二进制日志binlog
2.4.1记录内容
二进制日志(binary log)记录了对MySQL数据库执行更改的所有操作。不包括select和show,但是对于没有导致数据库变化的写操作也会记录。
2.4.2作用
恢复(recovery)
某些数据的恢复需要二进制日志,例如:在一个数据块全备文件恢复后,用户可以通过二进制日志进行point-in-time的恢复。
复制(replication)
其原理与恢复类似,通过复制和执行二进制日志使一台远程的MySQL数据库(slave)与一台MySQL数据库(master)进行实时同步。
审计(audit)
用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。
2.4.3记录方式
所有未提交的二进制日志会被记录到一个缓存中去,等该事务提交时直接将缓存中的二进制日志写入二进制日志文件。
2.4.4查看方式
要查看二进制日志文件,需要使用mysqlbinlog。
3.表结构定义文件
每个表都会有与之对应的文件。不论表采用何种存储引擎,都是由frm为后缀名的文件来记录该表的表结构定义。
4.InnoDB存储引擎文件
4.1表空间文件
可以通过多个文件组成一个表空间,所有基于InnoDB存储引擎的表的数据都会记录到该共享表空间中。
也可以为每个InnoDB表设置独立表空间,以ibd后缀命名。独立表空间只能存储该表数据、索引、插入缓冲BITMAP等信息。
4.2重做日志文件
4.2.1重做日志文件和二进制文件的区别记录范围不同
二进制日志记录所有与MySQL有关的日志记录,InnoDB重做日志只记录InnoDB的。记录内容不同
二进制文件记录一个事务的具体操作内容,是逻辑日志;重做日志记录每个页(page)的更改的物理情况。写入时间不同
二进制文件仅在事务提交前进行提交;重做日志条目(redo entry)在事务进行的过程中不断写入。
4.2.2写入方式
先写入一个重做日志缓冲(redo log buffer)中,然后按照一定的条件顺序地写入日志文件。