查看数据目录
mysql> show variables like 'datadir%' ;
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
基本目录
[root@VM_74_225_centos /var/lib/mysql]# cd /var/lib/mysql
[root@VM_74_225_centos /var/lib/mysql]# ll -h
total 120M
-rw-r----- 1 mysql mysql 56 Nov 24 10:48 auto.cnf
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 ca-key.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 24 10:48 ca.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 24 10:48 client-cert.pem
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 client-key.pem
-rw-r----- 1 mysql mysql 350 Nov 24 10:54 ib_buffer_pool
-rw-r----- 1 mysql mysql 48M Dec 1 10:58 ib_logfile0
-rw-r----- 1 mysql mysql 48M Nov 24 10:48 ib_logfile1
-rw-r----- 1 mysql mysql 12M Dec 1 10:58 ibdata1
-rw-r----- 1 mysql mysql 12M Dec 1 10:58 ibtmp1
drwxr-x--- 2 mysql mysql 4.0K Nov 24 10:48 mysql
srwxrwxrwx 1 mysql mysql 0 Nov 24 10:54 mysql.sock
-rw------- 1 mysql mysql 5 Nov 24 10:54 mysql.sock.lock
drwxr-x--- 2 mysql mysql 4.0K Nov 24 10:48 performance_schema
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 private_key.pem
-rw-r--r-- 1 mysql mysql 452 Nov 24 10:48 public_key.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 24 10:48 server-cert.pem
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 server-key.pem
drwxr-x--- 2 mysql mysql 12K Nov 24 10:48 sys
-
auto.cnf:MySQL 服务器的选项文件,用于存储 server-uuid 的值。server-uuid 与 server-id 一样,用于标识 MySQL 实例在集群中的唯一性。
-
ib_logfile0、ib_logfile1 是支持事务性引擎的 redo 日志文件
-
ibdata1 为共享表空间(系统表空间)。默认大小为 12M 。
-
ibtmp1 为存储临时对象的空间,比如临时表对象等。
-
test 是用户自定义的数据库,也就是用户自己创建的数据库。
-
mysql、performance_schema、sys 是系统数据库,information_schema 数据库比较特殊,这里没有相应的数据库目录。
-
数据目录里可能还有:
MySQL 服务器的进程 ID(PID)文件。
MySQL 服务器所生成的状态和日志文件。
DES 密钥文件或服务器的 SSL 证书。
创建数据库时的文件变化
- 创建一个db库时, 会默认在datadir下新增一个文件目录,里面有个db.opt文件,用于描述数据库的字符集和排序规则。
- 建库
mysql> create database xiaohaizi;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| xiaohaizi |
+--------------------+
5 rows in set (0.00 sec)
- 查看文件变化
可以发现MYSQL默认在datadir下新增一个文件目录,里面有个db.opt文件,用于描述数据库的字符集和排序规则。
[root@VM_74_225_centos /var/lib/mysql]# ll -h
total 121M
-rw-r----- 1 mysql mysql 56 Nov 24 10:48 auto.cnf
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 ca-key.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 24 10:48 ca.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 24 10:48 client-cert.pem
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 client-key.pem
-rw-r----- 1 mysql mysql 350 Nov 24 10:54 ib_buffer_pool
-rw-r----- 1 mysql mysql 48M Dec 1 10:58 ib_logfile0
-rw-r----- 1 mysql mysql 48M Nov 24 10:48 ib_logfile1
-rw-r----- 1 mysql mysql 12M Dec 1 10:58 ibdata1
-rw-r----- 1 mysql mysql 12M Dec 1 10:58 ibtmp1
drwxr-x--- 2 mysql mysql 4.0K Nov 24 10:48 mysql
srwxrwxrwx 1 mysql mysql 0 Nov 24 10:54 mysql.sock
-rw------- 1 mysql mysql 5 Nov 24 10:54 mysql.sock.lock
drwxr-x--- 2 mysql mysql 4.0K Nov 24 10:48 performance_schema
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 private_key.pem
-rw-r--r-- 1 mysql mysql 452 Nov 24 10:48 public_key.pem
-rw-r--r-- 1 mysql mysql 1.1K Nov 24 10:48 server-cert.pem
-rw------- 1 mysql mysql 1.7K Nov 24 10:48 server-key.pem
drwxr-x--- 2 mysql mysql 12K Nov 24 10:48 sys
drwxr-x--- 2 mysql mysql 4.0K Dec 1 10:58 xiaohaizi
[root@XXX /var/lib/mysql]# cd test
[root@XXX /var/lib/mysql/test]# ls
db.opt
创建表的时候的文件变化
MySQL5.6.6以及之后, InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,也就是说我们创建了多少个表,就有多少个独立表空间。例如:
- 创建表
mysql> create table xiaohaizi.test(c1 int);
Query OK, 0 rows affected (0.04 sec)
- 查看文件变化
[root@VM_74_225_centos /var/lib/mysql]# cd xiaohaizi/
[root@VM_74_225_centos /var/lib/mysql/xiaohaizi]# ll -h
total 112K
-rw-r----- 1 mysql mysql 61 Dec 1 10:57 db.opt
-rw-r----- 1 mysql mysql 8.4K Dec 1 10:58 test.frm
-rw-r----- 1 mysql mysql 96K Dec 1 10:58 test.ibd
使用默认InnoDB引擎的话,可以看到新增了2个文件, 其中test.frm
为存储了表的结构定义
test.ibd
存储了表的内容(包括索引和数据), 如果使用MyISAM的话那么将会如何?
[root@VM_74_225_centos /var/lib/mysql/xiaohaizi]# ll -h
total 10K
-rw-r----- 1 mysql mysql 61 Dec 1 10:57 db.opt
-rw-r----- 1 mysql mysql 0 Dec 1 11:39 test_2.MYD
-rw-r----- 1 mysql mysql 1.0K Dec 1 11:39 test_2.MYI
-rw-r----- 1 mysql mysql 8.4K Dec 1 11:39 test_2.frm
test_2.MYD表示的是表的数据文件,也就是我们插入的用户记录;test_2.MYI代表表的索引文件,可以看到MyISAM的索引和数据是分离的。
网友评论