1、mysql数据库的数据目录结构
查看mysql的主要目录结构
通过命名查看mysql的目录结构:find / -name mysql
1.1数据库文件的存放路径
MySQL数据库文件的存放路径:/var/lib/mysql/
1.2相关命令的存放路径
相关命令目录:/usr/bin和/usr/sbin。
/usr/bin目录
/usr/sbin目录
启动命令能读取的配置文件选项组
1.3配置文件目录
配置文件目录:/usr/share/mysql(命令及配置文件)和 /etc(如my.cnf)
/usr/share/mysql(命令及配置文件)
/etc目录
数据库和文件系统的关系
数据库的文件信息会存在磁盘上,文件系统来管理这些文件信息。
2.1查看默认的数据库
查看命令:SHOW DATABASES;
- mysql:MySQL系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。
- information_schema:MySQL系统自带的数据库,这个数据库保存着MySQL服务器维护的所有其他数据库的信息 ,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称之为 元数据 。在系统数据库information_schema 中提供了一些以innodb_sys 开头的表,用于表示内部系统表。
- performance_schema:MySQL系统自带的数据库,这个数据库里主要保存MySQL服务器运行过程中的一些状态信息,可以用来监控MySQL服务的各类性能指标 。包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息。
- sys:MySQL系统自带的数据库,这个数据库主要是通过视图的形式把information_schema和performance_schema结合起来,帮助系统管理员和开发人员监控MySQL的技术性能。
2.2数据库在文件系统中的表示
使用create database 数据库名
语句创建一个数据库的时候,在数据库目录/var/lib/mysql下会创建一个和数据库同名的子目录。
除了information_schema这个系统数据库外,其他的数据库在数据目录下都有对应的子目录。
2.3表在文件系统中的标识
使用数据库a中的表b描述在INNODB和MYISAM中的区别。
- db.opt:存储的是数据库的字符集和比较规则
- ibdata1:系统表空间,存储数据和索引信息
- b.frm:描述的是表结构文件、字段长度
- b.xxx.sdi:描述的是表结构文件、字段长度
- b.idb:独立表空间,存储数据和索引信息
- b.MYD(MYDATA):存储数据信息
- b.MYI(MYINDEX):存储索引信息
在INNODB中:聚簇索引(数据和索引在一起)
- mysql5.5.7(包括)至mysql5.6.6(不包括)版本:使用的是系统表空间
存在的文件:db.opt、b.frm、ibdata1
- mysql5.6.6(包括)至mysql5.7(包括)版本:使用的是独立表空间
存在的文件:db.opt、b.frm、b.idb
- mysql5.7(不包括)至mysql8.0(不包括)版本:使用的是独立表空间
存在的文件:b.frm、b.idb
- mysql8.0以及之后的版本(把frm的信息合并到idb中)
存在的文件:b.idb
在b.idb文件的目录下执行以下命令:idb2sdi --dump-flie=b.txt b.idb(查看b.txt存在表结构信息)
在MYISAM中:非聚簇索引(数据和索引不在一起)
- mysql5.5.7(包括)至mysql5.6.6(不包括)版本:使用的是系统表空间
存在的文件:db.opt、b.frm、ibdata1
- mysql5.6.6(包括)至mysql5.7(包括)版本:使用的是独立表空间
存在的文件:db.opt、b.frm、b.MYD、b.MYI
- mysql5.7(不包括)至mysql8.0(不包括)版本:使用的是独立表空间
存在的文件:b.frm、b.MYD、b.MYI
- mysql8.0以及之后的版本(把frm的信息移动到sdi)
存在的文件:b.xxx.sdi、b.MYD、b.MYI