« 上一篇下一篇 »

MySQL物理备份所需文件

MySQL物理备份所需文件主要包括以下三个方面:MyISAM存储引擎InnoDB存储引擎、NDB Cluster存储引擎。

    1、MyISAM存储引擎

    MyISAM存储引擎的所有数据都存放在MySQL配置设定的“datadir”目录下。实际上不管使用的是MyISAM存储引擎还是其他任何存储引擎,每一个数据库都会“datadir”目录下有一个文件夹。在各个数据库中每一个MyISAM存储引擎表都会有三个文件存在,分别为记录表结构元数据的“.frm”文件、存储表数据的“.MYD”文件,以及存储索引数据的“.MYI”文件。由于MyISAM属于非事务性存储引擎,所以它没有自己的日志文件。所以MyISAM存储引擎在做物理备份时,除了备份MySQL系统共有的物理文件之外,就只需要备份上面的三种文件。

    2、InnoDB存储引擎

    InnoDB存储引擎属于事务性存储引擎,而且存放数据的位置也可能与MyISAM存储引擎有所不同,这主要取决于我们对InnoDB的“”相关配置。决定InnoDB存放数据位置的配置为“innodb_data_home_dir”、“innodb_data_file_path”和“innodb_log_group_home_dir”这三个目录位置指定的参数,以及另外一个决定InnoDB的表空间存储方式的参数“innodb_file_per_table”。前面三个参数指定了数据和日志文件的存放位置,最后一个参数决定InnoDB是以共享表空间存放数据还是以独享表空间方式存放数据。

    如果我们使用了共享表空间的存储放his,那么InnoDB需要备份“innodb_data_home_dir”和“innodb_data_file_path”参数所设定的所有数据文件,以及“datadir”中相应数据库目录下的所有InnoDB存储引擎表的“.frm”。

    如果我们使用了独享表空间,那么除了备份上面共享表空间方式需要备份的所有文件之外,还需要备份“datadir”中相应数据库目录下的所有“.idb”文件,该文件中存放的才是独享表空间方式下的InnoDB存储引擎表的数据。这里可能有人会问,既然是使用独享表空间,那为什么还要备份共享表空间“才使用到”的数据文件呢?其实这是很多人的一个共性误区,大家以为使用独享表空间的时候InnoDB的所有信息就都存放在“datadir”所设定数据库目录下的“.ibd”文件中,实际上并不是这样的。“.ibd”文件中所存放的仅仅只是表数据、索引数据以及UNDO信息,大家都很清楚,InnoDB是事务性存储引擎,它是需要REDO信息而不管InnoDB使用的是共享还是独享表空间的方式来存储数据,各个表的元数据信息都存放在“innodb_data_home_dir”和“innodb_data_file_path”这两个参数所设定的数据文件中。所以要想InnoDB的物理备份有效,“innodb_data_home_dir”和“innodb_data_file_path”参数所设定的数据文件不管在什么情况下都必须备份。

    此外,除了上面所说的数据文件之外,InnoDB还存放REDO信息和相关事务信息的日志文件在“innodb_log_group_home_dir”参数所设定的位置。所以要想InnoDB物理备份能够有效使用,还要备份“innodb_log_group_home_dir”参数设定位置的所有日志文件。

    3、NDB Cluster存储引擎

    NDB Cluster存储引擎(其实也可以说是MySQL Cluster)的物理备份文件主要有以下三类:

    1)元数据:包含所有的数据库及表的定义信息;

    2)表数据:保存实际数据的文件;

    3)事务日志数据:维持事务的一致性好完整性,以及恢复过程中需要的事务信息。

    不论是通过停机冷备份,还是通过NDB Cluster自行提供的在线联机备份工具,或者是第三方备份软件来进行备份,都需要备份以上三种物理文件才能构成一个完整有效的备份集。当然,相关的配置文件,尤其是管理节点上面的配置信息,同样也需要备份。

« 上一篇下一篇 »