一、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)