Documentation Home

1.4 备份的文件

DBA 和开发工作通常涉及逻辑结构,例如表、行、列、数据字典等。对于备份,您必须了解文件如何表示这些结构的物理细节。

表 1.1 MySQL 企业备份输出目录中的文件

文件名、模式或扩展名

与原始数据文件的关系

笔记

ibdata*

InnoDB 系统表空间,包含多个 InnoDB 表和相关索引。

由于在备份过程中原始文件可能会更改,因此该 apply-log步骤会将相同的更改应用于相应的备份文件。

*.ibd

InnoDB file-per-table 表空间,每个表空间包含一个 InnoDB 表和关联的索引。

用于使用该 innodb_file_per_table 选项创建的表。由于在备份过程中原始文件可能会更改,因此应用日志步骤会将相同的更改应用于相应的备份文件。

*.ibz

来自 MySQL 数据目录的 InnoDB 数据文件的压缩形式。

生成而不是.ibd压缩备份中的文件。代表 InnoDB 系统表空间的ibdata* 文件也在压缩备份中接收此扩展名。

.ibz文件在 、apply-logcopy-back步骤 copy-back-and-apply-log 期间解压缩。

*.frm

保存所有 MySQL 表的元数据。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.MYD

MyISAM 表数据。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.MYI

MyISAM 索引数据。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.CSM

CSV 表的元数据。

复制这些文件而不做任何更改。mysqlbackup创建 的 backup_history和 表使用 CSV 格式,因此备份总是包含一些具有此扩展名的文件。 backup_progress

*.CSV

CSV 表的数据。

复制这些文件而不做任何更改。mysqlbackup创建 的 backup_history和 表使用 CSV 格式,因此备份总是包含一些具有此扩展名的文件。 backup_progress

*.MRG

MERGE 存储引擎对其他表的引用。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.TRG

触发器参数。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.TRN

触发名称空间信息。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.opt

数据库配置信息。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.par

分区表的定义。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.ARM

ARCHIVE 存储引擎表元数据。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

*.ARZ

ARCHIVE 存储引擎表数据。

复制这些文件时,数据库处于只读状态。复制这些文件而不做任何更改。

backup-my.cnf

记录指定布局的配置参数和有关 MySQL 数据文件的其他重要信息。

该文件是在备份期间创建的,它包含描述备份数据的关键参数,如 innodb_data_file_pathinnodb_log_file_sizeinnodb_log_files_in_group等。它还可能包含其他 InnoDB 参数innodb_data_home_dir ,例如是否在备份期间使用了 innodb_undo_directory 某些 备份存储库选项。mysqlbackup使用存储在该文件中的参数来了解备份的结构并执行各种操作。您可能需要向 mysqlbackup提供其中一些参数如果目标服务器和备份配置不同,则在恢复期间和启动目标服务器时到 mysqld 。有关详细信息,请参阅 第 4.2.4 节“恢复数据库”中的讨论。

ibbackup_ibd_files

记录.ibd增量备份时的文件名及其空间ID。

该文件是在增量备份期间创建的。在还原期间,文件中的信息用于从完整备份中删除在完整备份时间和增量备份时间之间删除的表。

ibbackup_logfile

ib_logfile*MySQL 数据目录 中文件的压缩版本 。

InnoDB 日志文件 ( ib_logfile*) 是固定大小的文件,在数据库运行期间不断更新。出于备份目的,只需要在备份过程中提交的更改。这些更改记录在 中 ,并用于在应用日志阶段 ibbackup_logfile重新创建文件。ib_logfile*

ibbackup_redo_log_only

Created 而不是 用于使用该 选项 ibbackup_logfile进行的增量备份 。--incremental-with-redo-log-only

ib_logfile*

在初始备份后的阶段 由mysqlbackup在 备份目录中创建 。apply-log

这些文件不是从原始数据目录复制的,而是在apply-log初始备份后的阶段使用ibbackup_logfile文件中记录的更改在备份目录中重新创建的。

*.bl

来自备份服务器 的每个 .isl 文件的重命名版本。

当您使用语法.isl指定表的位置时,将创建 一个文件,就像指向表空间文件的符号链接一样。(有关详细信息,请参阅 在外部创建表。)在操作过程中,文件可能会也可能不会变回 文件 。如果指定的目录在恢复备份的服务器上不存在, mysqlbackup 会尝试创建它。如果无法创建目录,则还原操作失败。因此,如果您想使用InnoDBCREATE TABLE ... DATA DIRECTORY = ....bl.islcopy-backDATA DIRECTORY子句将表放在不同的位置或恢复到具有不同文件结构的服务器(其中无法创建相应的目录),.bl在恢复之前编辑文件以指向目标服务器上确实存在的目录。

如果文件指向的目标服务器上的目录 .bl已经包含.ibd 文件,--force则在恢复备份时需要该选项。

带时间戳的目录,例如 2011-05-26_13-42-02

--with-timestamp选项创建。所有备份文件都放在这个子目录中。

使用该--with-timestamp选项可以轻松地将多组备份数据保存在同一个主备份目录下。

datadir目录

存储原始 MySQL 实例中的数据文件和数据库子目录的子目录。

mysqlbackup在备份目录下创建。

二进制日志文件

来自服务器的二进制日志文件,默认情况下包含在备份中(使用 --use-tts选项创建备份时除外)。它们允许拍摄服务器的快照,因此可以将服务器克隆到它的确切状态。使用完整备份作为基础,增量备份中包含的二进制日志文件可用于时间点恢复 (PITR),它将数据库恢复到上次备份后某个时间点的状态完整备份。有关详细信息,请参见 第 5.3 节 “时间点恢复”

保存在datadir备份目录下的目录下。使用该 --skip-binlog选项在备份中排除二进制日志。对于MySQL 5.5及更早版本,以及所有离线备份,使用 --log-bin-index选项指定索引文件在MySQL服务器上的绝对路径,列出所有使用的二进制日志文件,如果与选项的默认值不同,对于 mysql 备份查找二进制日志文件并将它们包含在备份中。索引文件本身以及二进制日志文件的位置已正确更新以指向文件在备份目录中的位置,并包含在该 datadir目录下的备份中。

.bz当包含在压缩备份中时, 二进制日志文件被压缩并以扩展名保存 。

二进制日志文件和索引文件(如果包含在备份中)在还原操作期间始终被复制到还原服务器的数据目录中。使用--skip-binlog选项跳过二进制日志的恢复。

笔记
  • 如果您正在备份的服务器上缺少任何二进制日志文件,您应该使用该 --skip-binlog选项来避免mysqlbackup为丢失的文件抛出错误。

  • --use-tts如果使用选项或选项 ,则不会将二进制日志文件复制到增量备份 --start-lsn中。要包含增量备份所涵盖期间的二进制日志文件,请不要使用该--use-tts 选项,而应 --start-lsn使用该 选项,它为mysqlbackup--incremental-base 提供必要的信息,以确保上一次备份中包含的二进制日志数据之间不存在间隙和当前的增量备份。

中继日志文件

来自副本服务器的中继日志文件,默认情况下包含在副本服务器的备份中(使用--use-tts 选项创建备份时除外)。它们的包含节省了在恢复副本时从源获取中继日志所需的时间和资源。

保存在datadir备份目录下的目录下。使用该 --skip-relaylog选项在备份中排除中继日志。对于离线备份,使用--relay-log-index 选项指定索引文件在MySQL服务器上的绝对路径,列出所有使用的中继日志文件,如果与选项的默认值不同,则为mysqlbackup找到中继日志文件并将它们包含在备份中。索引文件本身以及中继日志文件的位置已正确更新以指向文件在备份目录中的位置,并包含在该datadir目录下的备份中。

.bz当包含在压缩备份中时, 中继日志文件被压缩并以扩展名保存 。

中继日志文件和索引文件(如果包含在备份中)在还原操作期间始终被复制到还原服务器的数据目录中。使用 --skip-relaylog选项跳过中继日志的恢复。

*.bz压缩的二进制日志或中继日志文件。

.bz当包含在压缩备份中时, 二进制日志和中继日志文件被压缩并以扩展名保存。它们在恢复过程中被解压缩。

复制元数据存储库文件通常命名为master.inforelay-log.info,它们默认包含在复制设置中的副本数据库备份中。有关详细信息,请参阅复制元数据存储库

保存在datadir备份目录下的目录下。对于脱机备份,使用--master-info-file--relaylog-info-file选项指定信息文件的绝对路径,如果它们与选项的默认值不同,mysqlbackup将查找这些文件并将它们包含在备份中。

使用该--skip-relay-log 选项时,在备份或恢复期间将跳过这些文件的复制。

备份图像文件

命令生成的单文件备份 backup-to-image,名称由 --backup-image选项指定。

如果您的备份数据目录仅包含零字节文件,并且在顶级目录中有一个巨大的数据文件,那么您有一个单文件备份。您可以在不丢失或损坏其中内容的情况下移动图像文件,然后使用 mysqlbackup选项解压缩它并使用该 extract选项指定相同的图像名称--backup-image 。虽然备份目录中存在一些额外的文件,例如 backup-my.cnfmeta子目录,但这些文件也包含在映像文件中,不需要随映像文件一起移动。

datadir目录下(即 下 ) 子目录中的任何其他文件 backup-dir/datadir/subdir

从 MySQL 数据目录下的数据库子目录复制。

默认情况下,MySQL 数据目录下子目录中的任何无法识别的文件都将复制到备份中。要省略此类文件,请指定该 --only-known-file-types 选项。

笔记

一些限制适用于此行为。请参阅附录 B中 的讨论 MySQL Enterprise Backup 的局限性

meta目录

一个子目录,用于存储包含有关备份的元数据的文件。

mysqlbackup在备份目录下创建。下面列出的所有文件都在meta子目录中。

backup_variables.txt

保存有关备份的重要信息。仅供 mysqlbackup使用。

mysqlbackup在初始备份后的操作期间查询并可能更新此文件,例如应用日志阶段或恢复阶段。

image_files.xml

backup-to-image包含由或 backup-dir-to-image选项 生成的单文件备份中存在的所有文件(自身除外)的列表 。有关此文件的详细信息,请参阅 第 11.4 节,“使用 MySQL 企业备份清单”

此文件一旦生成,在任何阶段都不会被修改。

backup_create.xml

列出创建备份的命令行参数和环境。有关此文件的详细信息,请参阅第 11.4 节,“使用 MySQL 企业备份清单”

该文件一旦创建就不会被修改。--disable-manifest您可以通过指定选项 来防止生成此文件 。

backup_content.xml

备份数据的文件和数据库定义的基本元数据。它还包含备份服务器上定义的所有插件的详细信息,用户应通过这些详细信息确保在目标服务器上以相同的方式定义相同的插件以进行恢复。有关此文件的详细信息,请参阅 第 11.4 节,“使用 MySQL 企业备份清单”

该文件一旦创建就不会被修改。--disable-manifest您可以通过指定选项 来防止生成此文件 。

comments.txt

--comments or--comments-file选项产生。

注释由您指定以记录此备份作业的目的或特殊注意事项。

backup_gtid_executed.sql

表示备份来自启用了 GTID 的服务器。

GTID 是 MySQL 5.6 及更高版本中的复制功能。有关详细信息,请参阅使用全局事务标识符进行复制。当您使用 mysqlbackup备份启用了 GTID 的服务器时,将在备份目录下的文件夹backup_gtid_executed.sql中创建名为 的文件。meta在副本服务器上恢复备份数据后编辑并执行该文件;有关详细信息,请参阅 第 6.1 节 “设置新副本”

server-my.cnf

包含设置为非默认值的备份服务器全局变量的值。使用此文件或server-all.cnf启动目标服务器进行恢复。

copy-backor copy-back-and-apply-log 操作期间, 如果命令通过命令选项对文件中的服务器存储库选项值(例如, --datadir、 等)进行更改,则会对其进行修改。--innodb_data_home_dir但是,在 apply-incremental-backup 操作期间,已保存在文件中的值优先,并且它们不会被通过命令提供的选项值修改。

警告

使用该文件重新启动目标服务器时,更改 、 等参数--tmpdir--general-log以及任何使用绝对文件路径的全局变量,以避免目标服务器意外使用错误的文件位置。

server-all.cnf

包含备份服务器的所有全局变量的值。使用此文件或 server-my.cnf启动目标服务器进行恢复。

copy-backor copy-back-and-apply-log 操作期间, 如果命令通过命令选项对文件中的服务器存储库选项值(例如, --datadir、 等)进行更改,则会对其进行修改。--innodb_data_home_dir但是,在 apply-incremental-backup 操作期间,已保存在文件中的值优先,并且它们不会被通过命令提供的选项值修改。

警告

使用该文件重新启动目标服务器时,更改 、 等参数--tmpdir--general-log以及任何使用绝对文件路径的全局变量,以避免目标服务器意外使用错误的文件位置。


InnoDB 数据

InnoDB 存储引擎管理的数据总是被备份的。备份的与 InnoDB 相关的主要数据文件包括 ibdata* 文件(代表系统表空间,可能代表一些用户表的数据),任何 .ibd 文件(包含来自使用 file-per-创建的用户表的数据)表设置启用),以及从 ib_logfile* 文件中提取的数据(表示备份运行时发生的更改的 重做日志信息),这些数据存储在一个新的备份文件 ibbackup_logfile中。

如果您使用压缩备份功能, .ibd文件将以压缩形式重命名为.ibz 文件

最初复制的文件形成 原始备份,需要进一步处理才能恢复。然后运行应用步骤,根据文件中记录的更改更新备份文件 ibbackup_logfile,生成 准备好的备份。此时,备份数据对应于单个时间点。这些文件现在已准备好恢复到它们的原始位置,或用于某些其他用途,例如测试、报告或部署为副本。

要将 InnoDB 表恢复到其原始状态,您还必须具有相应的.frm 文件以及备份数据。 否则,如果自备份以来有人运行 ALTER TABLE或语句,表定义可能会丢失或过时。DROP TABLE默认情况下, mysqlbackup在备份操作期间自动复制 .frm文件并在恢复操作期间恢复文件。

来自 MyISAM 和其他存储引擎的数据

mysqlbackup还备份 与 MyISAM 表关联的.MYD 文件 .MYI 文件.frm文件。备份的具有其他扩展名的文件显示在此列表中

笔记

虽然 MySQL Enterprise Backup 可以备份非 InnoDB 数据(如 MYISAM 表),但要备份的 MySQL 服务器必须支持 InnoDB(即,如果服务器使用 --innodb=OFF--skip-innodb 选项启动,备份过程将失败),并且服务器必须包含至少一个 InnoDB 表。

MyISAM 表和这些其他类型的文件不能以与 InnoDB 表相同的非阻塞方式备份。它们使用热备份 技术进行备份:在备份这些表时会阻止更改这些表,这可能会使数据库暂时无响应,但在备份期间不需要关闭。

笔记

为避免繁忙数据库备份期间出现并发问题,您可以使用--only-innodb--only-innodb-with-frm选项仅备份 InnoDB 表和相关数据。

生成的文件包含在备份中

备份数据包括一些在备份过程中产生的新文件。这些文件用于控制以后的任务,例如验证和恢复备份数据。备份过程中生成的文件包括:

  • meta/backup_create.xml:列出创建备份的命令行参数和环境。

  • meta/backup_content.xml:备份数据的文件和数据库定义的基本元数据。

  • backup-my.cnf:记录应用于备份的关键配置参数。这些配置参数由 mysqlbackupapply-log确定备份数据的结构等操作期间读取。在还原操作期间还会检查这些参数是否与目标服务器的配置兼容。

  • server-my.cnf:包含设置为非默认值的备份服务器全局变量的值。

  • server-all.cnf:包含备份服务器的所有全局变量的值。

有关备份目录中所有文件的详细信息,请参阅 表 1.1 “MySQL 企业备份输出目录中的文件”

单文件备份

根据您的工作流程,您可能希望执行单个文件备份而不是目录备份,目录备份会为原始服务器实例上的每个文件生成一个单独的文件。单个文件备份更容易传输到不同的系统、压缩和解压缩;它还有助于防止错误删除构成备份一部分的单个文件的情况。完全还原与多文件备份一样快;恢复单个文件可能比在多文件备份中慢。有关说明,请参阅 第 4.3.5 节 “制作单个文件备份”