MySQL的数据存储

查看MySQL数据的存储位置

MySQL的默认存储引擎InnoDB是把数据存储在磁盘中,而操作系统是通过文件系统对磁盘进行管理的,那么怎么看MySQL具体把数据放在文件系统哪个位置呢?

mysql> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)

执行上述命令用来查看MySQL存放数据的目录,可以看出,MySQL把数据存放在了/var/lib/mysql路径下, 切换到这个路径,我们看下这个路径下都有哪些文件和目录

数据目录的结构
[root@mac mysql]# ls -al
总用量 188520
drwxr-x--x  13 mysql mysql     4096 4月   9 06:12 .
drwxr-xr-x. 44 root  root      4096 12月  3 2019 ..
-rw-r-----   1 mysql mysql       56 7月  22 2019 auto.cnf
-rw-------   1 mysql mysql     1679 7月  22 2019 ca-key.pem
-rw-r--r--   1 mysql mysql     1107 7月  22 2019 ca.pem
-rw-r--r--   1 mysql mysql     1107 7月  22 2019 client-cert.pem
-rw-------   1 mysql mysql     1679 7月  22 2019 client-key.pem
drwxr-x---   2 mysql mysql     4096 5月   7 08:02 food
-rw-r-----   1 mysql mysql     2490 12月  5 14:06 ib_buffer_pool
-rw-r-----   1 mysql mysql 79691776 5月   6 23:55 ibdata1
-rw-r-----   1 mysql mysql 50331648 5月   6 23:55 ib_logfile0
-rw-r-----   1 mysql mysql 50331648 7月  22 2019 ib_logfile1
-rw-r-----   1 mysql mysql 12582912 5月   7 05:34 ibtmp1
drwxr-x---   2 mysql mysql     4096 7月  22 2019 mysql
srwxrwxrwx   1 mysql mysql        0 12月  5 14:06 mysql.sock
-rw-------   1 mysql mysql        5 12月  5 14:06 mysql.sock.lock
drwxr-x---   2 mysql mysql     4096 6月  10 2020 order_food
drwxr-x---   2 mysql mysql     4096 7月  22 2019 performance_schema
-rw-------   1 mysql mysql     1679 7月  22 2019 private_key.pem
-rw-r--r--   1 mysql mysql      451 7月  22 2019 public_key.pem
drwxr-x---   2 mysql mysql     4096 10月 13 2019 sell
-rw-r--r--   1 mysql mysql     1107 7月  22 2019 server-cert.pem
-rw-------   1 mysql mysql     1675 7月  22 2019 server-key.pem
drwxr-x---   2 mysql mysql    12288 7月  22 2019 sys
数据库在文件目录中的表示

上图就是/var/lib/mysql目录下的内容,其中d开头的表示目录,这些目录正好对应MySQL里的一个个数据库,例如food目录就对应着MySQL中的food数据库

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| food               |
| mysql              |
| order_food         |
| performance_schema |
| sell               |
| sys                |
+--------------------+
7 rows in set (0.00 sec)

需要注意的是,其中有一个例外,系统数据库information_schema并没有在数据目录下

下面具体到food目录下看看都有什么内容

[root@gxbrc mysql]# ls -al food/
总用量 3124
drwxr-x---  2 mysql mysql   4096 5月   7 08:02 .
drwxr-x--x 13 mysql mysql   4096 4月   9 06:12 ..
-rw-r-----  1 mysql mysql   8812 10月 28 2019 comment.frm
-rw-r-----  1 mysql mysql  98304 10月 28 2019 comment.ibd
-rw-r-----  1 mysql mysql     67 10月 13 2019 db.opt
-rw-r-----  1 mysql mysql   8774 5月  31 2020 employees.frm
-rw-r-----  1 mysql mysql  98304 5月  31 2020 employees.ibd
-rw-r-----  1 mysql mysql  13152 2月  14 2020 order_detail.frm
-rw-r-----  1 mysql mysql 147456 11月 30 23:29 order_detail.ibd
-rw-r-----  1 mysql mysql  13584 11月 14 2019 order_main.frm
-rw-r-----  1 mysql mysql 114688 11月 30 23:29 order_main.ibd
-rw-r-----  1 mysql mysql  13502 10月 28 2019 order_tab.frm
-rw-r-----  1 mysql mysql  98304 10月 28 2019 order_tab.ibd
-rw-r-----  1 mysql mysql   8711 10月 28 2019 pic_tab.frm
-rw-r-----  1 mysql mysql  98304 10月 28 2019 pic_tab.ibd
-rw-r-----  1 mysql mysql   8698 10月 13 2019 picture.frm
-rw-r-----  1 mysql mysql  98304 10月 13 2019 picture.ibd

food目录下存放的文件主要是用来描述food数据库下的表的信息,而数据库下的表一般主要分为以下两个部分:

1). 表的结构信息
2). 表的数据信息

可以看到food目录下除去有一个db.opt文件,其他的都是*.frm 和 *.ibd结尾的文件,下面我们具体介绍一下他们的作用

db.opt

查看一下db.opt文件,可以看到db.opt主要用来描述数据库的字符集和比较规则

[root@mac food]# cat db.opt
default-character-set=utf8mb4
default-collation=utf8mb4_general_ci
*.frm

*.frm主要用来描述数据库中表的结构信息,例如包含哪些列,字段类型是什么,以及外键的约束条件,索引和数据库使用的存储引擎等信息;需要注意的是,frm文件是二进制文件,我们直接通过cat或者vim来查看会发现是乱码

*.ibd

*.ibd主要用来存放InnoDB的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值