MySQL 5.7 物理文件体系结构的简单整理说明
本文出处:http://www.cnblogs.com/wy123/p/7102128.html
(保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)
本文的数据库版本是MySQL5.7.18,简单介绍一下MySQL数据文件目录的物理结构和作用,从中可以窥见MySQL的整体上的物理文件结构以及逻辑功能。
可以从整体结构上了解到MySQL的物理体系架构(本人学习的思路往往是被与已了解的事物对照学习,或者快速了解其轮廓,再逐步细化整个知识体系)
鉴于MySQL中任何一项逻辑性或者物理性文件都具有可配置性,另外就是由于开源,MySQL在每个大版本中都有一些改进的东西,不能根据某一项或者默认配置生搬硬套。
如下图是MySQL(5.7.18)在Linux系统yum默认安装的数据文件目录,可以看到有如下几类文件。
1,数据库路径:可以看到,系统数据库和用户自定义的数据库都是一个路径,展开具体的路径之后是具体的每个数据库自己的对象)
2,logbin二进制日志文件:如果开启了二进制日志,会有若干个二进制日志文件(如图的mysql-bin.000042,mysql-bin.000043)与其对应的描述文件(mysql-bin.index)
3,redo重做日志文件:ib_logfile0,ib_logfile1,是支持事务性引擎的redo日志文件
4,共享表空间:ibdata1,如果指定innodb表为非独立文件的,用户自定义库中的表的数据就存储在共享表空间中。
即便是innnodb表指定为独立表空间,用户自定义库中的某些元数据信息(比如存储过程等信息都存储在共享表空间中)。
同时,共享表空间还负责存储undo数据的存储的作用(undo数据也即事物性操作的数据的修改之前的值)。
不过,而从5.6开始,用户可以把undo log存储到独立的tablespace中,并拆分成多个Undo log文件。
5,临时表空间:ibtemp1,存储临时对象的空间,比如临时表对象等。
6,errorlog:error_log.log,记录启动、运行或停止MySQL服务器过程,以及MySQL运行过程中一些较为严重的错误信息
7,mysql.sock:作用是MySQL服务器本身的客户端连接的时候,发起本地连接时可用
8,slow_log:截图的MySQL服务中尚未配置慢查询日志,如果配置了MySQL的慢查询日志,MySQL会将运行过程中的慢查询日志记录到slow_log文件中
9,general_log:同上面的8,截图的服务器尚未配置MySQL的通用查询日志,如果配置了通用查询日志,MySQL将运行过程中的所有sql都记录在此文件中。
10,另外一个是最终的MySQL的配置文件,my.cnf,YUM安装的MySQL的配置文件my.cnf默认在etc目录下