-->
当前位置:首页 > DayDayUp > 正文内容

MySQL数据目录

Luz2年前 (2023-01-07)DayDayUp2744

MySQL服务在启动时,会到文件系统的某个目录下加载一些数据,之后在运行过程中产生的数据也会存储到该目录(即数据目录)中。


查看MySQL的数据目录路径

数据目录对应MySQL中的系统变量datadir。连接到mysql服务后,可以使用以下命令查看

SHOW VARIABLES LIKE 'datadir';

image.png


可以看到在这台服务器上,mysql的数据目录为/www/server/data/



数据目录的结构

mysql在运行过程中会产生和保存我们的数据库、数据表、视图、触发器等数据在数据目录中。每个数据库都对应数据目录下的一个子目录,即每个数据库都有其对应的文件夹。

当我们创建数据库时,mysql会执行以下操作:

  1. 在数据目录下创建一个与命名与数据库名相同的文件夹。

  2. 在该文件夹下创建一个db.opt文件,此文件包含了数据库的相关信息,如使用的字符集与比较规则等。

可以进入数据目录查看这些内容。

image.png

mysql自带了四个系统数据库:

  1. information_schema

  2. mysql

  3. sys

  4. performance_schema

除了information_schema这个特殊数据库存放在别的位置外,其他系统数据库也存放在数据目录中。


MyISAM引擎中数据库的存储结构

进入一个MyISAM数据库目录中查看内容

image.png

每个表都对应三个文件,后缀分别为frm、MYD、MYI。

其中.frm文件用来描述表的结构,MYD文件存储表的数据、MYI文件用来存储表的索引。


InnoDB引擎中数据库的存储结构

进入一个InnoDB数据库目录中查看内容

image.png

独立表空间

在mysql 5.6.6+的版本中,InnoDB使用独立表空间来存放每一个表,因此每个表都有对应的frm、ibd文件。

其中.frm用来存放表的结构信息、ibd用来存放表的数据信息。

系统表空间

5.6.6-的MySQL中,InnoDB默认使用系统表空间来存放数据,这个系统表空间可以对用文件系统上的一个或者多个文件。默认情况下会在数据目录中创建一个ibdata1的自拓展文件,其大小为12MB,当12MB空间被使用完后,会自动进行扩展。

系统表空间只有一份,在MySQL5.5.7-5.6.5的版本中,表中的数据都会被默认存储到这个系统表空间中。


表空间类型的切换

修改mysql配置,其中值为0表示使用系统表空间,1表示使用独立表空间

[server]
innodb_file_pre_table=0



数据目录下的其他文件

数据目录下除了数据库文件以外,还包含了一些其他文件,主要有:

  1. 服务器进程文件(.pid):每运行一个MySQL服务器程序,MySQL否会吧自己的进程号写在这个文件中

  2. 服务器日志文件(.log,mysql-bin,.err等):保存在服务器运行过程中产生的各种日志

  3. 证书与密钥文件(.pem等):主要用来确保服务器与客户端的安全通信

  4. MySQL配置文件(.cnf等):存放MySQL的配置信息

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。