注册网站需要什么手续,药店网站源码,腾讯 云上做网站教程,个人网站建设价格套餐MySQL的数据目录 学习再总结宋红康老师课程内容1.MySQL8的主要目录结构
安装好MySQL8之后#xff0c;查看如下的目录结构
find / -name mysql1.1数据库文件的存放路径
MySQL数据库文件的存放路径#xff1a;/var/lib/mysql/
1.2相关命令目录
相关命令目录#xff1a;/u…MySQL的数据目录 学习再总结宋红康老师课程内容1.MySQL8的主要目录结构
安装好MySQL8之后查看如下的目录结构
find / -name mysql1.1数据库文件的存放路径
MySQL数据库文件的存放路径/var/lib/mysql/
1.2相关命令目录
相关命令目录/usr/binmysqladmin、mysqlbinlog、mysqldump等命令和/usr/sbin。
1.3配置文件目录
配置文件目录/usr/share/mysql-8.0(命令配置文件),/etc/mysql(my.cnf)
2.数据库和文件系统的关系
2.1查看默认数据库
查看一下在我的计算机上当前有哪些数据库
SHOW DATABASES;可以看到有4个数据库是属于MySQL自带的系统数据库 mysql information_schema performance_schema MySQL系统自带的数据库这个数据库主要保存MySQL服务器运行过程中的一些状态信息可以用来监控MySQL服务的各类性能指标。包括统计最近执行了哪些语句在执行过程的每个阶段都花费了多长时间内存的使用情况等信息。 sys MySQL系统自带的数据库这个数据库主要是通过视图的形式把information_schema和performance_schema结合起来帮助系统管理员和开发人员监控MySQL的技术性能。
2.2数据库在文件系统中的表示
1.在数据目录下创建一个和数据库名同名的子目录。 2.在与该数据库名同名的子目录下创建一个名为db.opt的文件仅限MySQL5.7及之前版本这个文件中包含了该数据库的各种属性比如该数据库的字符集和比较规则。
2.3 表在文件系统中的表示
2.3.1InnoDB存储引擎模式
1.表结构 为了保存表结构InnoDB在数据目录下对应的数据库子目录下创建了一个专用于描述表结构的文件文件名是这样
表名.frm2.表中数据和索引 ①系统表空间system tablespace 默认情况下InnoDB会在数据目录下创建一个名为ibdata1大小为12M的文件这个文件就是对应的系统表空间在文件系统上的表示。该文件是自扩展文件当不够用时会自己增加文件大小。 也可以让系统表空间对应的文件系统上多个实际文件或者修改原来的ibata1的名字此时需要在MySQL启动时配置对应的文件路径以及它们的大小如作以下修改
[server]
innodb_data_file_pathdata1:512M;data2:512M:autoextend这样在MySQL启动之后就会创建这两个512M大小的文件作为系统表空间其中的autoextend表明这两个文件如果不够用会自动扩展data2文件的大小。 需要注意在一个MySQL服务器中系统表空间只有一份。从MySQL5.5.7到MySQL5.6.6之间的各个版本中我们表中的数据都会呗默认存储到这个系统表空间。 ②独立表空间file-per-table tablespace 在MySQL5.6.6以及之后的版本中InnoDB并不会默认的把各个表的数据存储到系统表空间中而是为每一个表建立一个独立表空间也就是说我们创建了多少个表就有多少个独立表空间。使用独立表空间来存储表数据的话会在该表所属数据库对应的子目录下创建一个表述该独立表空间的文件文件名和表名相同只不过添加了一个.ibd的扩展名而已完整的文件名称位
表名.ibd③系统表空间与独立表空间的设置 我们可以自己指定使用系统表空间还是独立表空间来存储数据这个给你由参数innodb_file_per_table控制如下
[server]
innodb_file_per_table0 #0:代表使用系统表空间 1:代表使用独立表空间默认情况
mysql show variables like innodb_file_per_table;
------------------------------
| Variable_name | Value |
------------------------------
| innodb_file_per_table | ON |
------------------------------
1 row in set (0.00 sec)innodb_file_per_table的修改只对新建的表起作用对于已经分配了表空间的表并不起作用。如果想把已经存储在系统表空间中的表专业到独立表空间可以使用下边的语法
ALTER TABLE test TABLESPACE innodb_system;④其他类型的表空间 随着MySQL的发展除了上述两种老牌表空间之外现在还新提出一些不同类型的表空间比如通用表空间general tablespace、临时表空间temporary tablespace等。 3.疑问 .frm在MySQL8中不存在了 需要解析ibd文件。Orcale官方将frm文件的信息及更多信息移动到叫做序列化字典信息Serialized Dictionary InformationSDISDI被卸载ibd文件内部。MySQL8.0属于Oracle旗下同理。 为了从IBD文件中提取SDI信息Oracle提供了一个应用程序ibd2sdi。 这个工具MySQL8自带就有。 1查看表结构 到存储ibd文件的目录下执行下面的命令
ibd2sdbi --dump-filestudent.txt student.ibd[rootguoyvzhimysql8 mysql]# cd sys
[rootguoyvzhimysql8 sys]# ll
总用量 80
-rw-r-----. 1 mysql mysql 114688 2月 22 14:23 sys_config.ibd
[rootguoyvzhimysql8 sys]# ibd2sdi --dump-filesys_config.txt sys_config.ibd
[rootguoyvzhimysql8 sys]# ll
总用量 96
-rw-r-----. 1 mysql mysql 114688 2月 22 14:23 sys_config.ibd
-rw-------. 1 root root 13644 2月 23 11:13 sys_config.txt
[rootguoyvzhimysql8 sys]# vim ./sys_config.txt 图中标记分别表示
表名列列名列的长度 通过上面的测试结果可以发现MySQL8把之前版本的frm文件合并到ibd文件中了。
2.3.2 MyISAM存储引擎模式
1.表结构 在存储表结构方面MyISAM和InnoDB一样也是在数据目录下对应的数据库子目录下创建了一个专门用于描述表结构的文件
表名.frm 5.7
表名.sdi 8.02.表中数据和索引 在MyISAM中的索引全部都是二级索引该存储引擎的数据和索引是分开存放的。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件同时表数据都存放在对应的数据库子目录下。
表名.MYD #存储数据
表名.MYI #存储索引2.4小结
数据库a表b。 1、如果b表采用InnoDBdata\a中会产生1个或者2个文件
b.frm:描述表结构文件字段长度等如果采用系统表空间模式的数据信息和索引信息都存储在ibdata1中如果采用独立表空间存储模式data\a中还会产生b.ibd文件存储数信息和索引信息 此外 ①MySQL5.7中会在data/a的目录下生成db.opt文件用于保存数据库的相关配置。比如字符集、比较规则。而MySQL8.0不在提供db.opt文件。 ②MySQL8.0中不再单独提供b.frm而是合并在b.ibd文件中。 2.如果表b采用MyISAM。data\a中会产生3个文件MySQL5.7中b.ftm描述表结构文件字段长度等。 MySQL8.0中b.xxx.sdi描述表结构文件字段长度等。b.MYD(MYData)数据信息文件存储数据信息如果采用独立表存储结构b.MYI(MYIndex)存放索引信息文件
2.5视图在文件系统的表示
MySQL中的视图其实是虚拟的表也就是一个查询语句的别名而已不存储真实的数据只需把它的结构存储起来就行。和表一样描述视图的文件也会被存储到所属数据库对应的子目录下标只会存储一个视图名.frm的文件
2.6其他的文件
除了上边用户自己存储的数据以外数据目录下还包括为了更好运行程序的一些额外文件主要包括这几种类型的文件
服务器进程文件 每运行一个MySQL服务器程序都意味着启动一个进程。MySQL服务器会把自己的进程ID写入到一个文件中。 服务器日志文件 在服务器运行过程中会产生各种各样的日志比如常规的查询日志、错误日志、二进制日志、redo日志等。这些日志各有各的用途。 默认/自动生成的SSL和RSA证书和密钥文件 主要是为了客户端和服务器安全通信而创建的一些文件。