深入了解Mysql【四】Mysql数据库与InnoDB存储引擎表的各种类型文件
本篇将分析学习构成Mysql数据库和InnoDB存储引擎表的各种类型文件,具体分为:参数文件、日志文件、套接字文件、pid文件、表结构定义文件、InnoDB存储引擎文件。
1、参数文件
1.1、查看my.cnf文件
1 | mysql --help | grep my.cnf |
1.2、查看所有参数
1 | SHOW VARIABLES |
2、日志文件
日志文件记录了影响Mysql数据库的各种类型活动。
常见的有:
2.1、错误日志
记录了mysql启动、运行、关闭过程。
查看错误日志存储的地方:
查看错误日志的内容:
2.2、二进制日志
二进制文件记录了对数据路执行的所有更改操作,不涉及到select等操作。
二进制日志有以下两种作用:
- 恢复
数据的恢复需要二进制日志。 - 复制
通过复制和二进制日志,可以使得一台远程的Mysql数据库与一台Mysql数据库进行实时同步,做高可用。
服务器中的二进制文件:
这里的mysql-bin.000001为二进制文件,mysql-bin.index为二进制的索引文件,用来存储过往生产的二进制日志序号。
如:
2.3、慢查询日志
可以通过慢查询日志,找到有问题的sql,并优化。
文件名为:mysql-slow.log
也可以查看mysql库中的slow_log表:
1 | CREATE TABLE `slow_log` ( |
2.4、查询日志
查询日志记录了所有对Mysql数据库请求的信息,不论这些请求是否得到了正确的执行。
一般查询日志都是关闭的:
3、套接字文件
用于本地连接。
4、pid文件
Mysql实例启动时,会将自己的进程ID写入到pid文件中。
5、表结构定义文件
每张表都有一个结构定义文件,在mysql中以frm为后缀。
如,mysql库中的表结构定义文件:
6、InnoDB存储引擎文件
以上介绍的5大类文件,都是Mysql数据库本身的文件,和存储引擎无关,处理那些文件之外,每个表存储引擎还有独自文件,
InnoDB中有两类比较重要的文件:表空间文件、重做日志文件。
6.1、表空间文件
InnoDB将存储的数据按表空间进行存放。默认是ibdata1。也可以为每张表单独建立表空间,后缀为.ibd。
6.2、重做日志文件
- 重做日志文件是InnoDB存储引擎的日志文件,记录了对InnoDB存储引擎的事务日志。
- 主要用来保数据的完整性,比如宕机时使用重做日志恢复到宕机之前。
- 重做日志文件名:ib_logfile0、ib_logfile1、ib_logfile2等
6.2.1、重做日志文件与二进制日志文件的区别
- 二进制日志文件会记录所有与Mysql有关的日志记录,包括各种存储引擎的日志,而重做日志只记录其本身的事务日志。
- 二进制日志文件记录的是事务的具体操作内容,而重做日志记录的关于每个页(Page)的更改的物理情况。
- 写入时间不同,二进制日志是在事务提交前进行记录,而重做日志是在事务进行过程中不断的写入。
6.2.2、重做日志的写入时机
在学习上一部分InnoDB存储引擎的架构时,了解了重做日志不是直接写入的,需要从缓冲区刷新写入。
重做日志缓冲区写入重做日志的时机为:
- Master Thread每秒刷新
- 事务提交时刷新
- 重做日志缓冲区空间小于二分之一时刷新
通过上面的学习整理,简单的了解了Mysql和Innodb相关的文件,为后期的学习打好基础。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的技术分享!