数据文件

在 MySQL中每一个数据库都会在定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件。不同的 MySQL存储引擎有各自不同的数据文件,存放位置也有区别。多数存储引擎的数据文件都存放在和 MyISAM数据文件位置相同的目录下,但是每个数据文件的扩展名却各不一样。如 MyISAM用“ .MYD”作为扩展名, Innodb用“ .ibd”, Archive用“ .arc”, CSV用“ .csv”,等等。

MyISAM与Innodb的数据文件:




1、“ .frm”文件

与表相关的元数据( meta)信息都存放在“ .frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“ .frm”文件。所有的“ .frm”文件都存放在所属数据库的文件夹下面。

2、“ .MYD”文件“ .MYD”文件是 MyISAM存储引擎专用,存放 MyISAM表的数据。每一个 MyISAM表都会有一个“ .MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“ .frm”文件在一起 。

3、“ .MYI”文件

“ .MYI”文件也是专属于 MyISAM存储引擎的,主要存放 MyISAM表的索引相关信息。对于 MyISAM存储来说,可以被 cache的内容主要就是来源于“ .MYI”文件中。每一个 MyISAM表对应一个“ .MYI”文件,存放于位置和“ .frm”以及“ .MYD”一样。

4、“ .ibd”文件和 ibdata文件

这两种文件都是存放 Innodb数据的文件,之所以有两种文件来存放 Innodb的数据(包括索引),是因为 Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用“ .ibd”文件来存放数据,且每个表一个“ .ibd”文件,文件存放在和 MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用 ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置) ibdata文件。 ibdata文件可以通过 innodb_data_home_dir和 innodb_data_file_path两个 参数共 同配置 组成, innodb_data_home_dir 配置 数据存 放的总 目录, 而innodb_data_file_path 配 置 每 一 个 文 件 的 名 称 。 当 然 , 也 可 以 不 配 置innodb_data_home_dir而直接在 innodb_data_file_path参数配置的时候使用绝对路径来完成配置。 innodb_data_file_path中可以一次配置多个 ibdata文件。文件可以是指定大小,也可以是自动扩展的,但是 Innodb限制了仅仅只有最后一个 ibdata文件能够配置成自动扩展类型。当我们需要添加新的 ibdata文件的时候,只能添加在 innodb_data_file_path配置的最后,而且必须重启 MySQL才能完成 ibdata的添加工作。不过如果我们使用独享表空间存储方式的话,就不会有这样的问题,但是如果要使用裸设备的话,每个表一个裸设备 ,可能造成裸设备数量非常大,而且不太容易控制大小,实现比较困难,而共享表空间却不会有这个问题,容易控制裸设备数量。


 

而不管Innodb 使用的是共享还是独享表空间的方式来存储数据,与事务相关的undo 信息以及其他的一些元数据信息,都是存放在“innodb_data_home_dir”和“innodb_data_file_path”这两个参数所设定的数据文件中的


 

Innodb 还有自己存放redo 信息和相关事务信息,日志文件在“innodb_log_group_home_dir”参数所设定的位置


 

备份




逻辑备份:mysqldump,mysqlimport

物理备份:热备份(MyISAM--mysqlhotcopy),冷备份


转载于:https://blog.51cto.com/drizzlewalk/488853