方便的创建部分备份,备份MySQL企业引入了两个新的选项部分备份自3.10版本:——包括表格
和——排除表
。新的选项是用于替换旧的选项——包括
,——数据库
,——databases-list-file
,——only-innodb-with-frm
不兼容的新选项和即将到来的版本中被弃用。在下面的讨论中我们假设新选项用于部分备份。供参考的目的,我们年龄的包括信息选项在本小节的末尾部分备份与遗留选项。
默认情况下,所有数据库数据目录中的子目录下的文件都包含在备份,以便备份包括数据从所有MySQL存储引擎,任何第三方存储引擎,甚至任何非数据库文件的目录。本节解释选项可用于有选择地备份或排除数据。
有各种各样的方法来创建不同的部分备份MySQL企业备份:
包括或排除特定的表的名称。这使用
——包括表格
或——排除表
选择。每个表检查与指定的正则表达式
——包括表格
或——排除表
选择。如果正则表达式匹配表的完全限定名称(的形式db_name.table_name)
表是包含或排除的备份。使用的正则表达式语法是指定的扩展形式POSIX1003.2标准。RE2公司的选项已经实现正则表达式库。包括一些或所有InnoDB表,而不是其他类型的表。这使用
——only-innodb
选择。离开了MySQL数据目录中的文件存在但不是实际上MySQL实例的一部分。这使用
——only-known-file-types
选择。实现多个选择的影响通过使用上述选项的组合。
备份选择使用InnoDB表移动式表空间(TTS)。这使用
——use-tts
和——包括表格
或——排除表
(或两者)的选择。
对涉及到的所有选项语法细节,明白了15.8节,“部分备份和恢复选项”。
通常情况下,部分备份更难恢复完全备份,因为备份数据可能不包括必要的相关部分构成一个完整的MySQL实例。特别是,InnoDB表内部id和其他数据值,只能恢复到相同的实例,而不是不同的MySQL服务器。总是全面测试任何部分备份的恢复过程了解相关程序和限制。
因为InnoDB系统表空间包含关于InnoDB表中的所有数据库元数据实例,恢复部分备份服务器上,包括其他数据库可能导致系统失去联系InnoDB的其他数据库中的表。总是恢复部分备份在一个新鲜的MySQL服务器实例没有任何其他你想要保存的InnoDB表。
以下是一些命令样本部分备份。
包括所有表的名字开始”电磁脉冲”备份:
mysqlbackup \——主机=主机用户= mysqluser——协议= TCP端口= 3306 \——backup-dir = $ MEB_TEMP_BACKUP_DIR备份映像= $ MEB_BACKUPS_DIR /我。mbi \ \——包括表格=”。emp " \ backup-to-image
把备份的所有表除了表”mysql”和”performance_schema”数据库:
mysqlbackup \——主机=主机用户= mysqluser——协议= TCP端口= 3306 \——backup-dir = $ MEB_TEMP_BACKUP_DIR备份映像= $ MEB_BACKUPS_DIR /我。mbi \——排除表= " ^ (mysql | performance_schema) \”。\ backup-to-image
所有表的备份”销售”数据库,但是不包括的表的名称”硬件”
mysqlbackup \——主机=主机用户= mysqluser——协议= TCP端口= 3306 \——-backup-dir = $ MEB_TEMP_BACKUP_DIR备份映像= $ MEB_BACKUPS_DIR /我。mbi \——包括表格= " ^销售\”。——排除表="^sales\.hardware$" \ backup-to-image
所有表的备份”销售代表”数据库,但是不包括的表的名称”欧亚大陆”(特殊字符空格或破折号等部分支持的备份选项自发布3.12.1):
mysqlbackup \——主机=主机用户= mysqluser——协议= TCP端口= 3306 \——backup-dir = $ MEB_TEMP_BACKUP_DIR备份映像= $ MEB_BACKUPS_DIR /我。mbi \——包括表格= " ^销售代表\”。——排除表="^sales reps\.euro-asia" \ backup-to-image
备份所有InnoDB表,但是没有.frm
文件:
mysqlbackup————defaults-file = / home / dbadmin / my . cnf中所做only-innodb backup-to-image
你也可以做压缩和其他类型的选择性备份通过使用适当的命令选项。
与遗留部分备份选项
本节中的信息仅供使用遗留的选项——包括
,——数据库
,——databases-list-file
,——only-innodb-with-frm
即将到来的问题,这将被弃用。用于创建部分备份,强烈建议的新选项——包括表格
和——排除表
而不是使用。注意,不能将遗留和新部分备份选项在一个单一的命令。
MySQL企业备份可以使不同类型的部分备份使用遗留部分备份选项:
包括某些InnoDB表而不是其他人的。这个操作涉及到
——包括
,——only-innodb
,——only-innodb-with-frm
选项。包括某些non-InnoDB从选定的数据库表。这个操作涉及到
——数据库
和——databases-list-file
选项。
在所有这些选项的语法细节,请参阅遗留部分备份选项。
通常情况下,部分备份更难恢复完全备份,因为备份数据可能不包括必要的相关部分构成一个完整的MySQL实例。特别是,InnoDB表内部id和其他数据值,只能恢复到相同的实例,而不是不同的MySQL服务器。总是全面测试任何部分备份的恢复过程了解相关程序和限制。
与它的——包括
选项,mysqlbackup可以做一个备份,包括一些InnoDB表而不是其他人:
部分备份的
——包括
选择总是包含InnoDB系统表空间和里面所有的表。InnoDB表存储在系统表空间,部分备份只包含那些表的名字与指定的正则表达式匹配
——包括
选择。
这个操作需要被排除存储在单独的表
文件。InnoDB表在系统表空间,而创建它table_name
.ibdinnodb_file_per_table
MySQL配置选项启用。每一个.ibd
文件只包含一个表的数据和索引。
创建这些InnoDB表innodb_file_per_table
关闭InnoDB存储像往常一样系统表空间,不能排除在备份。
为每个表与表数据文件的字符串形式db_name.table_name
针对与指定的正则表达式检查吗——包括
选择。如果正则表达式匹配整个字符串db_name.table_name
表是包含在备份。使用的正则表达式语法是指定的扩展形式POSIX1003.2标准。在类unix系统中,引用适当的正则表达式来防止shell元字符的解释。这个功能已经实现了RE2公司正则表达式库。
产生的备份目录包含一个InnoDB备份日志文件和复制数据文件。
重要的是:虽然mysqlbackup支持部分备份,恢复一个数据库从部分备份时要小心。mysqlbackup副本也.frm
文件的表不包括在备份,除了当你部分备份使用,例如,——数据库
选择。如果你使用mysqlbackup与——包括
选项,在恢复数据库之前,删除从备份数据.frm
文件不包括在备份的任何表。
重要的是:因为InnoDB系统表空间包含关于InnoDB表中的所有数据库元数据实例,恢复部分备份服务器上,包括其他数据库可能导致系统失去联系的InnoDB表在其他数据库。总是恢复部分备份在一个新鲜的MySQL服务器实例没有任何其他你想要保存的InnoDB表。
的——only-innodb
和——only-innodb-with-frm
选择备份InnoDB表,跳过其他的存储引擎。你也可以一起使用它们——包括
InnoDB表的选项使选择性备份而排除其他存储引擎创建的所有其他文件。
示例4.23做一个未压缩的部分备份InnoDB表
在这个例子中,我们已经配置了MySQL这样一些InnoDB表有自己的表空间。我们做部分只包括那些InnoDB备份表测试
数据库的名字开始ib
。数据库目录的内容测试
数据库如下所示。目录包含一个MySQL描述文件(.frm
为每个表(文件)alex1
,alex2
,alex3
,blobt3
,ibstest0
,ibstest09
,ibtest11a, ibtest11b
,ibtest11c
,ibtest11d
在数据库中)。这10个表6 (alex1
,alex2
,alex3
,blobt3
,ibstest0
,ibstest09
)存储在表数据文件(.ibd
文件)。
$ ls / sql数据/ mts /测试alex1.frm alex2。ibd blobt3.frm ibstest0。ibd ibtest11a.frm ibtest11d.frm alex1.ibd alex3.frm blobt3.ibd ibtest09.frm ibtest11b.frm alex2.frm alex3.ibd ibstest0.frm ibtest09.ibd ibtest11c.frm
我们运行mysqlbackup与——包括
选择:
#备份一些InnoDB表而不是任何.frm文件。mysqlbackup美元——defaults-file——包括= = / home / dbadmin / my . cnf中所做”^ \ .ib测试。*”——only-innodb备份…很多行输出……mysqlbackup:扫描日志lsn 2666737471。mysqlbackup:能够解析日志lsn 2666737471。mysqlbackup:日志记录的最大页码0 101208 17:17:45 mysqlbackup:完全备份完成!#备份一些.frm InnoDB表和文件的备份表。mysqlbackup美元——defaults-file——包括= = / home / dbadmin / my . cnf中所做”^ \ .ib测试。*“\——only-innodb-with-frm =相关备份…很多行输出……mysqlbackup:扫描日志lsn 2666737471。mysqlbackup:能够解析日志lsn 2666737471。mysqlbackup:日志记录的最大页码0 101208 17:17:45 mysqlbackup:完全备份完成!
备份目录只包含备份ibstest
和ibtest09
表。其他InnoDB表不匹配包括模式^ \ .ib测试。*
。不过,请注意,表ibtest11a
,ibtest11b
,ibtest11c
,ibtest11d
在备份,即使他们在如下所示的目录是不可见的,因为他们是存储在系统表空间(ibdata1
总是包括在备份文件)。
#——only-innodb选项:$ ls / sqldata-backup ibstest0 /测试。ibd ibtest09.ibd# With the --only-innodb-with-frm=related option: $ ls /sqldata-backup/test ibstest0.frm ibtest09.frm ibstest0.ibd ibtest09.ibd
示例4.24压缩部分备份
我们已经配置了MySQL,这样每个InnoDB表有自己的表空间。我们做部分备份只包括那些InnoDB表的名字开始亚历克斯
或团
。数据库目录的内容测试
数据库如下所示。
$ ls / sql数据/ mts /测试alex1.frm alex2。ibd blobt3.frm ibstest0。ibd ibtest11a.frm ibtest11d.frm alex1.ibd alex3.frm blobt3.ibd ibtest09.frm ibtest11b.frm alex2.frm alex3.ibd ibstest0.frm ibtest09.ibd ibtest11c.frm
mysqlbackup美元——defaults-file = / home / dbadmin——压缩\ / my . cnf中所做包括= " . * \ (alex | blob)。*”——only-innodb备份…很多行输出……mysqlbackup:扫描日志lsn 2666737471。mysqlbackup:能够解析日志lsn 2666737471。mysqlbackup:日志记录0 mysqlbackup最大页码:147 MB的数据文件压缩到15 MB(压缩89%)。101208年17:18:04 mysqlbackup:完全备份完成!
数据库的备份目录测试
如下所示。的.ibz
文件压缩表数据文件。
$ ls / sqldata-backup alex1 /测试。ibz alex2。ibz alex3。ibz blobt3.ibz
的——数据库
和——databases-list-file
选项的mysqlbackup让你备份non-InnoDB表只从选定的数据库,而不是在整个MySQL实例。(过滤InnoDB表使用——包括
选项。)与——数据库
你指定一个数据库名称空格分隔的列表,与整个列表包含在双引号。与——databases-list-file
,您指定路径的文件包含数据库名称的列表,每行一个。
可以将部分或全部数据库的名称限定表名,只备份选择non-InnoDB表的数据库。
如果指定这个选项,确保你包括相同的数据库为每个备份集(尤其是增量备份),这样你不恢复过时版本的任何数据库。