MySQL数据目录下文件说明

一、关于MySQL数据文件

MySQL文件包括MySQL所建数据库文件和MySQL所用引擎创建的数据库文件。

在MYSQL中建立任何一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储引擎无关,也就是任何存储引擎的数据表都必须有.frm文件,命名方式为数据表名.frm,如user.frm. .frm文件可以用来在数据库崩溃时恢复表结构。

MySQL的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。mysql安装教程

最常使用的2种存储引擎:

1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度。

2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

 

MySQL体系结构

https://www.cnblogs.com/wy123/category/1243550.html

 

二、MySQL状态

# systemctl status mysqld

# mysql -u root -p"MySQL@123" -e "show databases;"

# mysql -u root -p"MySQL@123" -e "show variables like '%storage_engine%';"

# mysql -u root -p"MySQL@123" -e "show variables like 'innodb%pool%';"

 
 

 

 
 

 

三、数据目录文件

# ls -l /var/lib/mysql

# ls -l /var/lib/mysql/mysql

 

 
 
 
 

 

auto.cnf            记录mysql数据库实例的server_uuid,安装的时候初始化,master和slave的server_uuid不能一样

ib_buffer_pool  缓存池,存放部分最近的查询记录和索引等,可以通过show variables like 'innodb%pool%'查

ibdata1              innodb表空间,如果采用innodb引擎,会默认10M大小

ib_logfile0         事务日志文件,是确保事务的REDO和UNDO,主要是确保事务的前滚和后滚,不是用来恢复用

 ib_logfile1        事务日志文件,是确保事务的REDO和UNDO,不是用来恢复用

ibtmp1               临时表空间

mysql                             系统数据库目录

performance_schema    系统数据库目录

sys                                 系统数据库目录

bogon-bin.000001   二进制日志文件,用于恢复,主从数据同步等

bogon-bin.000002   二进制日志文件,用于恢复,主从数据同步等

bogon-bin.index   二进制日志文件索引,用于恢复,主从数据同步等

mysql.sock           MySQL socket文件

mysql.sock.lock    MySQL socket锁文件

 

MySQL的数据库其相关文件都会存放在安装目录下data文件夹下的同命文件夹中,不同的存储引擎创建的表其文件也不一样,下面来认识下这些数据库文件。

 
 

 

 
 

 

 

四、MySQL数据库的证书文件

 

MySQL5.7.x 启动后,默认会在data(数据)目录下生成以下pem文件,这些文件就是用于启用SSL功能的。

这些文件是证书颁发机构(以“ca”开头),MySQL服务器进程(以“服务器”开头)和MySQL客户端(以“客户端”开头)的密钥和证书对。 此外,当不使用SSL时,MySQL使用private_key.pem和public_key.pem文件来安全地传输密码。

# ll /var/lib/mysql/*.pem

 

 
 
 
 

 

# mysql -u root -p"MySQL@123" -e "show global variables like '%ssl%';"

 
 

 

# mysql -u root -h 192.168.1.104 -p"MySQL@123"

mysql> \s

 
 

# mysql -u root -p"MySQL@123"

mysql> \s

 

 
 

五、参考

 

MySQL初始化root密码和允许远程访问

https://www.cnblogs.com/cnblogsfans/archive/2009/09/21/1570942.html

 

MySQL 数据文件目录文件类型介绍

https://blog.51cto.com/11025159/1874729

你的MySQL服务器开启SSL了吗?

https://www.cnblogs.com/mysql-dba/p/7061300.html

 

如何查看MySQL的当前存储引擎?

https://www.cnblogs.com/zhming26/p/6322353.html

MySQL 开启SSL连接

https://blog.csdn.net/weixin_39845407/article/details/81708230

 

MySQL仅从.frm和.ibd文件恢复数据

https://blog.csdn.net/zhchs2012/article/details/79013951

 

SSL Connections in MySQL 5.7

https://www.percona.com/blog/2017/06/27/ssl-connections-in-mysql-5-7

 

How To Configure SSL/TLS for MySQL on Ubuntu 16.04

https://www.digitalocean.com/community/tutorials/how-to-configure-ssl-tls-for-mysql-on-ubuntu-16-04

 

MySQL5.7 Connecting Securely Using SSL

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-using-ssl.html

 

MySQL 5.7.x 中文文档

https://www.docs4dev.com/docs/zh/mysql/5.7/reference/preface.html#前言和法律声明

 

 

posted @ 2021-11-19 09:25  DB哥  阅读(940)  评论(0编辑  收藏  举报