01_02_mysql09_MySQL的数据目录

MySQL的数据目录


														学习再总结宋红康老师课程内容

1.MySQL8的主要目录结构

安装好MySQL8之后,查看如下的目录结构

find / -name mysql

1.1数据库文件的存放路径

MySQL数据库文件的存放路径:/var/lib/mysql/

1.2相关命令目录

相关命令目录:/usr/bin(mysqladmin、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_schemaperformance_schema结合起来,帮助系统管理员和开发人员监控MySQL的技术性能。

2.2数据库在文件系统中的表示

1.在数据目录下创建一个和数据库名同名的子目录。
2.在与该数据库名同名的子目录下创建一个名为db.opt的文件(仅限MySQL5.7及之前版本),这个文件中包含了该数据库的各种属性,比如该数据库的字符集和比较规则。

2.3 表在文件系统中的表示

2.3.1InnoDB存储引擎模式

1.表结构
为了保存表结构,InnoDB数据目录下对应的数据库子目录下创建了一个专用于描述表结构的文件,文件名是这样:

表名.frm

2.表中数据和索引
①系统表空间(system tablespace)
默认情况下,InnoDB会在数据目录下创建一个名为ibdata1,大小为12M的文件,这个文件就是对应的系统表空间在文件系统上的表示。该文件是自扩展文件,当不够用时会自己增加文件大小。
也可以让系统表空间对应的文件系统上多个实际文件,或者修改原来的ibata1的名字,此时需要在MySQL启动时配置对应的文件路径以及它们的大小,如作以下修改:

[server]
innodb_data_file_path=data1: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_table=0 #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 Information,SDI),SDI被卸载ibd文件内部。MySQL8.0属于Oracle旗下,同理。
为了从IBD文件中提取SDI信息,Oracle提供了一个应用程序ibd2sdi。
这个工具MySQL8自带就有。
(1)查看表结构
到存储ibd文件的目录下,执行下面的命令:

ibd2sdbi --dump-file=student.txt student.ibd
[root@guoyvzhimysql8 mysql]# cd sys
[root@guoyvzhimysql8 sys]# ll
总用量 80
-rw-r-----. 1 mysql mysql 114688 2月  22 14:23 sys_config.ibd
[root@guoyvzhimysql8 sys]# ibd2sdi --dump-file=sys_config.txt sys_config.ibd
[root@guoyvzhimysql8 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
[root@guoyvzhimysql8 sys]# vim ./sys_config.txt 

在这里插入图片描述
图中标记分别表示

  • 表名
  • 列名
  • 列的长度
    通过上面的测试结果可以发现,MySQL8把之前版本的frm文件合并到ibd文件中了。
2.3.2 MyISAM存储引擎模式

1.表结构
在存储表结构方面,MyISAMInnoDB一样,也是在数据目录下对应的数据库子目录下创建了一个专门用于描述表结构的文件:

表名.frm 5.7
表名.sdi 8.0

2.表中数据和索引
在MyISAM中的索引全部都是二级索引,该存储引擎的数据和索引是分开存放的。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下。

表名.MYD  #存储数据
表名.MYI #存储索引

2.4小结

数据库a,表b。
1、如果b表采用InnoDB,data\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证书和密钥文件
    主要是为了客户端和服务器安全通信而创建的一些文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/701451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

番外篇 | YOLOv5+DeepSort实现行人目标跟踪检测

前言:Hello大家好,我是小哥谈。DeepSort是一种用于目标跟踪的深度学习算法。它结合了目标检测和目标跟踪的技术,能够在视频中准确地跟踪多个目标,并为每个目标分配一个唯一的ID。DeepSort的核心思想是将目标检测和目标跟踪两个任务进行联合训练,以提高跟踪的准确性和稳定性…

创建vue3项目(基础)

首先打开自己的目录文件输入指令cmd 出现命令行工具 输入指令vue create 项目名称 按回车 选择第三个自己配置 根据需求选择 回车 选择自己需要的版本 出现这个 一直按回车大约5下或者6下 创建完毕 结束 感谢观看

Spring 中的AOP 以及与 AspectJ AOP 的区别

AOP到底是什么,有什么作用: AOP(Aspect-Oriented Programming,面向切面编程): 能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等&…

【EAI 024】RoboVQA: Multimodal Long-Horizon Reasoning for Robotics

Paper Card 论文标题:RoboVQA: Multimodal Long-Horizon Reasoning for Robotics 论文作者:Pierre Sermanet, Tianli Ding, Jeffrey Zhao, et.al. 作者单位:Stanford University, UC Berkeley, Meta 论文原文:https://arxiv.org/a…

【Linux】部署单机项目(自动化启动)---(图文并茂详细讲解)

目录 一 准备工作 1.1 连接服务器拷贝文件 1.2 解压 二 JDK安装 2.1 配置坏境变量 2.2 查看版本 三 Tomcat(自启动) 3.1 复制启动命令的位置 3.2 添加命令相关配置文件 3.2.1 配置jdk及tomcat目录 3.2.2 添加优先级 3.3 设置自启动命令 3.4 开放端口 四 My…

3_怎么看原理图之协议类接口之I2C笔记

I2C只连接I2CSCL与I2CSDA两根线,即2线制异步串行总线。 I2CSCL与I2CSDA两根线需要上拉电阻,目的是让电平有确定的状态。 发完8bit数据后,第9个电平拉低SDA为低电平。 比如传一个数据A0x410100 0001 IIC总线有多个从机设备的通信&#xff0c…

Spring Boot 笔记 025 主界面

1.1 路由搭建 1.1.1 安装vue router npm install vue-router4 1.1.2 在src/router/index.js中创建路由器,并导出 import { createRouter, createWebHistory } from vue-router//导入组件 import LoginVue from /views/Login.vue import LayoutVue from /views/La…

Aidex移动端项目入门

运行效果 项目源码下载 若依-ruoyi-AiDex-Uniapp: 若依-Ruoyi APP 移动解决方案,基于uniappuView封装的一套基础模版,开箱即用,免费开源,一份代码多终端适配,支持H5、支付宝小程序、微信小程序、APP,实现了…

改进Yolov5目标检测与单目测距 yolo速度测量-pyqt界面-yolo添加注意力机制

当设计一个结合了 YOLOv5 目标检测、单目测距与速度测量以及 PyQt 界面的毕业设计时,需要考虑以下几个方面的具体细节: 计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,私聊会回复! YOLOv5 目标检测: 首先,选择…

B树的介绍

R-B Tree 简介特性B树特性m阶B树的性质(这些性质是B树规定的) B树的搜索B树的添加B树的删除——非叶子结点 简介 R-B Tree又称为Red-Black Tree,红黑树。是一种特殊的二叉查找树,红黑树的每个节点上都有存储为表示结点的颜色&…

Camunda7.18流程引擎启动出现Table ‘camunda_platform_docker.ACT_GE_PROPERTY‘的解决方案

文章目录 1、问题描述2、原因分析3、解决方案3.1、方案一:降低mysql版本3.2、方案二:增加nullCatalogMeansCurrent参数(推荐) 4、总结 1、问题描述 需要在docker中,部署Camunda流程引擎。通过启动脚本camunda-platfor…

分布式架构(分布式ID+分布式事务)

分布式架构 分布式事务产生的场景: 跨JVM进程产生的分布式事务 单体系统访问多个数据库实例 多服务访问同一个数据库实例 CAP理论 C:一致性,指写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上&#xff0…

flet 读取本地音频文件的信息,歌名,歌手,歌曲长度,封面

请先安装 pip install flet, tinytag 组件 tinytag 是用来读取音频文件的信息的 测试用最好找一个有封面的音频的文件, 我是windows电脑,打开预览模式,选中文件时候能够右边显示图片, 如下,我电脑上某个音频文件的封面 import flet as ft from tinytag import TinyTag import…

自动驾驶---行业发展及就业环境杂谈

进入21世纪以来,自动驾驶行业有着飞速的发展,自动驾驶技术(L2---L3)也逐渐落地量产到寻常百姓家。虽然最早期量产FSD的特斯拉有着深厚的技术积累,但是进入2010年以后,国内的公司也逐渐发展起来自己的自动驾…

YOLOv5算法进阶改进(18)— 引入动态蛇形卷积DSConv(ICCV2023 | 用于管状结构分割)

前言:Hello大家好,我是小哥谈。动态蛇形卷积(Dynamic Snake Convolution,简称DSConv)是一种用于图像处理和计算机视觉任务的卷积神经网络(CNN)操作。它是在传统的卷积操作基础上引入了动态蛇形路径的概念,以更好地捕捉图像中的细节和边缘信息。传统的卷积操作是在固定的…

读书笔记-增强型分析:AI驱动的数据分析、业务决策与案例实践

目录 前言 运用人工智能技术,可以使人类社会变得更美好。人们总是期待产品更适合、服务更贴心、生活更便利。在实践中,技术给企业赋能,企业通过优质的产品和服务满足社会,提升人类福祉。很多金融企业已经开始尝试向潜在客户推送…

Uniapp小程序开发-底部tabbar的开发思路

文章目录 前言一、uniapp 实现 tabbar二、图标使用网络图片后端返回tabbar信息uniapp方式中的setTabBarItem 总结 前言 记录uniapp 开发小程序的底部tabbar ,这里讨论的不是自定义tabbar的情况。而是使用wx.setTabBarItem(Object object) 这个api的情况。关于custo…

【Linux进程】进程状态---进程僵尸与孤儿

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.进程排队2.进程状态…

【Ubuntu】通过网线连接两台电脑以实现局域网连接的方法

有时我们需要将多台计算机连接在一起,以便实现数据共享、资源访问等功能。本文将介绍如何通过网线连接两台运行Ubuntu操作系统的电脑,以便它们能够直接通信,从而实现局域网连接。 1. 准备工作 在开始之前,请准备好: …

[云原生] 二进制安装K8S(上)搭建单机matser、etcd集群和node节点

一、单机matser预部署设计 目前Kubernetes最新版本是v1.25,但大部分公司一般不会使用最新版本。 目前公司使用比较多的:老版本是v1.15,因为v1.16改变了很多API接口版本,国内目前使用比较多的是v1.18、v1.20。 组件部署&#xff…