在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:存放索引信息
感覺知道這些東西沒啥用,也可能是筆者還沒用到,多知道點總是好的,共勉!