14.8 部分备份和恢复选项

笔记

从 MySQL Enterprise Backup 3.10 开始,引入了这两个 --include-tables选项 --exclude-tables。这些旨在替换、 、 和 的旧选项--include, 它们与新选项不兼容,将在未来版本中弃用。出于参考目的,我们在旧版部分备份选项的本节末尾包含了有关旧选项的信息 。 --databases--databases-list-file--only-innodb-with-frm

要选择要备份或还原的特定数据,请使用本节中描述的部分备份和还原选项。

有关以下选项的部分备份和用法示例的概述,请参阅第 4.3.4 节,“进行部分备份”。另请参阅 第 5.2.4 节,“恢复使用该--use-tts 选项创建的备份”,了解从备份中选择性恢复表。

  • --include-tables=REGEXP

    命令行格式 --include-tables=REGEXP
    类型 细绳

    仅包括那些完全限定名称(以 的形式 )与正则表达式匹配的 表(包括 Innodb 和非 Innodb)以进行备份或恢复。使用的正则表达式语法是 POSIX 1003.2 标准中指定的扩展形式。例如, 匹配 数据库中的表和。在类 Unix 系统上,适当地引用正则表达式以防止解释 shell 元字符。 当使用选项时没有提供正则表达式时, mysqlbackup会抛出错误。 db_name.table_nameREGEXP--include-tables=^mydb\.t[12]$t1t2mydb

    虽然mysqlbackup理解通过反引号引用数据库或表名(或两者)的 MySQL 约定(请参阅架构对象名称),但无需在正则表达式中包含反引号--include-tables

    虽然该选项可用于不同类型的备份,但选择性还原仅支持使用可 传输表空间 (TTS)创建的备份(即使用该 --use-tts选项创建的备份)。该选项还可以与 backup-dir-to-imageimage-to-backup-dir命令一起使用,以在创建或解压缩备份映像时选择表。

    该选项不能与 legacy --include--databases--databases-list-file--only-innodb-with-frm选项一起使用。

    当与 --exclude-tables选项 一起使用时,--include-tables首先应用,这意味着mysqlbackup首先选择由指定的所有表 --include-tables,然后从集合中排除由指定的那些表 --exclude-tables

  • --exclude-tables=REGEXP

    命令行格式 --exclude-tables=REGEXP
    类型 细绳

    排除备份或恢复所有表(包括 Innodb 和非 Innodb),其完全限定名称(以 的形式 )与正则表达式匹配 。正则表达式语法是 POSIX 1003.2 标准中指定的扩展形式。例如, 匹配 数据库中的表和。在类 Unix 系统上,适当地引用正则表达式以防止解释 shell 元字符。 当使用选项时没有提供正则表达式时, mysqlbackup会抛出错误。 db_name.table_nameREGEXP--exclude-tables=^mydb\.t[12]$t1t2mydb

    虽然mysqlbackup理解通过反引号引用数据库或表名(或两者)的 MySQL 约定(请参阅架构对象名称),但无需在正则表达式中包含反引号--exclude-tables

    虽然该选项可用于不同类型的备份,但选择性还原仅支持使用可 传输表空间 (TTS)创建的备份(即使用该 --use-tts选项创建的备份)。该选项还可以与 backup-dir-to-imageimage-to-backup-dir命令一起使用,以在创建或解压缩备份映像时选择表。

    该选项不能与 --include--databases--databases-list-file--only-innodb-with-frm选项一起使用。

    当与 --include-tables选项 一起使用时,--include-tables首先应用,意思是mysqlbackup首先选择由指定的所有表 --include-tables,然后从集合中排除由指定的那些表 --exclude-tables

  • --only-known-file-types

    仅供备份。默认情况下,服务器数据目录下的数据库子目录中的所有文件都包含在备份中(详见 第 1.4 节“备份的文件”)。如果 --only-known-file-types指定该选项,mysqlbackup只备份那些类型的文件,这些文件是 MySQL 或其内置存储引擎的数据文件,除了这些 ibdata*文件外,还具有以下扩展名:

    • .ARM: ARCHIVE 表元数据

    • .ARZ: ARCHIVE 表数据

    • .CSM: CSV 表元数据

    • .CSV: CSV表格数据

    • .frm: 表定义

    • .ibd: InnoDB 表空间使用 file-per-table 模式创建

    • .MRG:合并存储引擎对其他表的引用

    • .MYD: MyISAM 数据

    • .MYI: MyISAM 索引

    • .opt: 数据库配置信息

    • .par: 分区定义

    • .TRG:触发​​参数

    • .TRN: 触发命名空间信息

  • --only-innodb

    仅供备份。使用此选项时,备份中仅包括 InnoDB 数据和日志文件,而排除其他存储引擎创建的所有文件。通常在不允许连接到mysqld或不需要复制 MyISAM 文件时使用。

    该选项与选项不兼容 --slave-info

  • --use-tts[={ with-minimum-locking|with-full-locking}]

    命令行格式 --use-tts[={with-minimum-locking|with-full-locking}]
    类型 枚举
    默认值 with-minimum-locking
    有效值

    with-minimum-locking

    with-full-locking

    使用可传输表空间 (TTS) 启用 InnoDB 表的选择性备份 。这将与--include-tables--exclude-tables选项结合使用,以选择要由正则表达式备份的 InnoDB 表。使用 TTS进行备份具有以下优势:

    • 备份可以恢复到不同的服务器

    • 不备份 系统表空间 ,节省磁盘空间和I/O资源

    • 表的数据一致性由 MySQL Enterprise Backup 管理

    但是,该选项具有以下限制:

    • 仅支持 MySQL 5.6 及之后版本(因为早期版本的 MySQL 不支持 TTS

    • 只能备份存储在它们自己的单独表空间中的表(即, 启用innodb_file_per_table 选项创建的表)

    • 不备份非 InnoDB 表

    • 无法备份分区表

    • 不能用于增量备份

    • 备份中不包括二进制日志或中继日志

    另请参阅附录 B,MySQL Enterprise Backup的局限性了解一些更小的局限性。

    该选项有两个可能的值:

    • with-minimum-locking:热备份选中的表,然后将表锁定为只读模式,同时 备份redo log(仅包含热备份后相关更改的部分)。在锁定阶段创建的任何表都将被忽略。

    • with-full-locking:选中的表在备份时被锁定为只读模式。重做日志不包含在备份中。 在锁定阶段创建的任何表都将被忽略。

      笔记

      由于一个已知问题,当使用 TTS 为包含 Antelope 和 Barracuda 文件格式混合的表的服务器创建备份时,不要对表应用完全锁定。

    默认:with-minimum-locking

    要使用该--use-tts选项, mysqlbackup连接到服务器的用户需要额外的权限;有关详细信息,请参阅 第 4.1.2 节,“将 MySQL 权限授予备份管理员”

    --use-tts 恢复使用该选项 创建的备份有一些特殊要求;有关详细信息,请参阅第 5.2.4 节 “恢复使用该 选项创建的备份--use-tts” 。

  • --rename= old_table_namenew_table_name

    --include-tables当或 --exclude-tables选项(或两者一起)选择要从使用该--use-tts选项创建的备份恢复到数据库 时,重命名单个表 。名为 的表重命名old_table_namenew_table_name。请注意,使用该选项时:

    有关选择性恢复的更多信息以及表重命名的示例, 请参阅第 5.2.4 节,“恢复使用该 选项创建的备份”。--use-tts

传统的部分备份选项

重要的

本小节中的信息仅适用于使用、 、 和 的遗留选项--include, 这些选项将在下一期中弃用。对于创建部分备份,强烈建议 改用和 的新选项。请注意,您不能在单个命令中组合旧的和新的部分备份选项。 --databases--databases-list-file--only-innodb-with-frm--include-tables--exclude-tables

除了遗留选项之外,下面还讨论了一些其他选项,但该信息仅用于将这些选项与遗留部分备份选项一起使用。

有关这些旧选项的部分备份和使用示例的概述,请参阅使用旧选项进行部分备份

  • --include=REGEXP

    此选项用于过滤 InnoDB 表以进行备份。根据选项指定的正则表达式检查 InnoDB 表的完全限定名称。如果 REGEXP 匹配 ,则包含该表。使用的正则表达式语法是 POSIX 1003.2 标准中指定的扩展形式。例如, 匹配数据库 中的表和 。当使用选项时没有提供正则表达式时, mysqlbackup 会抛出错误。 db_name.table_name--include=mydb\.t[12]t1t2mydb

    此选项仅适用于在 innodb_file_per_table启用 MySQL 选项(这是 MySQL 5.6 及更高版本的默认设置)的情况下创建的 InnoDB 表,在这种情况下,表位于单独的文件中,可以包含在备份中或从备份中排除。InnoDB 系统表空间中的所有表总是被备份。

    当没有 InnoDB 表名与指定的正则表达式匹配时,将抛出一条错误消息,指示没有匹配项。

    默认值:备份所有 InnoDB 表。

    笔记

    此选项不过滤非 InnoDB 表,可以使用 --databases和 之类的选项。--databases-list-file

    重要的

    该选项不过滤.frm 与 InnoDB 表关联的文件,这意味着无论该选项的值如何, .frm所有 InnoDB 表的所有文件总是被备份,除非它们被其他选项排除。在恢复数据库备份之前,应删除那些.frm未备份的 InnoDB 表文件。有关详细信息,请参阅 使用旧版选项进行部分备份。

  • --databases=LIST

    指定要备份的非 InnoDB 表的列表。该参数指定以下形式的以空格分隔的数据库或表名称列表:

    "db_name[.table_name] db_name1[.table_name1] ...".

    如果指定的值与任何数据库或表都不匹配,则不会备份任何非 InnoDB 数据文件。有关详细信息,请参阅 使用旧版选项进行部分备份。

    默认情况下,备份所有数据库中的所有非 InnoDB 表。

    笔记

    .ibd该选项对其指定的数据库或表 的 InnoDB 数据文件 (files) 没有过滤效果。要过滤 InnoDB 数据文件,请改用该--include选项。

  • --databases-list-file=PATH

    指定列出要备份的非 InnoDB 表的文件的路径名。该文件包含数据库条目或由换行符或空格分隔的完全限定表名。条目的格式与选项的格式相同--databases

       db_name[.table_name]
       db_name1[.table_name1]
       ...

    删除数据库或表名称周围的所有空格,因为不会自动删除空格。#以包含注释的字符开始一行。不允许使用正则表达式。

    如果指定的条目与任何数据库或表都不匹配,则不会备份任何非 InnoDB 数据文件。

    笔记

    .ibd该选项对其指定的数据库或表 的 InnoDB 数据文件 (files) 没有过滤效果。要过滤 InnoDB 数据文件,请改用该--include选项。

  • --only-innodb-with-frm[={all|related}]

    仅备份 InnoDB 数据、日志文件和 .frm与 InnoDB 表关联的文件。

    • --only-innodb-with-frm=all包括.frm备份中所有 InnoDB 表的文件。

    • --only-innodb-with-frm=related,结合 --include选项,只复制.frm部分备份中包含的表的文件。

    • --only-innodb-with-frm没有参数与 --only-innodb-with-frm=related.

    笔记

    对于增量备份,即使只备份更改 .ibd的文件, 也包括.frm所有指定的 InnoDB 表关联的文件。

    此选项使您不必为 InnoDB 文件编写备份步骤的脚本,这通常是在服务器被 语句.frm置于只读状态时执行的。FLUSH TABLES WITH READ LOCK复制文件时不会将.frm服务器置于只读状态,因此备份操作是真正的 热备份,不会中断数据库处理。您必须确保在备份过程中没有 ALTER TABLE或其他 DDL 语句更改.frmInnoDB 表的文件。如果 mysqlbackup检测到任何相关的更改.frm备份操作期间的文件,它会因错误而停止。如果在备份操作期间禁止 InnoDB 表上的 DDL 不切实际,请改用该--only-innodb选项并使用在 .frm服务器锁定时复制文件的传统方法。

    排除由其他存储引擎创建的所有文件。通常在不允许连接到 mysqld或不需要复制 MyISAM 文件时使用,例如,当您确定备份期间没有 DDL 更改时。有关说明和示例, 请参阅 使用旧版选项进行部分备份。

    该选项与选项不兼容 --slave-info

    默认值:备份包括来自所有存储引擎的文件。

    • --use-tts[={ with-minimum-locking|with-full-locking}]

      使用可传输表空间 (TTS) 启用 InnoDB 表的选择性备份 。这将与选项结合使用,该 --include选项选择要由正则表达式备份的 InnoDB 表。使用 TTS 进行备份具有以下优势:

      • 备份可以恢复到不同的服务器

      • 不备份 系统表空间 , 节省磁盘空间和I/O资源

      • 表的数据一致性由 MySQL Enterprise Backup 管理

      请参阅此处有关使用该 --use-tts选项 的限制的 重要讨论 。

      该选项有两个可能的值:

      • with-minimum-locking:热备份选中的表,然后将表锁定为只读模式,同时备份redo log(仅包含热备份后相关更改的部分)。在锁定阶段创建的任何表都将被忽略。

      • with-full-locking:选中的表在备份时被锁定为只读模式。重做日志不包含在备份中。 在锁定阶段创建的任何表都将被忽略。

      默认值:以最小锁定备份

      --use-tts恢复使用该选项 创建的备份有一些特殊要求 ;有关详细信息,请参阅 第 5.2 节“执行还原操作”中 的说明