默认情况下,data目录下的数据库子目录下的所有文件都包含在备份中,因此备份包括来自所有MySQL存储引擎、任何第三方存储引擎、甚至该目录下的任何非数据库文件的数据。本节解释可用于有选择地备份或排除数据的选项。
用MySQL企业备份创建不同类型的部分备份有多种方法:
通过名称包含或排除特定的表。这使用
——包括表格
或——排除表
选择。方法指定的正则表达式对每个表进行检查
——包括表格
或——排除表
选择。如果正则表达式匹配表的完全限定名(以db_name.table_name)
,在备份时包含或排除该表。中指定的扩展形式POSIX1003.2标准。这些选项是用RE2正则表达式库实现的。包括部分或所有InnoDB表,但不包括其他表类型。这使用
——only-innodb
选择。省略MySQL数据目录中存在但实际上不属于MySQL实例的文件。这使用
——only-known-file-types
选择。通过使用上述选项的组合来实现多个选择效果。
备份选择的InnoDB表移动式表空间(TTS).这使用
——use-tts
和——包括表格
或——排除表
(或两者)的选择。
有关所涉及的所有选项的语法细节,请参见第20.8节“部分备份和恢复选项”.
通常,部分备份比完全备份更难恢复,因为备份数据可能不包括组成完整MySQL实例所需的相关部分。特别地,InnoDB表的内部id和其他数据值只能恢复到同一个实例,而不能恢复到不同的MySQL服务器。始终对任何部分备份的恢复过程进行全面测试,以了解相关的过程和限制。
以下是部分备份的一些命令示例。
包括所有名称以。开头的表”电磁脉冲”备份:
mysqlbackup \——host=localhost——user=mysqluser——protocol=TCP——port=3306 \——backup-dir=$MEB_TEMP_BACKUP_DIR——backup-image=$MEB_BACKUPS_DIR/my。mbi \ \——包括表格=”。emp " \ backup-to-image
的表之外的所有表的备份”mysql”而且”performance_schema”数据库:
mysqlbackup \——host=localhost——user=mysqluser——protocol=TCP——port=3306 \——backup-dir=$MEB_TEMP_BACKUP_DIR——backup-image=$MEB_BACKUPS_DIR/my。mbi \——排除表= " ^ (mysql | performance_schema) \”。\ backup-to-image
中所有表的备份”销售”数据库,但排除具有名称的表”硬件”
mysqlbackup \——host=localhost——user=mysqluser——protocol=TCP——port=3306 \——backup-dir=$MEB_TEMP_BACKUP_DIR——backup-image=$MEB_BACKUPS_DIR/my。mbi \——包括表格= " ^销售\”。——排除表= " ^ \销售。硬件$" \ backup-to-image
中所有表的备份”销售代表”数据库,但排除具有名称的表”欧亚大陆”(部分备份选项支持空格或破折号等特殊字符):
mysqlbackup \——host=localhost——user=mysqluser——protocol=TCP——port=3306 \——backup-dir=$MEB_TEMP_BACKUP_DIR——backup-image=$MEB_BACKUPS_DIR/my。Mbi \——include-tables="^销售代表\."销售代表——排除表= " ^ \。欧亚大陆“\ backup-to-image
备份所有InnoDB表:
mysqlbackup \——host=localhost——user=mysqluser——protocol=TCP——port=3306 \——backup-dir=$MEB_TEMP_BACKUP_DIR——backup-image=$MEB_BACKUPS_DIR/my。Mbi \——only-innodb \备份到映像
你也可以压缩以及通过使用适当的命令选项进行其他类型的选择性备份。
使用遗留选项进行部分备份(已弃用)
通常,部分备份比完全备份更难恢复,因为备份数据可能不包括组成完整MySQL实例所需的相关部分。特别地,InnoDB表的内部id和其他数据值只能恢复到同一个实例,而不能恢复到不同的MySQL服务器。始终对任何部分备份的恢复过程进行全面测试,以了解相关的过程和限制。
与它的——包括
选项,mysqlbackup可以备份一些InnoDB表,但不包括其他表:
的部分备份
——包括
选项总是包含InnoDB系统表空间和它里面的所有表。对于存储在system表空间之外的InnoDB表,部分备份只包含那些名称与指定的正则表达式相匹配的表
——包括
选择。
该操作要求未存储的表单独存储
文件。要将一个InnoDB表放在系统表空间之外,需要在table_name
.ibdinnodb_file_per_table
MySQL配置选项已启用。每一个.ibd
File只保存一个表的数据和索引。
创建的那些InnoDB表innodb_file_per_table
都像往常一样存储在InnoDB中系统表空间,并且不能被排除在备份之外。
对于每个具有表数据文件的表,一个表单字符串db_name.table_name
是否根据用——包括
选择。如果正则表达式匹配完整的字符串db_name.table_name
,该表包含在备份中。中指定的扩展形式POSIX1003.2标准。在类unix系统上,适当地引用正则表达式以防止shell元字符的解释。该特性是通过RE2正则表达式库实现的。
生成的备份目录包含备份日志文件和InnoDB数据文件的副本。
重要的是:由于InnoDB系统表空间保存了一个实例中所有数据库的InnoDB表的元数据,在包含其他数据库的服务器上恢复部分备份可能会导致系统失去对其他数据库中的InnoDB表的跟踪。总是在一个新的MySQL服务器实例上恢复部分备份,而不保留任何其他InnoDB表。
例4.22对InnoDB表进行未压缩部分备份
在这个例子中,我们已经配置了MySQL,这样一些InnoDB表就有了自己的表空间。我们做了部分备份,只包括那些InnoDB表测验
名称以。开头的数据库ib
.的数据库目录的内容测验
数据库如下所示。这10张表中有6张(alex1
,alex2
,alex3
,blobt3
,ibstest0
,ibstest09
)存储在每个表的数据文件中(.ibd
文件)。
$ ls /sqldata/mts/test alex2。ibd ibstest0。ibd alex1。ibd blobt3.ibd alex3.ibd ibtest09.ibd
我们运行mysqlbackup与——包括
选择:
备份一些InnoDB表。$ mysqlbackup——defaults-file=/home/dbadmin/my.cnf——include="^test\.ib. "*”备份# Contents in the backup directory's subdirectory for the test database: $ ls /sqldata-backup/test ibstest0.ibd ibtest09.ibd
的备份目录的子目录测验
的备份ibstest0
而且ibtest09
因为其他InnoDB表不匹配include模式^ \ .ib测试。*
.
例4.23进行压缩的部分备份
我们已经配置了MySQL,这样每个InnoDB表都有自己的表空间。我们做了部分备份,只包括那些名称以。开头的InnoDB表亚历克斯
或团
.的数据库目录的内容测验
数据库如下所示。
$ ls /sqldata/mts/test alex2。ibd ibstest0。ibd alex1。ibd blobt3.ibd alex3.ibd ibtest09.ibd
$ mysqlbackup——defaults-file=/home/dbadmin/my.cnf——compress \——include=".*\.(alex|blob)。*”备份
数据库的备份目录测验
如下所示。的.ibz
文件是压缩的表数据文件。
$ ls /sqldata-backup/test alex1. sqlibz alex2。ibz alex3。ibz blobt3.ibz