文章目錄
- ①. MySQL目錄結構
- ②. 查看默認數據庫
- ③. MYSQL5.7和8表文件
- ③. 系統、獨立表空間
①. MySQL目錄結構
- ①. 如何查看關聯mysql目錄
[root@mysql8 ~]# find / -name mysql
/var/lib/mysql
/var/lib/mysql/mysql
/etc/selinux/targeted/tmp/modules/100/mysql
/etc/selinux/targeted/active/modules/100/mysql
/etc/logrotate.d/mysql
/usr/lib64/mysql
/usr/bin/mysql
[root@mysql8 ~]#
- ②. 數據庫文件存放路徑為:/var/lib/mysql/
- MYSQL服務器程序在啟動時會到文件系統的某個目錄下加載一些文件,之后在運行過程中產生的數據也都會存儲到這個目錄下的某些文件中,這個目錄就稱為數據目錄
- 數據目錄對應著一個系統變量datadir,我們在使用客戶端與服務器建立連接之后查看這個系統變量的值就可以了
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.05 sec)
[root@mysql8 mysql]# pwd
/var/lib/mysql
[root@mysql8 mysql]# ll
總用量 188888
-rw-r-----. 1 mysql mysql 56 11月 22 21:42 auto.cnf
-rw-r-----. 1 mysql mysql 350 5月 5 21:09 binlog.000002
-rw-r-----. 1 mysql mysql 1907 5月 7 19:19 binlog.000003
-rw-r-----. 1 mysql mysql 179 5月 7 22:27 binlog.000004
-rw-r-----. 1 mysql mysql 156 5月 12 20:45 binlog.000005
-rw-r-----. 1 mysql mysql 64 5月 12 20:45 binlog.index
-rw-------. 1 mysql mysql 1676 11月 22 21:42 ca-key.pem
-rw-r--r--. 1 mysql mysql 1112 11月 22 21:42 ca.pem
-rw-r--r--. 1 mysql mysql 1112 11月 22 21:42 client-cert.pem
-rw-------. 1 mysql mysql 1676 11月 22 21:42 client-key.pem
drwxr-x---. 2 mysql mysql 4096 5月 5 22:08 dbtest1
-rw-r-----. 1 mysql mysql 196608 5月 12 20:47 #ib_16384_0.dblwr
-rw-r-----. 1 mysql mysql 8585216 11月 22 21:42 #ib_16384_1.dblwr
-rw-r-----. 1 mysql mysql 3557 5月 7 22:27 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 5月 12 20:45 ibdata1
-rw-r-----. 1 mysql mysql 50331648 5月 12 20:47 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 11月 22 21:42 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 5月 12 20:45 ibtmp1
drwxr-x---. 2 mysql mysql 4096 5月 12 20:45 #innodb_temp
drwxr-x---. 2 mysql mysql 4096 11月 22 21:42 mysql
-rw-r-----. 1 mysql mysql 25165824 5月 12 20:45 mysql.ibd
srwxrwxrwx. 1 mysql mysql 0 5月 12 20:45 mysql.sock
-rw-------. 1 mysql mysql 5 5月 12 20:45 mysql.sock.lock
drwxr-x---. 2 mysql mysql 4096 11月 22 21:42 performance_schema
-rw-------. 1 mysql mysql 1680 11月 22 21:42 private_key.pem
-rw-r--r--. 1 mysql mysql 452 11月 22 21:42 public_key.pem
-rw-r--r--. 1 mysql mysql 1112 11月 22 21:42 server-cert.pem
-rw-------. 1 mysql mysql 1680 11月 22 21:42 server-key.pem
drwxr-x---. 2 mysql mysql 4096 11月 22 21:42 sys
-rw-r-----. 1 mysql mysql 16777216 5月 12 20:47 undo_001
-rw-r-----. 1 mysql mysql 16777216 5月 12 20:47 undo_002
- ③. 相關命令目錄:/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin
- ④. 配置文件目錄:/usr/share/mysql-8.0(命令及配置文件)/etc - my.cnf
②. 查看默認數據庫
- ①. 查看默認的數據庫
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
-
②. mysql:MySQL 系統自帶的核心數據庫,它存儲了MySQL的用戶賬戶和權限信息,一些存儲過程、事件的定義信息,一些運行過程中產生的日志信息,一些幫助信息以及時區信息等
-
③. information_schema:MySQL系統自帶的數據庫,這個數據庫保存著MySQL服務器 維護的所有其他數據庫的信息 ,比如有哪些表、哪些視圖、哪些觸發器、哪些列、哪些索引。這些信息并不是真實的用戶數據,而是一些描述性信息,有時候也稱之為 元數據 。在系統數據庫 information_schema中提供了一些以innodb_sys開頭的表,用于表示內部系統表
-
④. performance_schema:MySQL系統自帶的數據庫,這個數據庫里主要保存MySQL服務器運行過程中的一些狀態信息,可以用來監控MySQL服務的各類性能指標 。包括統計最近執行了哪些語句,在執行過程的每個階段都花費了多長時間,內存的使用情況等信息
-
⑤. sys:MySQL系統自帶的數據庫,這個數據庫主要是通過視圖的形式把information_schema和performance_schema結合起來,幫助系統管理員和開發人員監控 MySQL 的技術性能
③. MYSQL5.7和8表文件
-
①. 對于innodb,對應的表有兩個文件:.frm + .ibd,存儲了表結構信息和表數據信息,db.opt的文件:這個文件描述了這個數據庫的各種屬性(比如字符集和比較規則是個啥)
-
②. 對于myisam存儲引擎,會有三個文件,分別是上圖的表結構信息 + 表數據信息 + 表索引信息
-
③. MYSQL8 - 對于innodb,對應的表只有了.ibd文件,存儲了表結構信息和表數據信息
[root@mysql8 etc]# cd /var/lib/mysql
[root@mysql8 mysql]# ll
總用量 188888
-rw-r-----. 1 mysql mysql 56 11月 22 21:42 auto.cnf
-rw-r-----. 1 mysql mysql 350 5月 5 21:09 binlog.000002
-rw-r-----. 1 mysql mysql 1907 5月 7 19:19 binlog.000003
-rw-r-----. 1 mysql mysql 179 5月 7 22:27 binlog.000004
-rw-r-----. 1 mysql mysql 156 5月 12 20:45 binlog.000005
-rw-r-----. 1 mysql mysql 64 5月 12 20:45 binlog.index
-rw-------. 1 mysql mysql 1676 11月 22 21:42 ca-key.pem
-rw-r--r--. 1 mysql mysql 1112 11月 22 21:42 ca.pem
-rw-r--r--. 1 mysql mysql 1112 11月 22 21:42 client-cert.pem
-rw-------. 1 mysql mysql 1676 11月 22 21:42 client-key.pem
drwxr-x---. 2 mysql mysql 4096 5月 5 22:08 dbtest1
-rw-r-----. 1 mysql mysql 196608 5月 12 20:47 #ib_16384_0.dblwr
-rw-r-----. 1 mysql mysql 8585216 11月 22 21:42 #ib_16384_1.dblwr
-rw-r-----. 1 mysql mysql 3557 5月 7 22:27 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 5月 12 20:45 ibdata1
-rw-r-----. 1 mysql mysql 50331648 5月 12 20:47 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 11月 22 21:42 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 5月 12 20:45 ibtmp1
drwxr-x---. 2 mysql mysql 4096 5月 12 20:45 #innodb_temp
drwxr-x---. 2 mysql mysql 4096 11月 22 21:42 mysql
-rw-r-----. 1 mysql mysql 25165824 5月 12 20:45 mysql.ibd
srwxrwxrwx. 1 mysql mysql 0 5月 12 20:45 mysql.sock
-rw-------. 1 mysql mysql 5 5月 12 20:45 mysql.sock.lock
drwxr-x---. 2 mysql mysql 4096 11月 22 21:42 performance_schema
-rw-------. 1 mysql mysql 1680 11月 22 21:42 private_key.pem
-rw-r--r--. 1 mysql mysql 452 11月 22 21:42 public_key.pem
-rw-r--r--. 1 mysql mysql 1112 11月 22 21:42 server-cert.pem
-rw-------. 1 mysql mysql 1680 11月 22 21:42 server-key.pem
drwxr-x---. 2 mysql mysql 4096 11月 22 21:42 sys
-rw-r-----. 1 mysql mysql 16777216 5月 12 20:47 undo_001
-rw-r-----. 1 mysql mysql 16777216 5月 12 20:47 undo_002
[root@mysql8 mysql]# cd dbtest1/
[root@mysql8 dbtest1]# ll
總用量 224
-rw-r-----. 1 mysql mysql 147456 5月 5 21:46 ssm_shopping_cart.ibd
-rw-r-----. 1 mysql mysql 114688 5月 5 22:08 test1.ibd
- ④. MYSQL8 - 對于Myisam有三個文件生產
③. 系統、獨立表空間
- ①. 系統表空間(system tablespace)
- 默認情況下,InnoDB會在數據目錄下創建一個名為 ibdata1 、大小為 12M 的文件,這個文件就是對應的系統表空間 在文件系統上的表示。怎么才12M?注意這個文件是 自擴展文件 ,當不夠用的時候它會自己增加文件大小
- 如果你想讓系統表空間對應文件系統上多個實際文件,或者僅僅覺得原來的ibdata1這個文件名
難聽,那可以在MySQL啟動時配置對應的文件路徑以及它們的大小,比如我們這樣修改一下my.cnf 配置文件
[server]
innodb_data_file_path=data1:512M;data2:512M:autoextend
- ②. 獨立表空間(file-per-table tablespace)
- 在MySQL5.6.6以及之后的版本中,InnoDB并不會默認的把各個表的數據存儲到系統表空間中,而是為每一個表建立一個獨立表空間 ,也就是說我們創建了多少個表,就有多少個獨立表空間。使用獨立表空間 來存儲表數據的話,會在該表所屬數據庫對應的子目錄下創建一個表示該獨立表空間的文件,文件名和表名相同,只不過添加了一個.ibd 的擴展名而已,所以完整的文件名稱長這樣
- MYSQL5.7:比如:我們使用了獨立表空間去存儲數據庫dbtest1下的test1表的話,那么在該表所在數據庫對應的目錄下會為test1表創建這兩個文件:frm + idb文件
- ③. 系統表空間與獨立表空間的設置
我們可以自己指定使用系統表空間 還是 獨立表空間來存儲數據,這個功能由啟動參數
innodb_file_per_table 控制,比如說我們想刻意將表數據都存儲到 系統表空間 時,可以在啟動
MySQL服務器的時候這樣配置
[server]
innodb_file_per_table=0 # 0:代表使用系統表空間; 1:代表使用獨立表空間
mysql> show variables like 'innodb_file_per_table';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.01 sec)