探索data目录下的文件结构

mysql版本:5.7.36

操作系统:win10

工具:navicat

本文讲到的存储引擎:MyISAM、InnoDB

打开一个已经创建好的数据库,将表名展开,右键某一个表名,选择”设计表“。点击”选项“这一栏目,发现第一行就是”存储引擎“下拉选择框。我们从下拉框可以看到mysql都支持哪些存储引擎,如图:

 

支持的存储引擎有:

1. ARCHIVE

2. BLACKHOLE

3. CSV

4. InnoDB

5. MEMORY

6. MRG_MYISAM

7. MyISAM

8. PERFORMANCE_SCHEMA

1. myisam和innodb文件结构的区别

我们先创建myisam表,create table 's_brand_m' (...) ENGINE=MyISAM;

再创建innodb表,create table 's_brand' (...) ENGINE=InnoDB;

打开data文件夹,可以看到:

 

myisam创建的表有三个文件 .frm   .MYD   .MYI

innodb创建的表只有两个文件 .frm .ibd

其中.frm文件存储的是表结构,这个在这两种存储引擎中都一样。但是innodb的数据文件和索引文件在同一个文件里,也就是.ibd。而myisam的数据文件和索引文件分开,分别是.MYD和.MYI。

2. db.opt文件

另外,我们发现每一个数据库对应的文件目录下,都有一个db.opt,这个文件是MySQL建库过程中自动生成的,记录了该库的默认字符集编码和字符集排序规则。如果你创建数据库指定默认字符集和排序规则,那么后续创建的表如果没有指定字符集和排序规则,那么该新建的表将采用db.opt文件中指定的属性。如果删除这个db.opt,那么MySQL在建表的时候参照全局的字符设置,default-character-set 。

3. auto.cnf文件

在data目录下面,最先看到的就是这个auto.cnf,我们可以用文本工具打开这个文件。这个是打开后的内容:

[auto]
server-uuid=dd06cf56-8198-11ec-b80b-9c7bef19391a

MySQL启动时,会自动从data/auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。server-uuid与server-id一样,用于标识MySQL实例在集群中的唯一性,这两个参数在主从复制中具有重要作用,默认情况下,如果主、从库的server-uuid或者server-id的值一样,将会导致主从复制报错中断。

在主库中使用命令 show slave hosts,可以看到从库的server_id和uuid;
在从库中使用命令 show slave status,可以看到主库的server_id和uuid。
 

4. pem文件

包括什么ca.pem啦,ca-key.pem啦等等。很显然这类文件和密钥有关,这里我就不管他们了。

5. ib_buffer_pool

innodb的缓冲池, 有点复杂,暂时没看懂

 

 

posted @ 2022-03-11 15:12  方山客  阅读(84)  评论(0编辑  收藏  举报