mysql的数据文件
在mysql的启动参数中可以看到,表空间数据文件存放路径如下:
--datadir=/var/lib/mysql
进入到上述目录看下:
[root@VM-75-68 ~]# cd /var/lib/mysql/
[root@VM-75-68 mysql]# ll
total 628424
-rw-rw----. 1 mysql mysql 56 May 17 20:46 auto.cnf
-rw-rw----. 1 mysql mysql 79691776 Sep 11 20:34 ibdata1
-rw-rw----. 1 mysql mysql 268435456 Sep 11 20:34 ib_logfile0
-rw-rw----. 1 mysql mysql 268435456 May 17 20:46 ib_logfile1
-rw-rw----. 1 mysql mysql 132 Oct 9 09:59 master.info
drwx------. 2 mysql mysql 4096 May 17 20:46 mysql
-rw-rw----. 1 mysql mysql 2160 May 21 03:53 mysql-bin.000001
-rw-rw----. 1 mysql mysql 43064 Jul 24 01:42 mysql-bin.000002
-rw-rw----. 1 mysql mysql 3909 Jul 25 00:19 mysql-bin.000003
-rw-rw----. 1 mysql mysql 143 Jul 25 00:31 mysql-bin.000004
-rw-rw----. 1 mysql mysql 143 Sep 9 23:32 mysql-bin.000005
-rw-rw----. 1 mysql mysql 2694 Sep 12 01:07 mysql-bin.000006
-rw-rw----. 1 mysql mysql 989 Sep 12 01:22 mysql-bin.000007
-rw-rw----. 1 mysql mysql 9134 Sep 11 20:30 mysql-bin.000008
-rw-rw----. 1 mysql mysql 787 Sep 11 20:35 mysql-bin.000009
-rw-rw----. 1 mysql mysql 120 Sep 11 20:35 mysql-bin.000010
-rw-rw----. 1 mysql mysql 190 Sep 11 20:35 mysql-bin.index
srwxrwxrwx. 1 mysql mysql 0 Sep 11 20:30 mysql.sock
drwx------. 2 mysql mysql 4096 Sep 9 23:32 ossec
drwx------. 2 mysql mysql 4096 May 17 20:46 performance_schema
drwx------. 2 mysql mysql 4096 Jul 25 00:38 relay
-rw-rw----. 1 mysql mysql 69 Sep 11 20:30 relay-log.info
drwx------. 2 mysql mysql 4096 Sep 12 01:38 RW
drwx------. 2 mysql mysql 4096 May 21 03:58 test
-rw-rw----. 1 root root 3063 Sep 12 03:24 test.sql
-rw-rw----. 1 mysql mysql 6 Sep 11 20:30 VM-75-68.pid
-rw-rw----. 1 mysql mysql 176 Sep 11 20:30 VM-75-68-relay-bin.000016
-rw-rw----. 1 mysql mysql 26767993 Sep 11 20:35 VM-75-68-relay-bin.000017
-rw-rw----. 1 mysql mysql 236 Sep 11 20:35 VM-75-68-relay-bin.000018
-rw-rw----. 1 mysql mysql 84 Sep 11 20:35 VM-75-68-relay-bin.index
drwx------. 2 mysql mysql 12288 Sep 9 23:32 zabbix
当使用innodb存储引擎时,如果再配置文件中 没有配置innodb_file_per_table,默认情况下,所有库中的所有使用innodb存储引擎的表示数据都存在‘ibdata1’这个文件中,表的数据信息和索引信息都存储在ibdata1中,但是如果开启了innodb_file_per_table参数,表示每个innodb表类型的表使用单独的表空间数据文件。
这里我们看到有mysql、test、zabbix、RW、relay、ossec等数据库,我们看下:
[root@VM-75-68 mysql]# cd RW
[root@VM-75-68 RW]# ll
total 344
-rw-rw----. 1 mysql mysql 8682 Sep 12 01:38 account00.frm
-rw-rw----. 1 mysql mysql 98304 Sep 12 01:38 account00.ibd
-rw-rw----. 1 mysql mysql 8682 Sep 12 01:38 account01.frm
-rw-rw----. 1 mysql mysql 98304 Sep 12 01:38 account01.ibd
-rw-rw----. 1 mysql mysql 61 Jul 25 04:31 db.opt
-rw-rw----. 1 mysql mysql 8640 Sep 12 01:38 T.frm
-rw-rw----. 1 mysql mysql 114688 Sep 11 20:34 T.ibd
这是RW数据库里的数据文件,可以看到每张表都有两种后缀文件,分别为frm后缀和ibd后缀:
frm:存储的是表的结构数据;
ibd:存储了表的数据信息和索引信息。
如果在配置中没有开启innodb_file_per_table参数,在数据库对应的目录里不会出现‘.ibd’为后缀的文件,因为默认情况下会使用ibdata1,如果一开始没有开启参数,并且已经存在某些使用innodb类型的表,那么这些表将公用ibdata1,如果这时开启了参数,那么原来的数据仍然在ibdata1中,新创建的表才会使用单独的以‘.ibd’为后缀的表空间文件。
看完了innodb,再看下MyISAM类型的表空间文件,默认的mysql库大部分表都是使用MyISAM的表类型,我们进去看看:
[root@VM-75-68 mysql]# cd mysql
[root@VM-75-68 mysql]# ll
total 24040
-rw-rw----. 1 mysql mysql 8820 May 17 20:46 columns_priv.frm
-rw-rw----. 1 mysql mysql 0 May 17 20:46 columns_priv.MYD
-rw-rw----. 1 mysql mysql 4096 May 17 20:46 columns_priv.MYI
-rw-rw----. 1 mysql mysql 9582 May 17 20:46 db.frm
-rw-rw----. 1 mysql mysql 880 May 17 20:46 db.MYD
-rw-rw----. 1 mysql mysql 5120 May 17 20:46 db.MYI
-rw-rw----. 1 mysql mysql 10223 May 17 20:46 event.frm
-rw-rw----. 1 mysql mysql 0 May 17 20:46 event.MYD
-rw-rw----. 1 mysql mysql 2048 May 17 20:46 event.MYI
-rw-rw----. 1 mysql mysql 8665 May 17 20:46 func.frm
-rw-rw----. 1 mysql mysql 0 May 17 20:46 func.MYD
-rw-rw----. 1 mysql mysql 1024 May 17 20:46 func.MYI
我们看到如果使用MyISAM类型的存储引擎,每张表会有三个后缀名文件,分别是.frm、.MYD、.MYI:
.frm:存放表结构信息
.MYD:存放数据信息
.MYI:存放索引信息
感觉知道这些东西没啥用,也可能是笔者还没用到,多知道点总是好的,共勉!