一、mysql相关目录

查看和mysql相关的目录命令


find / -name mysql


1、数据库文件存放路径

其中 /var/lib/mysql/ 就是mysql数据库文件存放路径,当然也可通过命令查看


mysql> show variables like 'datadir'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+


2、相关命令目录

/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin。

3、配置文件目录

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

二、 数据库和文件系统的关系

1、4个默认的数据库

mysql

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

information_schema

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

performance_schema

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

sys

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

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

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

使用 InnoDB 存储引擎模式

create table test(id int,name varchar(11))engin=myisam;

8.0版本

只会生成一个test.ibd,将表结构以及数据合一放到ibd文件中了,可以解析一下ibd文件查看,使用ibd2sdi工具(8.0自带)无需下载只要配置好环境变量就能用


ibd2sdi --dump-file=test.txt test.ibd 打开test.txt文件查看


其他版本根据系统表空间还是系统空间区分

5.5.7-5.6.6默认会将数据存储到系统表空间ibdata1目录中,所以有下面三个文件


db.opt test.frm (二进制文件) ibdata1


5.6.6之后默认将数据存储到独立表空间ibd文件中


db.opt test.frm test.ibd


1、系统表空间与独立表空间的设置

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

[server]

innodb_file_per_table=0 # 0:代表使用系统表空间; 1:代表使用独立表空间

MyISAM存储引擎模式

创建一张表,存储引擎使用MYISAM

create table test(id int,name varchar(11))engin=myisam;

data\a 会产生三个文件

5.7版本中


test.frm 存储表结构文件,字段长度等 test.MYD 存储数据 (MYData) test.MYI 存储索引 (MYIndex)


8.0版本中


test_xxx.sdi 存储表结构文件,字段长度等 test.MYD 存储数据 (MYData) test.MYI 存储索引 (MYIndex)