在 MySQL 中,数据存储和管理涉及到多个文件和文件类型,每种文件都有其特定的作用。今天就来聊聊MySQL几个重要的文件。
废话不多说,请看图。此图是我本地安装的MySQL的数据存储目录。其中包含了redolog、binlog、进程ID、认证文件、以及各个数据库目录,其中apa、performance_schema、sys、mysql分别对应apa、performance_schema、sys、mysql库
。performance_schema、sys、mysql为系统库,文件比较特殊,本次暂不说明,
下面来说说用户库及其他各个文件的作用。
1. 数据文件
1.1 .ibd 文件
作用
:存储 InnoDB 表的数据和索引。当启用了独立表空间(innodb_file_per_table)时,每个表的数据会存储在一个独立的 .ibd 文件中。
位置
:位于数据库的物理数据目录中,例如 /var/lib/mysql/db_name/。安装MySQL时,--data-dir指定的目录。
示例
:table_name.ibd
1.2 .frm 文件
作用
:存储 MySQL 表的表结构定义,包括列信息、索引信息等。对于 MyISAM 和 InnoDB 存储引擎,.frm 文件用于保存表的元数据。
位置
:位于数据库目录中,例如 /var/lib/mysql/db_name/。
示例
:table_name.frm
2. 日志文件
2.1 错误日志(error log)
作用
:记录 MySQL 服务器的启动、运行和停止过程中的错误信息、警告和诊断信息。
位置
:通常位于 /var/log/mysql/ 或 /var/log/mysqld.log。位置可以在 MySQL 配置文件中设置。
示例
:mysql-error.log
2.2 二进制日志(binary log)
作用
:记录所有对 MySQL 数据库的更改操作,包括数据修改和表结构更改。二进制日志用于数据恢复和复制。
位置
:在 MySQL 数据目录中,如 /var/lib/mysql/。
示例
:mysql-bin.000001
2.3 重做日志(redo log)
作用
:用于确保事务的持久性。重做日志记录了所有对数据库的修改操作,确保即使在系统崩溃后也能恢复数据。
位置
:在 InnoDB 数据目录中,如 /var/lib/mysql/。
示例
:ib_logfile0, ib_logfile1
2.4 事务日志(undo log)
作用
:用于支持事务回滚。Undo 日志记录了事务中的每一个操作,以便在事务回滚时撤销这些操作。
位置
:与 InnoDB 数据文件存储在同一目录中。
示例
:通常不直接以文件存在,数据保存在 .ibd 文件中。
3. 临时文件
3.1 临时表文件
作用
:用于存储临时表的数据。临时表是在查询过程中动态创建的,用于存储中间结果。
位置
:在 MySQL 临时文件目录中,如 /tmp/ 或 MySQL 数据目录下的临时目录。由于没有使用临时表,所以上图看不到对应文件。
示例
:#sql_1234_5.frm, #sql_1234_6.ibd
4. 其他文件
4.1 关系图文件(.TRG)
作用
:用于存储触发器的定义。在较旧的 MySQL 版本中,触发器信息可能存储在独立文件中。
位置
:通常位于数据库目录中。
示例
:table_name.trg
4.2 视图文件(.VIEW)
作用
:存储视图的定义信息。
位置
:通常位于数据库目录中。
示例
:view_name.frm
总结
数据文件
:.ibd(表数据)、.frm(表结构)
日志文件
:错误日志、二进制日志、重做日志、事务日志
临时文件
:临时表文件
其他文件
:触发器、视图文件
通过了解这些文件及其作用,你可以更好地管理 MySQL 数据库的备份、恢复和优化。如果有更多关于 MySQL 文件的具体问题欢迎评论区留言!