前言
Linux服务器上安装好MySQL数据库之后,进入以下目录
/var/lib/mysql/
会发现已经建立好的schema文件和数据文件,进入其中一个schema文件夹,基本主要有以下三种类型的文件,如下举例,我们已经有一个表是message_push_record
- db.opt
- message_push_record.ibd
- message_push_record.frm
MySQL文件类型说明
1. db.opt
以目前项目中的举例,该文件内容如下
default-character-set=utf8mb4
default-collation=utf8mb4_general_ci
- MySQL的每个数据库目录中有一个文件db.opt,
create database
时会自动生成一个文件db.opt。该文件主要用来存储当前数据库的默认字符集和字符校验规则,show create database
时显示数据库默认字符集即db.opt中字符集 - 这个文件丢失不影响数据库运行,该文件丢失之后新建表时,找不到数据库的默认字符集,就把character_set_server当成数据库的默认字符集,show create database时显示character_set_server字符集
2. *.ibd
MySQL 使用 InnoDB 存储表时,会将表的定义和数据索引等信息分开存储,其中前者存储在.frm
文件中,后者存储在.ibd
文件中。
InnoDB 中用于存储数据的文件总共有两个部分,一是系统表空间文件,包括 ibdata1、ibdata2 等文件,其中存储了 InnoDB 系统信息和用户数据库表数据和索引,是所有表公用的。
当打开 innodb_file_per_table 选项时,.ibd 文件就是每一个表独有的表空间,文件存储了当前表的数据和相关的索引数据
3. *.frm
无论在 MySQL 中选择了哪个存储引擎,所有的 MySQL 表都会在硬盘上创建一个.frm
文件用来描述表的格式或者说定义;.frm
文件的格式在不同的平台上都是相同的。