Mysql数据目录

一、MySQL主要的目录结构

1. 数据库文件存放路径

mysql> show variables like 'datadir';
+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| datadir       | /usr/local/mysql/data/ |
+---------------+------------------------+
1 row in set (0.00 sec)

从查询结果可以看出,当前MySQL的数据目录是: /usr/local/mysql/data/

2. 相关命令目录

/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)

[root@localhost bin]# find . -name "mysqldump*"
./mysqldump
./mysqldumpslow

3. 配置文件目录

配置文件目录:/usr/share/mysql-8.0(命令及配置文件),/etc/mysql(如my.cnf)

[root@localhost share]# cd /usr/local/mysql/share/
[root@localhost share]# ll
total 1000
drwxr-xr-x. 2 mysql mysql     22 Dec 17 13:28 aclocal
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 bulgarian
drwxr-xr-x. 2 mysql mysql   4096 Dec 17 13:28 charsets
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 czech
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 danish
-rw-r--r--. 1 mysql mysql  25575 Dec 17 11:07 dictionary.txt
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 dutch
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 english
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 estonian
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 french
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 german
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 greek
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 hungarian
-rw-r--r--. 1 mysql mysql   3999 Dec 17 11:07 innodb_memcached_config.sql
-rw-r--r--. 1 mysql mysql   2216 Dec 17 12:46 install_rewriter.sql
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 italian
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 japanese
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 korean
-rw-r--r--. 1 mysql mysql 616528 Dec 17 11:07 messages_to_clients.txt
-rw-r--r--. 1 mysql mysql 359072 Dec 17 11:07 messages_to_error_log.txt
drwxr-xr-x. 2 mysql mysql     24 Mar 12 05:58 norwegian
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 norwegian-ny
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 polish
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 portuguese
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 romanian
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 russian
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 serbian
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 slovak
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 spanish
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 swedish
drwxr-xr-x. 2 mysql mysql     24 Dec 17 13:28 ukrainian
-rw-r--r--. 1 mysql mysql   1248 Dec 17 12:46 uninstall_rewriter.sql

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

1. 查看默认数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| learn_mysql        |
| leecode            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

MySQl自带的系统数据库为:information_schema,mysql,performance_schema,sys

1.1 mysql

MySQL系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程,事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息和时区信息等

1.2 information_schema

MySQL系统自带的数据库,这个数据库保存着MySQL服务器维护的所有其他数据库的信息,比如有哪些表,哪些视图,哪些触发器,哪些列,哪些索引。这些信息并不是真实的用户数据,而是一些描述性信息,有时候也称为元数据。在数据库information_schema中提供了innodb_sys开头的表,用于表示内部系统表

1.3 performance_schema

MySQL系统自带的数据库,这个数据库主要保存MySQL服务器运行过程中的一些状态信息,可以用来监控MySQL服务的各类指标,包括统计最近执行了哪些语句,在执行过程的每个阶段都花费了多长时间,内存的使用情况等信息

1.4 sys

MySQL系统自带的数据库,这个数据库主要通过视图的形式把information_schema和performance_schema结合起来,帮助系统管理员和开发人员监控MySQL的技术性能

2. 数据库在文件系统中的表示

[root@localhost mysql]# cd /usr/local/mysql/data/ 
[root@localhost data]# ll
total 188896
-rw-r-----. 1 mysql mysql       56 Mar 12 11:41 auto.cnf
-rw-r-----. 1 mysql mysql     3989 Mar 13 17:59 binlog.000001
-rw-r-----. 1 mysql mysql     1114 Mar 17 14:06 binlog.000002
-rw-r-----. 1 mysql mysql      157 Mar 20 21:40 binlog.000003
-rw-r-----. 1 mysql mysql     3580 Mar 21 06:26 binlog.000004
-rw-r-----. 1 mysql mysql      157 Mar 21 06:26 binlog.000005
-rw-r-----. 1 mysql mysql       80 Mar 21 06:26 binlog.index
-rw-------. 1 mysql mysql     1680 Mar 12 11:41 ca-key.pem
-rw-r--r--. 1 mysql mysql     1112 Mar 12 11:41 ca.pem
-rw-r--r--. 1 mysql mysql     1112 Mar 12 11:41 client-cert.pem
-rw-------. 1 mysql mysql     1680 Mar 12 11:41 client-key.pem
-rw-r-----. 1 mysql mysql   196608 Mar 21 06:28 #ib_16384_0.dblwr
-rw-r-----. 1 mysql mysql  8585216 Mar 12 11:41 #ib_16384_1.dblwr
-rw-r-----. 1 mysql mysql     5590 Mar 12 11:41 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Mar 21 06:26 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Mar 21 06:28 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Mar 12 11:41 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 Mar 21 06:26 ibtmp1
drwxr-x---. 2 mysql mysql      187 Mar 21 06:26 #innodb_temp
drwxr-x---. 2 mysql mysql      220 Mar 21 04:44 learn_mysql
drwxr-x---. 2 mysql mysql       78 Mar 13 15:51 leecode
-rw-r-----. 1 mysql mysql     7097 Mar 21 06:28 localhost.localdomain.err
-rw-r-----. 1 mysql mysql        5 Mar 21 06:26 localhost.localdomain.pid
-rw-r-----. 1 mysql mysql      180 Mar 15 23:26 localhost-slow.log
drwxr-x---. 2 mysql mysql      143 Mar 12 11:41 mysql
-rw-r-----. 1 mysql mysql 25165824 Mar 21 06:26 mysql.ibd
drwxr-x---. 2 mysql mysql     8192 Mar 12 11:41 performance_schema
-rw-------. 1 mysql mysql     1680 Mar 12 11:41 private_key.pem
-rw-r--r--. 1 mysql mysql      452 Mar 12 11:41 public_key.pem
-rw-r--r--. 1 mysql mysql     1112 Mar 12 11:41 server-cert.pem
-rw-------. 1 mysql mysql     1680 Mar 12 11:41 server-key.pem
drwxr-x---. 2 mysql mysql       28 Mar 12 11:41 sys
-rw-r-----. 1 mysql mysql 16777216 Mar 21 06:28 undo_001
-rw-r-----. 1 mysql mysql 16777216 Mar 21 06:28 undo_002

除了information_schema这个系统数据库外,其他数据在数据目录下都有对应的子目录
如:learn_mysql

[root@localhost data]# cd learn_mysql/
[root@localhost learn_mysql]# ll
total 1296
-rw-r-----. 1 mysql mysql 114688 Mar 21 04:35 a_employee.ibd
-rw-r-----. 1 mysql mysql 114688 Mar 21 03:47 check_user.ibd
-rw-r-----. 1 mysql mysql 114688 Mar 14 05:30 class.ibd
-rw-r-----. 1 mysql mysql 114688 Mar 20 21:47 c_student.ibd
-rw-r-----. 1 mysql mysql 114688 Mar 21 03:38 d_employee.ibd
-rw-r-----. 1 mysql mysql 114688 Mar 21 04:30 f_dept.ibd
-rw-r-----. 1 mysql mysql 131072 Mar 21 04:31 f_emp.ibd
-rw-r-----. 1 mysql mysql 114688 Mar 21 04:38 p_temp.ibd
-rw-r-----. 1 mysql mysql 114688 Mar 14 05:31 student.ibd
-rw-r-----. 1 mysql mysql 147456 Mar 21 04:44 u_course.ibd
-rw-r-----. 1 mysql mysql 131072 Mar 21 04:44 u_user.ibd

3. 表在文件系统中的表示

3.1 InnoDB

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

  2. 表中数据和索引

    • 系统表空间:InnoDB会在数据目录下创建一个ibdata1的,大小为12M(自扩展文件,不够用时自动增加文件大小),可以通过innodb_data_file_path配置
    • 独立表空间:MySQL5.6.6之后,InnoDB默认为每一个表建立一个独立的表空间,也就是说多少个表就有多少个表空间。使用独立表空间来存储数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立空间的文件,文件名与表名相同,扩展名为.ibd:表名.ibd
    • 系统表空间与独立表空间设置:innodb_file_per_table=0(0代表使用系统表空间,1代表使用独立表空间)
  3. MySQL8.0版本变化

    • MySQL5.7会在数据库对应的子目录生成db.opt 文件用来保存数据库相关的配置(字符集,比较规则等)。MySQL8.0不再提供db.opt文件
    • MySQL8.0中不再单独提供.frm文件,而是合并到.ibd文件中

3.2 MyISAM

  1. 表结构
    MySQL5.7:表名.frm
    MySQL8.0:表名.xxx.sdi

  2. 表中数据和索引
    在MyISAM中索引都是二级索引,数据和索引是分开存放的,所以在文件系统中也是使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下:

    student_myisam_381.sdi #描述表结构文件,字段长度等
    student_myisam.MYD  #数据信息文件,存储数据信息
    student_myisam.MYI  #存放索引信息文件
    
  3. MySQL8.0版本变化
    MySQL5.7:.frm文件在MySQL8.0中为表名.xxx.sdi文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值