Linux环境下MySQL的数据目录

news2024/12/23 10:25:50

MySQL的数据目录

数据库文件的存放路径

MySQL数据库文件的存放路径:

/var/lib/mysql
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)

从结果中可以看出,在我的计算机上MySQL的数据目录就是 /var/lib/mysql/ 。

相关命令目录

相关命令目录:/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin。

配置文件目录

配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)

在这里插入图片描述

数据库和文件系统的关系

查看默认数据库

查看一下在我的计算机上当前有哪些数据库:查看一下在我的计算机上当前有哪些数据库:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

可以看到有4个数据库是属于MySQL自带的系统数据库。

1、mysql
MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。

2、information_schema

MySQL 系统自带的数据库,这个数据库保存着MySQL服务器 维护的所有其他数据库的信息 ,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为 元数据 。在系统数据库 information_schema 中提供了一些以innodb_sys 开头的表,用于表示内部系统表。

mysql> USE information_schema;
Database changed
mysql> SHOW TABLES LIKE 'innodb_sys%';
+--------------------------------------------+
| Tables_in_information_schema (innodb_sys%) |
+--------------------------------------------+
| INNODB_SYS_DATAFILES |
| INNODB_SYS_VIRTUAL |
| INNODB_SYS_INDEXES |
| INNODB_SYS_TABLES |
| INNODB_SYS_FIELDS |
| INNODB_SYS_TABLESPACES |
| INNODB_SYS_FOREIGN_COLS |
| INNODB_SYS_COLUMNS |
| INNODB_SYS_FOREIGN |
| INNODB_SYS_TABLESTATS |
+--------------------------------------------+
10 rows in set (0.00 sec)

3、performance_schema
MySQL 系统自带的数据库,这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,可以用来 监控 MySQL 服务的各类性能指标 。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息。

4、sys
MySQL 系统自带的数据库,这个数据库主要是通过 视图 的形式把information_schema 和performance_schema 结合起来,帮助系统管理员和开发人员监控 MySQL 的技术性能。

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

看一下我的计算机上的数据目录下的内容:

[root@VM-12-8-centos mysql-8.0]# cd /var/lib/mysql
[root@VM-12-8-centos mysql]# ll
total 188876
-rw-r----- 1 mysql mysql       56 Dec  1 15:10 auto.cnf
-rw-r----- 1 mysql mysql     3893 Dec  1 22:45 binlog.000001
-rw-r----- 1 mysql mysql      156 Dec  1 22:46 binlog.000002
-rw-r----- 1 mysql mysql       32 Dec  1 22:46 binlog.index
-rw------- 1 mysql mysql     1676 Dec  1 15:10 ca-key.pem
-rw-r--r-- 1 mysql mysql     1112 Dec  1 15:10 ca.pem
-rw-r--r-- 1 mysql mysql     1112 Dec  1 15:10 client-cert.pem
-rw------- 1 mysql mysql     1680 Dec  1 15:10 client-key.pem
-rw-r----- 1 mysql mysql   196608 Dec  1 22:48 #ib_16384_0.dblwr
-rw-r----- 1 mysql mysql  8585216 Dec  1 15:10 #ib_16384_1.dblwr
-rw-r----- 1 mysql mysql     3731 Dec  1 22:45 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Dec  1 22:46 ibdata1
-rw-r----- 1 mysql mysql 50331648 Dec  1 22:48 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Dec  1 15:10 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Dec  1 22:46 ibtmp1
drwxr-x--- 2 mysql mysql     4096 Dec  1 22:46 #innodb_temp
drwxr-x--- 2 mysql mysql     4096 Dec  1 15:10 mysql
-rw-r----- 1 mysql mysql 25165824 Dec  1 22:46 mysql.ibd
srwxrwxrwx 1 mysql mysql        0 Dec  1 22:46 mysql.sock
-rw------- 1 mysql mysql        5 Dec  1 22:46 mysql.sock.lock
drwxr-x--- 2 mysql mysql     4096 Dec  1 15:10 performance_schema
-rw------- 1 mysql mysql     1676 Dec  1 15:10 private_key.pem
-rw-r--r-- 1 mysql mysql      452 Dec  1 15:10 public_key.pem
-rw-r--r-- 1 mysql mysql     1112 Dec  1 15:10 server-cert.pem
-rw------- 1 mysql mysql     1676 Dec  1 15:10 server-key.pem
drwxr-x--- 2 mysql mysql     4096 Dec  1 15:10 sys
-rw-r----- 1 mysql mysql 16777216 Dec  1 22:48 undo_001
-rw-r----- 1 mysql mysql 16777216 Dec  1 22:48 undo_002
[root@VM-12-8-centos mysql]# 

这个数据目录下的文件和子目录比较多,除了 information_schema 这个系统数据库外,其他的数据库在 数据目录 下都有对应的子目录。

表在文件系统中的表示

InnoDB存储引擎模式

1、表结构

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

表名.frm

比方说我们在xdr数据库下创建一个名为test的表:

mysql> user xdr;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user xdr' at line 1
mysql> use xdr;
Database changed
mysql> create table test (
    -> c1 INT
    -> );
Query OK, 0 rows affected (0.07 sec)

那在数据库 atguigu 对应的子目录下就会创建一个名为 test.frm 的用于描述表结构的文件。.frm文件的格式在不同的平台上都是相同的。这个后缀名为.frm是以 二进制格式 存储的,我们直接打开是乱码的。

2、表中数据和索引
a、系统表空间(System tablespace)
默认情况下,InnoDB会在数据目录下创建一个名为 ibdata1 、大小为 12M 的文件,这个文件就是对应的 系统表空间 在文件系统上的表示。怎么才12M?注意这个文件是 自扩展文件 ,当不够用的时候它会自己增加文件大小。

当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的ibdata1 这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,比如我们这样修改一下my.cnf 配置
文件:

[server]
innodb_data_file_path=data1:512M;data2:512M:autoextend

b、独立表空间(file-per-table tablespace)

在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为 每一个表建立一个独立表空间 ,也就是说我们创建了多少个表,就有多少个独立表空间。使用 独立表空间 来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个 .ibd 的扩展名而已,所以完整的文件名称长这样:

表名.ibd

比如:我们使用了 独立表空间 去存储 xdr数据库下的 test 表的话,那么在该表所在数据库对应的 xdr目录下会为 test 表创建这两个文件:

test.frm
test.ibd

其中 test.ibd 文件就用来存储 test 表中的数据和索引。

c、系统表空间与独立表空间的设置
我们可以自己指定使用 系统表空间 还是 独立表空间 来存储数据,这个功能由启动参数innodb_file_per_table 控制,比如说我们想刻意将表数据都存储到 系统表空间 时,可以在启动MySQL服务器的时候这样配置:

[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)

d、其他类型的表空间

随着MySQL的发展,除了上述两种老牌表空间之外,现在还新提出了一些不同类型的表空间,比如通用表空间(general tablespace)、临时表空间(temporary tablespace)等。

MyISAM存储引擎模式

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

表名.frm

2、表中数据和索引

在MyISAM中的索引全部都是 二级索引 ,该存储引擎的 数据和索引是分开存放 的。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下。假如 test表使用MyISAM存储引擎的话,那么在它所在数据库对应的 xdr目录下会为 test 表创建这三个文件:

test.frm 存储表结构
test.MYD 存储数据 (MYData)
test.MYI 存储索引 (MYIndex)

举例:创建一个 MyISAM 表,使用 ENGINE 选项显式指定引擎。因为 InnoDB 是默认引擎。

CREATE TABLE `student_myisam` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
`age` int DEFAULT NULL,
`sex` varchar(2) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=MYISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb3;

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

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

相关文章

Python 采集109个中国风风格PPT

PPT下载链接:https://pan.baidu.com/s/1PJ671YEj6M9khtdhh6TSxA?pwdg37t 提取码:g37t 源码下载链接:ppt.rar - 蓝奏云 采集的参数 page_count 1 # 每个栏目开始业务content"text/html; charsetgb2312"base_url "https:…

RabbitMQ中的集群架构介绍

文章目录前言一、普通集群(副本集群)1.架构图二、镜像集群1.架构图前言 在之前我们是以单节点的形式来运行mq。在真正的生产实践中,mq主要用来完成两个应用系统间的通信,如果在某一时刻mq宕机了,会导致系统瘫痪,就是无法进行通信…

美中嘉和在港交所招股书失效:去年亏损约5亿元,杨建宇为实控人

12月1日,贝多财经从港交所披露易了解到,美中嘉和医学技术发展集团股份有限公司(下称“美中嘉和”)的上市申请材料失效,目前已无法正常查看或下载。据贝多财经了解,美中嘉和于2022年5月31日在港交所递表。 公…

C++STL——vector类与模拟实现

vector类vector常用接口介绍初始化reserve与resizeassign缩容接口算法库中的findvector的底层小部分框架模拟实现vectot模拟vector的整体代码迭代器失效问题深层深浅拷贝问题vector vector是表示可变大小数组的序列容器,就像数组一样,采用连续存储空间来存储元素&a…

Three.js初识:渲染立方体、3d字体、修改渲染背景颜色

用场景对three.js进行渲染:场景、相机、渲染器 const scene new THREE.Scene(); const camera new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );const renderer new THREE.WebGLRenderer(); renderer.setSize( window.i…

[附源码]Python计算机毕业设计Django基于web的建设科技项目申报管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【内网安全】——Linux信息收集

作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座…

ContentResolver.query流程分析

文章目录1.Context.getContentResolver()2.ContentResolver.query()3.ContentProviderProxy.query()4.Transport.query()总结增删改查ContentProvider时,通过Binder实现ContentProvider在App进程启动时进行实例化,具体时机是在Application.onCreate()执行…

项目构建生命周期与插件

项目构建生命周期描述的是一次构建过程经历了多少个事件。 maven对项目构建的生命周期划分为3套: clean:清理工作。 default:核心工作,例如编译、测试、打包、部署等。 site:产生报告,发布站点等。 clean生…

工具-Obsidian生产力工具,安装第三方插件(GitHub)教程,以安装Syntax Highlight(代码高亮)为例

文章目录1、去GitHub上找到你需要的插件2、下载到本地3、在obsidian中新建文件4、将下载好的GitHub文件放置文件夹5、obsidian中设置6、插入代码块实例1、去GitHub上找到你需要的插件 在GitHub的搜索框中,直接搜索obsidian 插件名,obsidianSyntax Highl…

Halcon 图片分割 米粒分水岭(高斯滤波,区域距离计算,分水岭处理)

资源: 链接:https://pan.baidu.com/s/1kmxdMk67E-7QCsG5mKnc7A 提取码:555s 图片 代码 * 1.读取并显示图片 ************************************* dev_close_window () read_image (Image, ./img.png) get_image_size (Image, Width, He…

JVM垃圾回收

JVM 快速开始: 请谈谈你对JVM 的理解?java8 的虚拟机有什么更新? 什么是OOM ?什么是StackOverflowError?有哪些方法分析? JVM 的常用参数调优你知道哪些? 内存快照抓取和MAT分析DUMP文件知道…

Android databinding的接入使用与详解(一)

一、介绍 DataBinding 是Google Android组件框架,管理view和data之间进行绑定。DataBinding主要管理数个布局文件,这样我们就不用去实例化layout的view。直接通过DataBindingUitl来完成初始化。 这样可以精简代码,也减少工作量,避…

2022双十二有哪些值得入手的数码好物?值得入手的数码好物推荐

双十二快到了,不少人都会选择在这个时候入手数码产品,但又不知道有哪些值得入手。下面,我来给大家推荐几款实用性高,入手性强的数码好物,感兴趣的一起来看看吧。 一、南卡小音舱蓝牙耳机 推荐理由:蓝牙5.…

带你初识JSP(JAVA服务器页面)

文章目录前言第一个 JSP 程序什么是Java Server Pages?为什么使用JSP?JSP的优势配置Java开发工具(JDK)设置Web服务器:Tomcat设置 CLASSPATH 环境变量JSP 结构JSP 处理JSP 生命周期JSP编译JSP初始化JSP执行JSP清理前言 JSP 与 PH…

ABAP CLEAR REFRESH FREE 说明(刘欣)

本文仔细测试总结了ABAP中的clear、refresh、free,因为很多时候程序的BUG就是出现在变量没有清理干净,希望整理一个定式出来以后少出BUG。 用clear、refresh、free对带表头的表执行的测试结果如下表: 看起来,最好的避免这些清空命…

Oracle11g安装

参考教程 Oracle11g安装配置详细教程 oracle11g安装步骤详细图文教程 但是这里的用户名如果是以system的话,密码错误 Oracle默认账号密码: (1)普通用户: SCOTT (密码:tiger) &…

Day17--购物车页面-商品列表-封装NumberBox

提纲挈领: 官方文档提供了uni-number-box组件 文档内容: 我的操作: 1》修改 my-goods.vue 组件的源代码,在类名为 goods-info-box 的 view 组件内部渲染 NumberBox 组件的基本结构: 2》美化其样式 *****************…

基于最小均方误差linear minimum mean square error(LMMSE)插值算法的图像超分辨重构研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、图像复原基本原理✳️ 三、基于多通道LMMSE图像复原法✳️ 3.1 最小均方误差LMMSE插值理论✳️ 3.2 理论公式对应的Matlab关键代码✳️ 四、实验验证✳️ 五、参考文献✳️ 六、Matlab程序获取与验证✳️ 一、引言 图像是一种表达信息的…

进程与线程的相爱相杀

✨✨hello,愿意点进来的小伙伴们,你们好呐! 🐻🐻系列专栏:【JavaEE初阶】 🐲🐲本篇内容:详解进程与线程 🐯🐯作者简介:一名现大二的三非编程小白&…