查看 MySQL 8 目录结构
find / -name mysql
1、MySQL 数据库文件的存放路径:/var/lib/mysql/
(1)查看
SHOW variables LIKE 'datadir';
2、相关命令目录:/usr/bin(mysqladmin、mysqlbinlog、mysqldump 等命令)和 /usr/sbin
3、配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如 my.cnf)
数据库和文件系统的关系
1、查看默认数据库
SHOW DATABASES;
(1)mysql:存储 MySQL 用户账户和权限信息,存储过程、事件的定义信息,运行过程中产生的日志信息,帮助信息以及时区信息等
(2)information_schema:保存 MySQL 服务器维护的所有其他数据库的信息 ,如:表、视图、触发器、列、索引,这些信息并不是真实的用户数据,而是一些描述性信息,称为元数据,提供一些以 innodb_sys 开头的表,用于表示内部系统表
(3)performance_schema:保存 MySQL 服务器运行过程中的一些状态信息,可以监控 MySQL 服务的各类性能指标,包括统计最近执行哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息
(4)sys:通过视图形式把 information_schema 和 performance_schema 结合起来,用以监控 MySQL 的技术性能
2、数据库在文件系统中的表示
(1)默认数据目录:/var/lib/mysql
(2)除系统数据库 information_schema 外,其他数据库在数据目录下都有对应的子目录
3、视图在文件系统中的表示
(1)只会存储一个文件:视图名.frm,和表一样,描述视图结构的文件,被存储到所属数据库对应的子目录下
(2)只有对应的 .frm 文件,没有 .ibd 文件,即视图只存储结构,不存储数据
4、表在文件系统中的表示(以下)
InnoDB 存储引擎模式
1、表结构
(1)为了保存表结构, InnoDB 在数据目录下,对应的数据库子目录下,创建一个专门用于描述表结构的文件
(2)文件名:表名.frm
(3)frm 文件格式在不同的平台上都是相同的,以二进制格式存储
2、表中数据和索引
3、系统表空间
(1)system tablespace
(2)默认情况下,InnoDB 在数据目录下创建一个名为 ibdata1 、大小为 12M 文件,该文件对应系统表空间在文件系统上的表示,该文件是自扩展文件,自动增加大小
(3)修改系统表空间对应文件系统上多个实际文件,或修改文件名、大小
[server]
innodb_data_file_path=data1:512M;data2:512M:autoextend
4、独立表空间
(1)file-per-table tablespace
(2)在 MySQL 5.6.6 及之后版本中,InnoDB 并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,即创建多少个表,就有多少个独立表空间
(3)使用独立表空间来存储表数据,会在该表所属数据库对应的子目录下,创建一个表示该独立表空间的文件
(4)文件名和表名相同,添加一个 .ibd 的扩展名,完整的文件名称
表名.ibd
5、系统表空间与独立表空间的设置
(1)可以指定使用系统表空间,或独立表空间存储数据,由启动参数 innodb_file_per_table 控制
(2)启动 MySQL 服务器时配置
[server]
#0:代表使用系统表空间;1:代表使用独立表空间
innodb_file_per_table=0
6、其他类型的表空间,如:通用表空间(general tablespace)、临时表空间(temporary tablespace)等
MyISAM 存储引擎模式
1、表结构
(1)与 InnoDB 相同,在数据目录下,对应的数据库子目录下,创建一个专门用于描述表结构的文件
表名.frm
2、表中数据和索引
(1)在 MyISAM 中的索引全为二级索引,该存储引擎的数据和索引是分开存放
(2)在文件系统中,使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下
#存储数据(MYData)
test.MYD
#存储索引(MYIndex)
test.MYI
例:数据库 a,表 b
1、如果表 b 采用 InnoDB ,data\a 中会产生 1 个或 2 个文件
(1)b.frm:描述表结构文件,字段长度等
(2)如果采用系统表空间模式,数据信息和索引信息都存储在 ibdata1 中
(3)如果采用独立表空间模式,data\a 中还会产生 b.ibd 文件,存储数据信息和索引信息
(4)MySQL 5.7 中,在 data/a 目录下,生成 db.opt 文件用于保存数据库的相关配置,如:字符集、比较规则,而 MySQL 8.0 不再提供 db.opt 文件
(5)MySQL 8.0 中不再单独提供 b.frm,而是合并在 b.ibd 文件中
2、如果表 b 采用 MyISAM,data\a 中会产生 3 个文件
(1)MySQL 5.7 中 b.frm:描述表结构文件,字段长度等
(2)MySQL 8.0 中 b.xxx.sdi:描述表结构文件,字段长度等
(3)如果采用独立表存储模式,b.MYD(MYData):数据信息文件,存储数据信息;b.MYI(MYIndex):存放索引信息文件