MySQL 데이터 디렉터리(정리된 요약)

WBOY
풀어 주다: 2023-01-24 06:30:01
앞으로
1493명이 탐색했습니다.

이 글은 mysql 데이터 디렉토리에 관련된 내용을 중심으로 mysql 관련 지식을 소개하는 글입니다. 모두에게 도움이 되기를 바랍니다.

MySQL 데이터 디렉터리(정리된 요약)

1. MySQL 8의 기본 디렉터리 구조

MySQL 8을 설치한 후 다음 디렉터리 구조를 확인합니다.

1. 데이터베이스 파일의 저장 경로

MySQL 데이터베이스 파일 저장 경로: /var/lib/mysql/

결과에서 볼 수 있듯이 내 컴퓨터의 MySQL 데이터 디렉터리는 /var/lib/mysql/이다.

1.2 관련 명령 디렉터리

관련 명령 디렉터리: /usr/bin(mysqladmin, mysqlbinlog, mysqldump 및 기타 명령) 및 /usr/sbin.

1.3 구성 파일 디렉터리

구성 파일 디렉터리: /usr/share/mysql-8.0(명령 및 구성 파일), /etc/mysql(예: my.cnf)

[root@atguigu01 ~]# find / -name mysql
로그인 후 복사
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.04 sec)
로그인 후 복사

2 . 데이터베이스와 파일 시스템의 관계

2. 1 기본 데이터베이스 보기

현재 내 컴퓨터에 어떤 데이터베이스가 있는지 확인하세요.

MySQL 시스템 데이터베이스에는 4개의 데이터베이스가 포함되어 있는 것을 볼 수 있습니다. .

mysql

MySQL 시스템과 함께 제공되는 핵심 데이터베이스로 MySQL 사용자 계정 및 권한 정보, 저장 프로시저 및 이벤트의 일부 정의 정보, 작업 중에 생성된 일부 로그 정보, 일부 도움말 정보 및 시간을 저장합니다. 구역 정보 등

information_schema

MySQL 시스템과 함께 제공되는 데이터베이스 이 데이터베이스는

어떤 테이블, 어떤 보기, 어떤 열이 실행되는지 등 MySQL 서버에서 유지 관리하는 다른 모든 데이터베이스에 대한 정보를 저장합니다. 어느 인덱스. 이 정보는 실제 사용자 데이터가 아니지만 일부

설명 정보(메타데이터라고도 함)입니다.

innodb_sys로 시작하는 일부 테이블은 내부 시스템 테이블을 나타내기 위해 시스템 데이터베이스 information_schema에 제공됩니다.

mysql> SHOW DATABASES;
로그인 후 복사
mysql> USE information_schema;
Database changed
로그인 후 복사
mysql> SHOW TABLES LIKE 'innodb_sys%';
+--------------------------------------------+
| Tables_in_information_schema (innodb_sys%) |
로그인 후 복사

performance_schema

MySQL 시스템과 함께 제공되는 데이터베이스 이 데이터베이스는 주로 MySQL 서버 작동 중 일부 상태 정보를 저장하는 데 사용할 수 있습니다. 최근에 어떤 명령문이 실행되었는지, 실행 프로세스의 각 단계에 걸린 시간, 메모리 사용량 및 기타 정보에 대한 통계를 포함합니다.

sys

MySQL 시스템과 함께 제공되는 데이터베이스 이 데이터베이스는 주로 시스템 관리자와 개발자가 MySQL의 기술 성능을 모니터링할 수 있도록 information_schema와

performance_schema를 뷰 형태로 결합합니다.

2.2 파일 시스템의 데이터베이스 표현

내 컴퓨터의 데이터 디렉터리 내용을 살펴보세요.

[root@atguigu01 mysql]# cd /var/lib/mysql
[root@atguigu01 mysql]# ll
总用量 189980
-rw-r-----. 1 mysql mysql 56 7 月  28 00 :27 auto.cnf
-rw-r-----. 1 mysql mysql 179 7 月  28 00 :27 binlog.
-rw-r-----. 1 mysql mysql 820 7 月  28 01 :00 binlog.
-rw-r-----. 1 mysql mysql 179 7 月  29 14 :08 binlog.
-rw-r-----. 1 mysql mysql 582 7 月  29 16 :47 binlog.
-rw-r-----. 1 mysql mysql 179 7 月  29 16 :51 binlog.
-rw-r-----. 1 mysql mysql 179 7 月  29 16 :56 binlog.
-rw-r-----. 1 mysql mysql 179 7 月  29 17 :37 binlog.
-rw-r-----. 1 mysql mysql 24555 7 月  30 00 :28 binlog.
-rw-r-----. 1 mysql mysql 179 8 月 1 11 :57 binlog.
-rw-r-----. 1 mysql mysql 156 8 月 1 23 :21 binlog.
-rw-r-----. 1 mysql mysql 156 8 月 2 09 :25 binlog.
-rw-r-----. 1 mysql mysql 1469 8 月 4 01 :40 binlog.
-rw-r-----. 1 mysql mysql 156 8 月 6 00 :24 binlog.
-rw-r-----. 1 mysql mysql 179 8 月 6 08 :43 binlog.
-rw-r-----. 1 mysql mysql 156 8 月 6 10 :56 binlog.
-rw-r-----. 1 mysql mysql 240 8 月 6 10 :56 binlog.index
-rw-------. 1 mysql mysql 1676 7 月  28 00 :27 ca-key.pem
-rw-r--r--. 1 mysql mysql 1112 7 月  28 00 :27 ca.pem
-rw-r--r--. 1 mysql mysql 1112 7 月  28 00 :27 client-cert.pem
-rw-------. 1 mysql mysql 1676 7 月  28 00 :27 client-key.pem
drwxr-x---. 2 mysql mysql 4096 7 月  29 16 :34 dbtest
-rw-r-----. 1 mysql mysql 196608 8 月 6 10 :58 #ib_16384_0.dblwr
-rw-r-----. 1 mysql mysql 8585216 7 月  28 00 :27 #ib_16384_1.dblwr
-rw-r-----. 1 mysql mysql 3486 8 月 6 08 :43 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 8 月 6 10 :56 ibdata
-rw-r-----. 1 mysql mysql 50331648 8 月 6 10 :58 ib_logfile
로그인 후 복사

이 데이터 디렉터리에는 다음을 제외한 많은 파일과 하위 디렉터리가 있습니다. information_schema 시스템 데이터베이스 외에도 다른 데이터베이스에는 데이터 디렉터리 아래에 해당 하위 디렉터리가 있습니다.

내 임시 데이터베이스를 예로 들어 보겠습니다. MySQL 5. 7에서 엽니다.

MySQL 8. 0에서 엽니다.

-rw-r-----. 1 mysql mysql 50331648 7 月  28 00 :27 ib_logfile
-rw-r-----. 1 mysql mysql 12582912 8 月 6 10 :56 ibtmp
drwxr-x---. 2 mysql mysql 4096 8 月 6 10 :56 #innodb_temp
drwxr-x---. 2 mysql mysql 4096 7 月  28 00 :27 mysql
-rw-r-----. 1 mysql mysql 26214400 8 月 6 10 :56 mysql.ibd
srwxrwxrwx. 1 mysql mysql 0 8 月 6 10 :56 mysql.sock
-rw-------. 1 mysql mysql 5 8 月 6 10 :56 mysql.sock.lock
drwxr-x---. 2 mysql mysql 4096 7 月  28 00 :27 performance_schema
-rw-------. 1 mysql mysql 1680 7 月  28 00 :27 private_key.pem
-rw-r--r--. 1 mysql mysql 452 7 月  28 00 :27 public_key.pem
-rw-r--r--. 1 mysql mysql 1112 7 月  28 00 :27 server-cert.pem
-rw-------. 1 mysql mysql 1680 7 月  28 00 :27 server-key.pem
drwxr-x---. 2 mysql mysql 4096 7 月  28 00 :27 sys
drwxr-x---. 2 mysql mysql 4096 7 月  29 23 :10 temp
-rw-r-----. 1 mysql mysql 16777216 8 月 6 10 :58 undo_
-rw-r-----. 1 mysql mysql 16777216 8 月 6 10 :58 undo_
로그인 후 복사
[root@atguigu02 mysql]# cd ./temp
[root@atguigu02 temp]# ll
总用量 1144
-rw-r-----. 1 mysql mysql 8658 8 月  18 11 :32 countries.frm
-rw-r-----. 1 mysql mysql 114688 8 月  18 11 :32 countries.ibd
-rw-r-----. 1 mysql mysql 61 8 月  18 11 :32 db.opt
-rw-r-----. 1 mysql mysql 8716 8 月  18 11 :32 departments.frm
-rw-r-----. 1 mysql mysql 147456 8 月  18 11 :32 departments.ibd
-rw-r-----. 1 mysql mysql 3017 8 月  18 11 :32 emp_details_view.frm
-rw-r-----. 1 mysql mysql 8982 8 月  18 11 :32 employees.frm
-rw-r-----. 1 mysql mysql 180224 8 月  18 11 :32 employees.ibd
-rw-r-----. 1 mysql mysql 8660 8 月  18 11 :32 job_grades.frm
-rw-r-----. 1 mysql mysql 98304 8 月  18 11 :32 job_grades.ibd
-rw-r-----. 1 mysql mysql 8736 8 月  18 11 :32 job_history.frm
-rw-r-----. 1 mysql mysql 147456 8 月  18 11 :32 job_history.ibd
-rw-r-----. 1 mysql mysql 8688 8 月  18 11 :32 jobs.frm
-rw-r-----. 1 mysql mysql 114688 8 月  18 11 :32 jobs.ibd
-rw-r-----. 1 mysql mysql 8790 8 月  18 11 :32 locations.frm
-rw-r-----. 1 mysql mysql 131072 8 月  18 11 :32 locations.ibd
-rw-r-----. 1 mysql mysql 8614 8 月  18 11 :32 regions.frm
-rw-r-----. 1 mysql mysql 114688 8 月  18 11 :32 regions.ibd
로그인 후 복사

2. 3 파일 시스템의 테이블 표현

2. 1 InnoDB 스토리지 엔진 모드

1. 테이블 구조

InnoDB는 테이블 구조를 저장하기 위해 데이터 디렉토리 아래의 해당 데이터베이스 하위 디렉토리에 전용 데이터베이스를 생성합니다. 테이블 구조를 설명하는 파일의 경우 파일 이름은 다음과 같습니다.

예를 들어 atguigu 데이터베이스 아래에 test라는 테이블을 생성합니다. 그런 다음 atguigu 데이터베이스에 해당하는 하위 디렉터리에 파일을 생성합니다. 테이블 구조를 설명하는 test.frm이라는 이름이 붙었습니다. .frm 파일의 형식

은 다양한 플랫폼에서 동일합니다. 이 접미사는 .frm이며 바이너리 형식으로 저장되어 있습니다. 직접 열면 왜곡됩니다.

2. 테이블의 데이터 및 인덱스

① 시스템 테이블스페이스(시스템 테이블스페이스)

기본적으로 InnoDB는 데이터 디렉터리에 12M 크기의 ibdata1이라는 파일을 생성합니다. 파일은 에 해당합니다.

的系统表空间在文件系统上的表示。怎么才 12 M?注意这个文件是自扩展文件,当不够用的时候它会自

己增加文件大小。

当然,如果你想让系统表空间对应文件系统上多个实际文件,或者仅仅觉得原来的ibdata1这个文件名

难听,那可以在MySQL启动时配置对应的文件路径以及它们的大小,比如我们这样修改一下my.cnf 配置

文件:

② 独立表空间(file-per-table tablespace)

[root@atguigu01 mysql]# cd ./temp
[root@atguigu01 temp]# ll
总用量 1080
-rw-r-----. 1 mysql mysql 131072 7 月  29 23 :10 countries.ibd
-rw-r-----. 1 mysql mysql 163840 7 月  29 23 :10 departments.ibd
-rw-r-----. 1 mysql mysql 196608 7 月  29 23 :10 employees.ibd
-rw-r-----. 1 mysql mysql 114688 7 月  29 23 :10 job_grades.ibd
-rw-r-----. 1 mysql mysql 163840 7 月  29 23 :10 job_history.ibd
-rw-r-----. 1 mysql mysql 131072 7 月  29 23 :10 jobs.ibd
-rw-r-----. 1 mysql mysql 147456 7 月  29 23 :10 locations.ibd
-rw-r-----. 1 mysql mysql 131072 7 月  29 23 :10 regions.ibd
로그인 후 복사
表名.frm
로그인 후 복사
로그인 후 복사
mysql> USE atguigu;
Database changed
로그인 후 복사
mysql> CREATE TABLE test (
-> c1 INT
-> );
Query OK, 0 rows affected (0.03 sec)
로그인 후 복사
[server]
innodb_data_file_path=data1:512M;data2:512M:autoextend
로그인 후 복사

在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为每

一个表建立一个独立表空间,也就是说我们创建了多少个表,就有多少个独立表空间。使用独立表空间来

存储表数据的话,会在该表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表

名相同,只不过添加了一个.ibd的扩展名而已,所以完整的文件名称长这样:

比如:我们使用了独立表空间去存储atguigu数据库下的test表的话,那么在该表所在数据库对应

的atguigu目录下会为test表创建这两个文件:

其中test.ibd文件就用来存储test表中的数据和索引。

③ 系统表空间与独立表空间的设置

我们可以自己指定使用系统表空间还是独立表空间来存储数据,这个功能由启动参数

innodb_file_per_table控制,比如说我们想刻意将表数据都存储到系统表空间时,可以在启动

MySQL服务器的时候这样配置:

默认情况:

④ 其他类型的表空间

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

表空间(general tablespace)、临时表空间(temporary tablespace)等。

2. 3. 2 MyISAM存储引擎模式

1. 表结构

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

门用于描述表结构的文件:

2. 表中数据和索引

在MyISAM中的索引全部都是二级索引,该存储引擎的数据和索引是分开存放的。所以在文件系统中也是

使用不同的文件来存储数据文件和索引文件,同时表数据都存放在对应的数据库子目录下。假如test

表使用MyISAM存储引擎的话,那么在它所在数据库对应的atguigu目录下会为test表创建这三个文

件:

表名.ibd
로그인 후 복사
test.frm
test.ibd
로그인 후 복사
[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)
로그인 후 복사
表名.frm
로그인 후 복사
로그인 후 복사

举例:创建一个MyISAM 表,使用ENGINE 选项显式指定引擎。因为InnoDB是默认引擎。

2. 4 小结

举例:数据库a,表b。

1 、如果表b采用InnoDB,data\a中会产生 1 个或者 2 个文件:

b.frm :描述表结构文件,字段长度等

如果采用系统表空间模式的,数据信息和索引信息都存储在ibdata1中

如果采用独立表空间存储模式,data\a中还会产生b.ibd文件(存储数据信息和索引信息)

此外:

① MySQL5.7 中会在data/a的目录下生成db.opt文件用于保存数据库的相关配置。比如:字符集、比较

规则。而MySQL8.0不再提供db.opt文件。

② MySQL8.0中不再单独提供b.frm,而是合并在b.ibd文件中。

2 、如果表b采用MyISAM,data\a中会产生 3 个文件:

MySQL5.7 中:b.frm:描述表结构文件,字段长度等。

MySQL8.0 中 b.xxx.sdi:描述表结构文件,字段长度等

b.MYD(MYData):数据信息文件,存储数据信息(如果采用独立表存储模式)

b.MYI(MYIndex):存放索引信息文件

test.frm 存储表结构
test.MYD 存储数据 (MYData)
test.MYI 存储索引 (MYIndex)
로그인 후 복사
CREATE TABLE `student_myisam` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar( 64 ) DEFAULT NULL,
`age` int DEFAULT NULL,
`sex` varchar( 2 ) DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=MYISAM AUTO_INCREMENT= 0 DEFAULT CHARSET=utf8mb3;
로그인 후 복사

推荐学习:mysql视频教程

위 내용은 MySQL 데이터 디렉터리(정리된 요약)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!