MySQL

41-MySQL的数据目录

2022-09-21  本文已影响0人  紫荆秋雪_文

一、MySQL8的主要目录结构

1、查询与 MySQL 相关的目录

find / -name mysql
/etc/mysql
find: '/proc/1/map_files': Permission denied
/usr/bin/mysql
/usr/lib/mysqlsh/lib/python3.9/site-packages/oci/mysql
/usr/lib64/mysql
/var/lib/mysql
/var/lib/mysql/mysql

2、数据库文件的存放路径

SHOW VARIABLES LIKE 'datadir';
#数据文件路径
/var/lib/mysql/
image.png

3、数据库相关命令目录

4、数据库配置文件目录

/etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

二、数据库和文件系统的关系

1、查看默认数据库

SHOW DATABASES ;
默认数据库.png

2、数据库文件系统

/var/lib/mysql
-rw-r-----  1 mysql mysql   196608 Sep 15 04:35 '#ib_16384_0.dblwr'
-rw-r-----  1 mysql mysql  8585216 Aug 16 09:51 '#ib_16384_1.dblwr'
drwxr-x---  2 mysql mysql     4096 Sep 15 04:33 '#innodb_redo'
drwxr-x---  2 mysql mysql      187 Sep 15 04:33 '#innodb_temp'
drwxr-xr-x 11 mysql root      4096 Sep 15 04:33  .
drwxr-xr-x  1 root  root        28 Sep 14 21:58  ..
drwxr-x---  2 mysql mysql      189 Aug 16 10:11  atguigudb
-rw-r-----  1 mysql mysql       56 Aug 16 09:51  auto.cnf
-rw-r-----  1 mysql mysql  3025278 Aug 16 09:51  binlog.000001
-rw-r-----  1 mysql mysql      180 Aug 16 09:54  binlog.000002
-rw-r-----  1 mysql mysql      180 Aug 16 09:57  binlog.000003
-rw-r-----  1 mysql mysql      180 Aug 16 09:58  binlog.000004
-rw-r-----  1 mysql mysql      180 Aug 16 10:06  binlog.000005
-rw-r-----  1 mysql mysql    49079 Aug 16 10:11  binlog.000006
-rw-r-----  1 mysql mysql      157 Aug 17 01:32  binlog.000007
-rw-r-----  1 mysql mysql      157 Aug 19 03:32  binlog.000008
-rw-r-----  1 mysql mysql      157 Aug 19 03:38  binlog.000009
-rw-r-----  1 mysql mysql      157 Aug 19 09:08  binlog.000010
-rw-r-----  1 mysql mysql      157 Aug 20 13:21  binlog.000011
-rw-r-----  1 mysql mysql     1355 Aug 22 01:09  binlog.000012
-rw-r-----  1 mysql mysql    13529 Aug 22 22:23  binlog.000013
-rw-r-----  1 mysql mysql      157 Aug 26 13:57  binlog.000014
-rw-r-----  1 mysql mysql     9435 Aug 26 20:00  binlog.000015
-rw-r-----  1 mysql mysql    32071 Aug 27 05:49  binlog.000016
-rw-r-----  1 mysql mysql     3868 Sep  7 09:39  binlog.000017
-rw-r-----  1 mysql mysql      620 Sep  7 09:53  binlog.000018
-rw-r-----  1 mysql mysql      157 Sep  7 09:56  binlog.000019
-rw-r-----  1 mysql mysql      157 Sep  7 14:40  binlog.000020
-rw-r-----  1 mysql mysql    59292 Sep 10 02:44  binlog.000021
-rw-r-----  1 mysql mysql  1414864 Sep 13 23:24  binlog.000022
-rw-r-----  1 mysql mysql      157 Sep 15 04:33  binlog.000023
-rw-r-----  1 mysql mysql      157 Sep 15 04:33  binlog.000024
-rw-r-----  1 mysql mysql      384 Sep 15 04:33  binlog.index
-rw-------  1 mysql mysql     1676 Aug 16 09:51  ca-key.pem
-rw-r--r--  1 mysql mysql     1112 Aug 16 09:51  ca.pem
-rw-r--r--  1 mysql mysql     1112 Aug 16 09:51  client-cert.pem
-rw-------  1 mysql mysql     1680 Aug 16 09:51  client-key.pem
-rw-r-----  1 mysql mysql     4287 Aug 16 10:11  ib_buffer_pool
-rw-r-----  1 mysql mysql 12582912 Sep 15 04:33  ibdata1
-rw-r-----  1 mysql mysql 12582912 Sep 15 04:33  ibtmp1
drwxr-x---  2 mysql mysql      143 Aug 16 09:51  mysql
-rw-r-----  1 mysql mysql 31457280 Sep 15 04:33  mysql.ibd
lrwxrwxrwx  1 mysql mysql       27 Sep 15 04:33  mysql.sock -> /var/run/mysqld/mysqld.sock
drwxr-x---  2 mysql mysql     8192 Aug 16 09:51  performance_schema
-rw-------  1 mysql mysql     1676 Aug 16 09:51  private_key.pem
-rw-r--r--  1 mysql mysql      452 Aug 16 09:51  public_key.pem
-rw-r--r--  1 mysql mysql     1112 Aug 16 09:51  server-cert.pem
-rw-------  1 mysql mysql     1680 Aug 16 09:51  server-key.pem
drwxr-x---  2 mysql mysql       28 Aug 16 09:51  sys
drwxr-x---  2 mysql mysql       57 Aug 26 22:06  test
drwxr-x---  2 mysql mysql       21 Aug 27 02:11  test15
drwxr-x---  2 mysql mysql       73 Sep 10 13:52  trg
-rw-r-----  1 mysql mysql 16777216 Sep 15 04:35  undo_001
-rw-r-----  1 mysql mysql 16777216 Sep 15 04:35  undo_002
cd test
drwxr-x---  2 mysql mysql     57 Aug 26 22:06 .
drwxr-xr-x 11 mysql root    4096 Sep 15 04:33 ..
-rw-r-----  1 mysql mysql 114688 Aug 26 20:03 dept.ibd
-rw-r-----  1 mysql mysql 114688 Sep 10 11:20 emp.ibd
-rw-r-----  1 mysql mysql 114688 Aug 26 22:06 employee.ibd

三、表在文件系统中的表示

1、InnoDB存储引擎模式

1、表结构

为了保存表结构,InnoDB数据目录下对应的数据库子目录下创建了一个专门用于 描述表结构的文件,文件名是这样的

表名.frm

2、 表中数据和索引

默认情况下,InnoDB会在数据目录下创建一个名为 ibdata1 、大小为 12M 的文件,这个文件就是对应的 系统表空间 在文件系统上的表示。怎么才12M?注意这个文件是 自扩展文件 ,当不够用的时候它会自己增加文件大小。当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的 ibdata1 这个文件名难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,比如我们这样修改一下my.cnf 配置文件

[server] 
innodb_data_file_path=data1:512M;data2:512M:autoextend

在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为 每 一个表建立一个独立表空间 ,也就是说我们创建了多少个表,就有多少个独立表空间。使用 独立表空间 来存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个 .ibd 的扩展名而已,所以完整的文件名称长这样

表名.ibd
drwxr-x---  2 mysql mysql     57 Aug 26 22:06 .
drwxr-xr-x 11 mysql root    4096 Sep 15 04:33 ..
-rw-r-----  1 mysql mysql 114688 Aug 26 20:03 dept.ibd
-rw-r-----  1 mysql mysql 114688 Sep 10 11:20 emp.ibd
-rw-r-----  1 mysql mysql 114688 Aug 26 22:06 employee.ibd

我们可以自己指定使用 系统表空间 还是 独立表空间 来存储数据,这个功能由启动参数innodb_file_per_table 控制,比如说我们想刻意将表数据都存储到 系统表空间 时,可以在启动MySQL服务器的时候这样配置

[server] 
innodb_file_per_table=0 # 0:代表使用系统表空间; 1:代表使用独立表空间
SHOW VARIABLES LIKE 'innodb_file_per_table';
image.png

随着MySQL的发展,除了上述两种老牌表空间之外,现在还新提出了一些不同类型的表空间,比如通用表空间(general tablespace)、临时表空间(temporary tablespace)等

2、MyISAM存储引擎模式

在存储表结构方面, MyISAM 和 InnoDB 一样,也是在 数据目录 下对应的数据库子目录下创建了一个专门用于描述表结构的文件

在MyISAM中的索引全部都是 二级索引 ,该存储引擎的 数据和索引是分开存放 的。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下。假如 cdtest
表使用MyISAM存储引擎的话,那么在它所在数据库对应的 atguigu 目录下会为 test 表创建这三个文件:

-rw-r-----  1 mysql mysql      0 Sep 15 04:56 student_myisam.MYD
-rw-r-----  1 mysql mysql   1024 Sep 15 04:56 student_myisam.MYI
-rw-r-----  1 mysql mysql   4332 Sep 15 04:56 student_myisam_442.sdi

三、小结

举例: 数据库a , 表b

上一篇 下一篇

猜你喜欢

热点阅读