当前位置: 华文世界 > 科技

MySQL数据都存在哪儿了?

2024-08-25科技

在 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 文件的具体问题欢迎评论区留言!