MySQL(三)数据目录
Mysql的主要目录结构
find / -name mysql
1 数据库文件的存放路径 /var/lib/mysql/
MySQL服务器程序会在启动的时候去文件系统下的某个目录加载一些文件,之后在运行过程中产生的数据也会存储到这个目录下的某个文件中,这个目录就称为数据目录。
可以通过命令查看当前数据库的数据目录:
mysql> show variables like 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)
[root@hadoop100 ~]# ll /var/lib/mysql
总用量 90568
-rw-r-----. 1 mysql mysql 56 1月 15 19:38 auto.cnf
-rw-r-----. 1 mysql mysql 4094 1月 15 21:55 binlog.000001
-rw-r-----. 1 mysql mysql 16 1月 15 19:39 binlog.index
-rw-------. 1 mysql mysql 1676 1月 15 19:38 ca-key.pem
-rw-r--r--. 1 mysql mysql 1112 1月 15 19:38 ca.pem
-rw-r--r--. 1 mysql mysql 1112 1月 15 19:38 client-cert.pem
-rw-------. 1 mysql mysql 1676 1月 15 19:38 client-key.pem
-rw-r-----. 1 mysql mysql 196608 1月 15 21:54 #ib_16384_0.dblwr
-rw-r-----. 1 mysql mysql 8585216 1月 15 19:38 #ib_16384_1.dblwr
-rw-r-----. 1 mysql mysql 5985 1月 15 19:38 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 1月 15 21:54 ibdata1
-rw-r-----. 1 mysql mysql 12582912 1月 15 19:39 ibtmp1
drwxr-x---. 2 mysql mysql 4096 1月 15 19:39 #innodb_redo
drwxr-x---. 2 mysql mysql 187 1月 15 19:39 #innodb_temp
drwxr-x---. 2 mysql mysql 143 1月 15 19:38 mysql
-rw-r-----. 1 mysql mysql 25165824 1月 15 21:54 mysql.ibd
srwxrwxrwx. 1 mysql mysql 0 1月 15 19:39 mysql.sock
-rw-------. 1 mysql mysql 6 1月 15 19:39 mysql.sock.lock
drwxr-x---. 2 mysql mysql 8192 1月 15 19:38 performance_schema
-rw-------. 1 mysql mysql 1680 1月 15 19:38 private_key.pem
-rw-r--r--. 1 mysql mysql 452 1月 15 19:38 public_key.pem
-rw-r--r--. 1 mysql mysql 1112 1月 15 19:38 server-cert.pem
-rw-------. 1 mysql mysql 1676 1月 15 19:38 server-key.pem
drwxr-x---. 2 mysql mysql 28 1月 15 19:38 sys
-rw-r-----. 1 mysql mysql 16777216 1月 15 21:54 undo_001
-rw-r-----. 1 mysql mysql 16777216 1月 15 21:54 undo_002
2 相关命令目录 /usr/bin/mysql /usr/sbin/mysql
bin下的命令(mysqladmin、mysqlbinlog、mysqldump等命令)
[root@hadoop100 bin]# ls | grep mysql
mysql
mysqladmin
mysqlbinlog
mysqlcheck
mysql_config_editor
mysqld_pre_systemd
mysqldump
mysqldumpslow
mysqlimport
mysql_migrate_keyring
mysqlpump
mysql_secure_installation
mysqlshow
mysqlslap
mysql_ssl_rsa_setup
mysql_tzinfo_to_sql
mysql_upgrade
sbin下的目录:
[root@hadoop100 bin]# cd /usr/sbin/
[root@hadoop100 sbin]# ls | grep mysql
mysqld
安装目录下非常中要的bin命令目录,它里面存储了许多关于控制客户端程序和服务器程序的命令(许多可执行文件,如mysql、mysqld、mysqld_safe等)。而数据目录是用来存储mysql运行过程中产生的数据。
3 配置文件目录 /usr/share/mysql-8.0(命令及配置文件) /etc(如my.conf)
/usr/share/mysql-8.0(命令及配置文件)
[root@hadoop100 mysql-8.0]# ll
总用量 1032
drwxr-xr-x. 2 root root 24 1月 15 19:34 bulgarian
drwxr-xr-x. 2 root root 4096 1月 15 19:34 charsets
drwxr-xr-x. 2 root root 24 1月 15 19:34 czech
drwxr-xr-x. 2 root root 24 1月 15 19:34 danish
-rw-r--r--. 1 root root 25575 9月 13 09:15 dictionary.txt
drwxr-xr-x. 2 root root 24 1月 15 19:34 dutch
drwxr-xr-x. 2 root root 24 1月 15 19:34 english
drwxr-xr-x. 2 root root 24 1月 15 19:34 estonian
drwxr-xr-x. 2 root root 24 1月 15 19:34 french
drwxr-xr-x. 2 root root 24 1月 15 19:34 german
drwxr-xr-x. 2 root root 24 1月 15 19:34 greek
drwxr-xr-x. 2 root root 24 1月 15 19:34 hungarian
-rw-r--r--. 1 root root 3999 9月 13 09:15 innodb_memcached_config.sql
-rw-r--r--. 1 root root 2216 9月 13 11:45 install_rewriter.sql
drwxr-xr-x. 2 root root 24 1月 15 19:34 italian
drwxr-xr-x. 2 root root 24 1月 15 19:34 japanese
drwxr-xr-x. 2 root root 24 1月 15 19:34 korean
-rw-r--r--. 1 root root 624277 9月 13 09:15 messages_to_clients.txt
-rw-r--r--. 1 root root 378839 9月 13 09:15 messages_to_error_log.txt
-rw-r--r--. 1 root root 1977 9月 13 11:45 mysql-log-rotate
drwxr-xr-x. 2 root root 24 1月 15 19:34 norwegian
drwxr-xr-x. 2 root root 24 1月 15 19:34 norwegian-ny
drwxr-xr-x. 2 root root 24 1月 15 19:34 polish
drwxr-xr-x. 2 root root 24 1月 15 19:34 portuguese
drwxr-xr-x. 2 root root 24 1月 15 19:34 romanian
drwxr-xr-x. 2 root root 24 1月 15 19:34 russian
drwxr-xr-x. 2 root root 24 1月 15 19:34 serbian
drwxr-xr-x. 2 root root 24 1月 15 19:34 slovak
drwxr-xr-x. 2 root root 24 1月 15 19:34 spanish
drwxr-xr-x. 2 root root 24 1月 15 19:34 swedish
drwxr-xr-x. 2 root root 24 1月 15 19:34 ukrainian
-rw-r--r--. 1 root root 1248 9月 13 11:45 uninstall_rewriter.sql
/etc(如my.conf)
[root@hadoop100 etc]# ls | grep my.cnf
my.cnf
my.cnf.d
my.cnf.rpmsave
数据库和文件系统的关系
像InnoDB、MyISAM这样的存储引擎都是把表存储在磁盘上,然后操作系统用来管理磁盘的结构称为文件系统,即:InnoDB、MyISAM这样的存储引擎都是把表存放在文件系统上,当我们需要读数据,这些存储引擎就会从文件系统中获取数据返回给我们,当我们想写入数据,这些存储引擎又会把这些数据写入文件系统。
1 mysql默认的数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql:MySQL系统自带的核心数据库,存储mysql用户及其权限等信息
information_schema:这个数据库保存着MySQL服务器
维护的所有其他数据库的信息,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引等信息。performace_schema:MySQl自带的数据库,主要保存MySQL最近运行的一些状态信息,可以用来
监控MySQL服务的各类性能指标,包括最近执行了哪些语句,在执行过程中的每个阶段花费了多长时间,内存的使用情况等信息sys:MySQl自带的数据库,主要是通过视图的形式,把
information_schema和performace_schema结合起来,帮助系统管理员和开发人员监控MySQL性能。
2 数据库在文件系统中的表示
InnoDB
在/var/lib/mysql数据目录下,每个数据库都对应着一个文件夹,查看文件夹的内容如下:

- opt文件:记录数据库的字符集、比较规则等信息
- frm:记录数据库表中的结构信息
- ibd:
独立表空间,每个数据库中的表对应一个文件,用于存储表中的数据
5.7版本及之前的版本,数据还会存放到/var/lib/mysql/idata1文件中,这个文件独立于数据库,默认大小12M,是系统表空间
8.0版本后就没有frm了,和ibd合并成一个,表结构和表数据统一存放在ibd文件里面了
ibd文件的查看 ibd2sdi --dump-file=emp1.txt emp1.ibd
ibd2sdi 是8.0版本后提供的一个ibd文件查看工具:
[root@hadoop100 dbtest1]# ibd2sdi --dump-file=emp1.txt emp1.ibd
[root@hadoop100 dbtest1]# ls
emp1.ibd emp1.txt
[root@hadoop100 dbtest1]# cat emp1.txt
MyISAM
首先使用MYISAM引擎创建一张表:
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=1 DEFAULT CHARSET=utf8mb4;
然后在文件目录中查看表对应的文件:
[root@hadoop100 dbtest1]# ll
总用量 136
-rw-r-----. 1 mysql mysql 114688 1月 15 23:57 emp1.ibd
-rw-------. 1 root root 11112 1月 15 23:58 emp1.txt
-rw-r-----. 1 mysql mysql 4335 1月 16 00:31 student_myisam_366.sdi
-rw-r-----. 1 mysql mysql 0 1月 16 00:31 student_myisam.MYD
-rw-r-----. 1 mysql mysql 1024 1月 16 00:31 student_myisam.MYI
看到这里MYISAM引擎创建的表有三个文件,5.7中为frm、MYD和MYI,8.0为sdi、MYD、MYI,其中frm和sdi存储表结构,MYD和MYI分别存储数据和索引。
3 视图在文件系统中的表示
会存储一个视图名.frm的文件,不会存在.ibd文件,侧面印证了视图只是一个虚拟的表,也就是某个查询语句的一个别名而已
4 数据目录下的其他文件
- 服务器进程文件
- 服务器日志文件
- 默认/自动生成的SSL和RSA证书和密钥文件
MySQL(三)数据目录的更多相关文章
- MySQL(三)
MYSQL(三) 上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下: MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引 ...
- mysql转移数据目录后无法启动问题
最近在学习mysql,将mysql的数据目录文件路径/var/lib/mysql转移到/data/mysql,然后通过软连接方式关联. 1. ln -s /data/mysql /var/lib/my ...
- mysql(三) 数据表的基本操作操作
mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGIN ...
- MySQL移动数据目录出现权限问题
MySQL移动数据目录出现权限问题 环境: ubuntu 14.04.4 LTS 现象 今天把/var/lib/mysql下的数据文件移动到其他目录下,之后发现启动mysql报错,并且mysql无法运 ...
- MySQL三种存储引擎总结
MySQL三种存储引擎 MyISAM.InnoDB.MEMORY 1.MyISAM MyISAM,3.23.34a前的默认存储引擎. 优缺点 优点 在于占用空间小,处理速度快. 缺点 不支持事务的完整 ...
- mysql三种带事务批量插入
原文:mysql三种带事务批量插入 c#之mysql三种带事务批量插入 前言 对于像我这样的业务程序员开发一些表单内容是家常便饭的事情,说道表单 我们都避免不了多行内容的提交,多行内容保存,自然要用到 ...
- 确保数据零丢失!阿里云数据库RDS for MySQL 三节点企业版正式商用
2019年10月23号,阿里云数据库RDS for MySQL 三节点企业版正式商用,RDS for MySQL三节点企业版基于Paxos协议实现数据库复制,每个事务日志确保至少同步两个节点,实现任意 ...
- mysql 更换数据目录
mysql 更换数据目录 1.停止MySql服务: /etc/rc.d/init.d/mysql stop 或者 service mysql stop 2.确认MySql原来的数据目录,查找datad ...
- mysql 三种恢复方式
为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有 ...
- 【转】Mysql三种备份详解
一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据:恢复数据要在多长时间内 ...
随机推荐
- Vue3 animate.css + wowjs 官网实现滚动到对应元素位置增加动画特效
本人在Vue3中使用的是 setup语法糖 也就是 <script setup>...</ script> 在项目中install一下两个插件: yarn add animat ...
- js数组原型方法
今天学习了一下js数组原型的操作方法,小结一下学习地址https://www.cnblogs.com/obel/p/7016414.html 1.join() join(separator): 将数组 ...
- 关于 indy Idhttp Post数据抛异常 connection closed Gracefully
delphi 使用indy -idHttp 控件post 数据时 会报connection closed Gracefully这个异常的问题. 网上找了很多方法最多的就是 修改: MyHttp.Req ...
- python开头
python识别的正则模式 coding[:=]\s*([-\w.]+)#coding:utf8 ???不要用 #coding=utf-8#coding:utf-8# -*- coding: ut ...
- MarkDown使用规范
写博客的简单语法. 标题语法 一级标题:# 标题内容 二级标题:## +标题内容 三级标题:### +标题内容 后续标题语法依次增加# 注:#号后有空格 MarkDown最高支持六级标题. 字体语法 ...
- 第二章 excel的快捷键操作
本章介绍excel中部分常用的快捷键 1.文件类 工作簿操作:Ctrl + N 新建:Ctrl + w 关闭当前:Ctrl + S 保存 F12 当前另存为 Ctrl + p 打印当前 2.通用类 C ...
- apt常用命令 - 搬运
Debian/Ubuntu基础的系统可以使用apt安装.卸载软件包 转自:https://www.jb51.net/os/Ubuntu/56362.html APT 常用命令如下: apt list ...
- 密码破解-john的使用
john类似于hashcat一样,也是一款密码破解方式,john跟专注于系统密码的破解,并且和hashcat一样在kali中自带 hash请见hash的简单使用 重要的参数 --wordlist=字典 ...
- 从0搭建Vue3组件库(六):前端流程化控制工具gulp的使用
前言 随着前端诸如webpack,rollup,vite的发展,gulp感觉似乎好像被取代了.其实并没有,只不过它从台前退居到了幕后.我们仍然可以在很多项目中看到它的身影,比如elementplus. ...
- Java(单元测试,反射)
单元测试.反射 一.单元测试 1.1 单元测试快速入门 所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试. 我们想想,咱们之前是怎么进行测试的呢? 比如说我们写了一个学生管理系统, ...