问题描述
该笔记将记录:在 MySQL 中,常见文件类新(根据扩展名分类),及其用途。在MySQL的「词汇表」中列出了所有的文件,详细内容可以参考表。
常见文件类型
# .cfg
是一个元数据文件,用在InnoDB的「可传输表空间」功能中。
它由命令FLUSH TABLES ... FOR EXPORT生成,将一个或多个表置于可以复制到另一个服务器的一致状态。该类型的文件要与相应的.ibd文件一起复制,并用于在执行ALTER TABLE ... IMPORT TABLESPACE步骤时,调整.ibd文件的内部值(例如space ID)。
# .ibd
「表文件表空间」和「通用表空间」的数据文件。「表文件表空间」的.ibd文件包含单个表及关联的索引数据。「通用表空间」的.ibd文件可能包含多个表的表数据和索引数据。在MySQL 5.7.6中引入了「通用表空间」。
在「系统表空间」中不使用.ibd文件,「系统表空间」由一个或多个ibdata文件组成。
如果使用DATA DIRECTORY=子句创建「表文件表空间」或「通用表空间,则.ibd文件位于正常数据目录之外的指定路径,并由.isl文件指向。
当MySQL企业备份产品在压缩备份中包含.ibd文件时,压缩的等效文件是.ibz文件。
# ibdata
一组名称为ibdata1,ibdata2等的文件,构成InnoDB的「系统表空间」。这些文件包含有关「InnoDB表的元数据」(InnoDB数据字典),以及一个或多个撤消日志,更改缓冲区和双写缓冲区的「存储区域」,它们还可以包含部分或全部表数据(取决于创建每个表时「表文件」模式是否有效)。
启用innodb_file_per_table选项后,新创建的表数据和索引将存储在单独的.ibd文件中,而不是存储在「系统表空间」中。
通过配置innodb_autoextend_increment选项来影响ibdata文件的增长。
# MYD
用于存储MyISAM表数据的文件。
# MYI
用于存储MyISAM表索引的文件。
# .frm
包含MySQL表的元数据(如表定义)的文件。
对于备份,必须始终保留完整的.frm文件集和备份数据,以便能够还原备份后更改或删除的表。
虽然每个InnoDB表都有一个.frm文件,但InnoDB在「系统表空间」中维护自己的表元数据。因此InnoDB不需要.frm文件来操作InnoDB表。
由MySQL Enterprise Backup产品进行.frm文件备份。在进行备份时,不能通过ALTER TABLE操作修改这些文件,这就是为什么:在备份.frm文件时,「包含非InnoDB表的备份」会执行FLUSH TABLES WITH READ LOCK操作以冻结此类活动的原因。还原备份可能会导致创建,更改或删除现有的.frm文件,以匹配备份时的数据库状态。
参考文献