本章重点介绍 MySQL Enterprise Backup 8.0 中的新功能,以及随着本系列的发布对 MySQL Enterprise Backup 所做的任何重大更改。
不再支持离线备份。将旧的
--no-connection
和--connect-if-online
选项与 MySQL Enterprise Backup 一起使用将导致错误。 进行备份时,必须向 MySQL Enterprise Backup 提供正确的 连接选项。脱机备份期间使用的以下选项也已删除:--innodb_data_file_path
--innodb_log_files_in_group
--innodb_log_file_size
--innodb_page_size
--innodb_checksum_algorithm
--keyring_file_data
--keyring_okv_conf_dir
--relay-log-info-file
--master-info-file
--backup_innodb_log_files_in_group
--backup_innodb_log_file_size
--backup_innodb_undo_tablespaces
--backup_innodb_undo_logs
--backup_innodb_page_size
--backup_innodb_checksum_algorithm
备份服务器的二进制日志,而不是总是恢复到目标服务器上的数据目录,现在默认恢复到它在备份服务器上找到的相同位置。它还可以恢复到使用新
--log-bin
选项指定的不同位置。备份副本服务器的中继日志,而不是总是恢复到目标副本服务器上的数据目录,现在默认恢复到它在备份副本服务器上找到的相同位置。它还可以恢复到使用新
--relay-log
选项指定的不同位置。文件现在以 JSON 格式跟踪用于备份或恢复的外部表空间信息。有关详细信息,请 参见表 1.1 “备份中的文件类型”中tablespace_tracker 的描述。
新选项
--tls-version
指定mysqlbackup允许加密连接到 MySQL 服务器的协议。MySQL Enterprise Backup 4.1 中已弃用 的选项
--ssl
和 现在已被删除。--ssl-verify-server-cert
请改用该--ssl-mode
选项来配置与服务器的连接的安全模式。HTTP 基本身份验证和非分块传输现在支持使用 OpenStack Swift 兼容的对象存储服务进行备份和恢复。有关详细信息,请参阅 第 20.15 节,“云存储选项”。
现在可以使用新
cloud-buffer-size
选项指定云传输的缓冲区大小。有关详细信息,请参阅第 20.15 节,“云存储选项”。现在支持 服务器使用 keyring_encrypted_file 和 keyring_aws插件。此外,无论服务器上使用的密钥环插件类型如何,密钥环数据现在都存储在加密文件的备份中。有关详细信息,请参阅 第 6 章,使用加密的 InnoDB 表空间。
mysqlbackup
--secure-auth
不再支持自 MySQL 5.7.5 后弃用 的服务器选项。该
backup_history
表现在包含一个server_uuid
列,该列存储server_uuid
备份服务器的值。由于MySQL Enterprise Backup 8.0的新特性和新功能,mysqlbackup连接到MySQL Server的用户现在需要更多的权限。有关详细信息,请参阅第 4.1.2 节,“将 MySQL 权限授予备份管理员”。
对于 MySQL Enterprise Backup 8.0.12 及更高版本:
使用组复制设置时,mysqlbackup现在通过确保 在每次mysqlbackup 操作
backup_history
后在主节点上更新表,使备份历史对服务器组的所有成员可用。有关详细信息,请参阅第 9 章,将 MySQL Enterprise Backup 与 Group Replication 结合使用,包括mysqlbackup连接到服务器的新用户权限要求,无论该服务器是否属于 Group Replication 设置。mysql.backup_history
备份服务器上表 的存储引擎 已从 CSV 切换到 InnoDB。请参阅 此处了解mysqlbackup现在需要的 与此更改相关的特殊用户权限。
对于 MySQL Enterprise Backup 8.0.13 及更高版本:
mysqlbackup现在支持 InnoDB 表的透明页面压缩。通过设置mysqlbackup选项
--compress-method=punch-hole
;有关详细信息,请参阅选项说明。mysqlbackup现在支持增量备份的备份压缩(即,使用
--compress
和--uncompress
选项)(使用该选项创建的增量备份除外--incremental-with-redo-log-only
)。
对于 MySQL Enterprise Backup 8.0.14 及更高版本:
mysqlbackup现在支持该
--ssl-fips-mode
选项,该选项控制 mysqlbackup是否以 FIPS 模式运行。有关详细信息,请参阅 FIPS 支持。mysqlbackup现在支持加密二进制和中继日志。有关详细信息,请参阅 第 8.4 节,“使用加密的二进制和中继日志”。
对于 MySQL Enterprise Backup 8.0.16 及更高版本:
在备份过程接近尾声时, mysqlbackup现在连续应用这些锁 ,而不是在短时间内锁定整个服务器实例 :
服务器实例上的备份锁,它会阻止 DDL(用户创建的临时表上的除外),但不会阻止 InnoDB 表上的 DML。
对所有非 InnoDB 表 的 操作,用于将其中的相关表复制到备份中。如果不存在用户创建的非 InnoDB 表,则跳过此步骤。
FLUSH TABLES
tbl_name [, tbl_name]
... WITH READ LOCK短暂阻止服务器上的日志记录活动,以收集与日志记录相关的信息。
有关详细信息,请参见第 1.4 节 “备份过程”。移除整个服务器实例上的锁减少了备份操作对数据库服务的中断。
重要的更改要求 将对所有表的权限授予
BACKUP_ADMIN
mysqlbackup 连接到服务器的用户( 当执行从早期版本到 MySQL Server 8.0 的就地升级时,该 权限会自动授予具有该权限的用户 ) .SELECT
BACKUP_ADMIN
RELOAD
除了要求恢复指定的目标数据目录
--datadir
必须不存在或为空之外,mysqlbackup--innodb_data_home_dir
现在对、--innodb_log_group_home_dir
和 选项执行相同的规则--innodb_undo_directory
(该--force
选项不能用于覆盖对三个选项的要求) .mysqlbackup现在支持 对正在备份的服务器上的撤消表空间进行动态更改。在还原期间,默认撤消表空间以及驻留在备份服务器数据目录中的任何非默认撤消表空间都将还原到mysqlbackup选项
innodb_undo_directory
。非默认的外部撤消表空间将恢复到它们在备份服务器上找到的位置。有关详细信息,请参阅 撤消日志文件的描述。mysqlbackup现在支持 加密的 InnoDB 撤消日志。加密撤消表空间的处理方式与 InnoDB 表的加密表空间相同。有关详细信息,请参阅第 6 章,使用加密的 InnoDB 表空间。
对于 MySQL Enterprise Backup 8.0.17 及更高版本:
mysqlbackup现在支持 加密的 InnoDB 重做日志。加密重做表空间的处理方式与 InnoDB 表的加密表空间相同。有关详细信息,请参阅第 6 章,使用加密的 InnoDB 表空间。
为了避免mysqlbackup在备份操作期间无法赶上不断增长的重做日志并丢失重做日志数据,mysqlbackup现在利用重做日志归档,这是 MySQL Server 8.0.17 上提供的一项新功能。
mysqlbackup
使用新选项 可以跳过重做日志归档--no-redo-log-archive
。有关详细信息,请参阅 第 7 章,使用重做日志归档进行备份。该
--incremental-base
选项现在接受一个新值 , 这使得创建差异备份history:last_full_backup
变得容易 。详见说明 。--incremental-base
对于 MySQL Enterprise Backup 8.0.18 及更高版本:
mysqlbackup现在支持使用 MySQL 服务器上的页面跟踪功能更快地创建增量备份。要使用此新功能,请设置
--incremental=page-track
. 有关详细信息,请参阅 使用页面跟踪的增量备份。--uncompress
该操作现在支持该选项 ,extract
因此现在可以使用单个命令从压缩的单文件备份中提取和解压缩文件。引入了两个新选项
--compression-algorithms
和 来为服务器连接--zstd-compression-level
配置 压缩。有关详细信息,请参阅 第 20.2 节,“连接选项”和 连接压缩的命令选项。该
image-to-backup-dir
命令现在是该命令的别名extract
。
对于 MySQL Enterprise Backup 8.0.19 及更高版本:
现在可以安全地在服务器上与备份操作并行进行DDL 操作( CREATE TABLE、 RENAME TABLE、 DROP TABLE、 ALTER TABLE和映射到ALTER TABLE的操作,如CREATE INDEX );有关某些限制,请参阅 此处描述的详细信息。由于这个新特性, mysqlbackup连接到 MySQL 服务器的用户现在必须被授予
SELECT ON *.*
权限;看第 4.1.2 节,“将 MySQL 权限授予备份管理员”。现在支持在完全备份和增量备份之间以及由 mysqlbackup执行的两个增量备份之间的服务器上二进制日志加密的主密钥轮换。在增量备份期间,mysqlbackup现在记录所有加密二进制日志文件的加密信息(包括那些已经在早期完整或增量备份中备份的文件),除非
--skip-binlog
使用该选项,在这种情况下会发出警告,指出较旧的二进制日志文件可能变得不可挽回。此外,该
--skip-binlog
选项现在不仅可以为当前备份操作跳过二进制日志,还可以为基于当前备份的所有后续增量备份跳过二进制日志。备份还原的日志记录已得到改进:在设置日志文件大小的步骤中,现在包括日志文件的名称。
mysqlbackup现在在被信号终止后打印堆栈跟踪。
当mysqlbackup无法连接到服务器时, mysqlbackup返回的警告现在包括 TCP 连接的主机名和端口号,以及套接字连接的套接字信息。这对于 Group Replication 设置特别有用, mysqlbackup可能会尝试连接到多个主机。
mysql.backup_progress
备份服务器上表 的存储引擎 已从 CSV 切换到 InnoDB,现在在表backup_id
的current_timestamp
列上创建了一个复合索引。此外,在使用组复制设置时, mysqlbackup现在backup_progress
通过确保在每个 mysqlbackup操作期间在主节点上更新表,使表对服务器组的所有成员可用。当 MySQL Enterprise Backup 8.0.19 或更高版本尝试对数据库执行第一次完整备份时,它会自动检查
mysql.backup_progress
表的格式。如果它检测到表是旧格式(这意味着服务器已从 8.0.18 或更早版本升级并且之前已通过 MySQL Enterprise Backup 备份过),它会尝试自动对表执行更新。mysqlbackup
表升级需要服务器上用户的新权限;有关详细信息,请参阅 附录 F,备份进度表更新。mysqlbackup现在包括配置文件
auto.cnf
和mysqld-auto.cnf
来自服务器的备份(TTS 备份除外)。backup-auto.cnf
它们分别作为和 恢复到目标服务器的数据目录backup-mysqld-auto.cnf
。要使用这些文件来配置已恢复的服务器,请在启动服务器之前将它们重命名为它们的原始名称。对于
backup-to-image
、extract
、list-image
和copy-back-and-apply-log
命令,使用 指定的任何相对路径--backup-image
现在都被视为相对于运行命令的当前目录。
对于 MySQL Enterprise Backup 8.0.20 及更高版本:
tablespace_tracker文件已被简化:它现在只包含每个外部表空间的两个字段 :
server_file_path
和space_id
。mysqlbackup 不再依赖该文件来获取有关 表空间类型的信息,这意味着用户在将目录备份移动到新位置时backup_file_path
不再需要更新 tablespace_tracker文件。表级恢复 (TLR) 现在允许从完整备份中选择性地恢复表或模式;有关详细信息,请参阅 第 5.1.4 节,“表级恢复 (TLR)”。
遗留选项
--include
现已弃用。每当使用该选项时, mysqlbackup现在都会发出弃用警告 。和选项应该用于部分备份和恢复--include-tables
。--exclude-tables
对于 MySQL Enterprise Backup 8.0.21 及更高版本:
对于
backup-to-image
操作,当为--backup-image
选项指定相对路径时, mysqlbackup将给定的文件路径解释为相对于 备份目录。加密的 InnoDB 表现在可以包含在使用可 传输表空间 (TTS)的部分备份和恢复中。
加密的 InnoDB 表现在正在
validate
操作中进行验证。压缩的 InnoDB 文件现在正在
validate
、backup
和backup-to-image
操作中进行验证。mysql.backup_sbt_history
备份服务器上表 的存储引擎 已从 CSV 切换到 InnoDB。此外,表中还添加了一个自动递增的主键id
列。使用组复制设置时,mysqlbackup现在backup_sbt_history
通过确保在每个 mysqlbackup操作期间在主节点上更新表,使表对服务器组的所有成员可用。当 MySQL Enterprise Backup 8.0.21 或更高版本尝试使用 SBT API 对数据库执行第一次完整备份时,它会自动检查
mysql.backup_sbt_history
表的格式。如果它检测到表是旧格式(这意味着服务器已经从 8.0.20 或更早版本升级并且在使用 SBT API 之前已经由 MySQL Enterprise Backup 备份),它会尝试对表执行更新自动地。mysqlbackup
表升级需要服务器上用户的新权限 ;有关详细信息,请参阅 附录 E,SBT 备份历史表更新。对压缩备份(
copy-back
、copy-back-and-apply-log
、apply-log
等)进行操作的命令已得到简化:--uncompress
不再需要该选项,除了 不使用该 选项extract
的image-to-backup-dir
操作。--src-entry
对增量备份 (
copy-back
,copy-back-and-apply-log
,apply-log
) 进行操作的命令已得到简化:--incremental
这些操作不再需要该选项。当备份正在进行时清除二进制或中继日志文件时,备份现在会失败;当发现服务器上缺少二进制日志文件时,它也会失败
mysqlbackup
(但是,如果中继日志文件丢失,备份将继续)。MySQL 服务器上表的
tool_name
列backup_progress
现在填充了 调用备份操作 的完整mysqlbackup命令。该文件
backup_gtid_executed.sql
未包含在使用 GTID 的副本服务器的 TTS 备份中。只要--slave-info
使用该选项,该文件现在就会包含在 TTS 备份中。
对于 MySQL Enterprise Backup 8.0.22 及更高版本:
MySQL Enterprise Backup 现在支持使用 Oracle Cloud Infrastructure (OCI) 的对象存储服务和 预授权请求 (PAR) URL进行云备份和恢复。
--cloud-par-url
为此引入了一个新选项 。有关详细信息,请参见 第 4.3.1.3 节“备份到云存储”。此外,MySQL Enterprise Backup 不再支持使用 OCI 对象存储服务进行身份验证的 OAuth。
MySQL Enterprise Backup 现在支持具有新选项的 S3 兼容云存储服务
--cloud-host
,用户可以通过该选项指定存储服务的主机名。MySQL Enterprise Backup 现在支持服务器使用 LDAP 进行用户身份验证。引入了两个新选项
--plugin-dir
和--enable-cleartext-plugin
来支持此功能。有关详细信息,请参阅 第 16 章,使用 LDAP 进行服务器身份验证。
对于 MySQL Enterprise Backup 8.0.23 及更高版本:
MySQL Enterprise Backup 扩展了其支持的云存储服务类型;有关详细信息,请参阅第 20.15 节,“云存储选项”。
使用 OCI 对象存储登录云操作现在提供更多信息。
引入了一个新选项,
--cloud-chunk-size
用于在为云操作启用分块传输时指定分块的大小。有关详细信息,请参阅说明--cloud-chunk-size
。对于与 Amazon S3 兼容的存储服务的云备份操作,在操作开始时添加了对存储服务上是否存在存储桶的检查。如果指定的桶不存在, mysqlbackup抛出错误并退出操作。
对于 MySQL Enterprise Backup 8.0.24 及更高版本:
该
--rename
选项现在适用于完全和部分恢复:如果不使用
--include-tables
和--exclude-tables
选项,则恢复备份中的所有表,--rename
并按指定重命名该选项选择的表。如果使用
--include-tables
和--exclude-tables
选项,则将这两个选项选中的所有表一起恢复,--rename
选项选中的表按指定重命名。
对于 MySQL Enterprise Backup 8.0.26 及更高版本:
该
--free-os-buffers
选项现在可以接受一个参数,它告诉 mysqlbackup如何利用posix_fadvise()
(在支持的平台上)来减少mysqlbackup对系统性能的影响。详见选项说明--free-os-buffers
。mysqlbackup现在支持 MySQL 服务器上的密钥环组件
component_keyring_file
:使用 和加密的 InnoDB 表现在可以由mysqlbackupcomponent_keyring_encrypted_file
备份和恢复 。有关详细信息,请参阅 第 6 章,使用加密的 InnoDB 表空间。
对于 MySQL Enterprise Backup 8.0.27 及更高版本:
对于 MySQL Enterprise Backup 8.0.28 及更高版本:
TLSv1 和 TLSv1.1 连接协议在 MySQL 8.0.26 中已弃用,现在已在 MySQL 8.0.28 中删除。删除的协议被视为无效, 无法与用于将mysqlbackup连接到服务器的
--tls-version
选项一起使用。相反,可以使用更安全的 TLSv1.2 和 TLSv1.3 协议建立连接。由mysqlbackup组件 创建的服务器上的旧页面跟踪文件 现在可以通过新的可加载函数清除
mysqlbackup_page_track_purge_up_to()
。有关详细信息,请参阅 使用页面跟踪的增量备份。感谢 Rahul Malik 对此功能的贡献。该
--force
选项已被弃用:它现在被 mysqlbackup忽略,并且每当它与mysqlbackup 命令 一起使用时都会出现警告。
对于 MySQL Enterprise Backup 8.0.29 及更高版本:
和选项
log-bin
现在relay_log
可以 在还原操作期间在[mysqld]
随选项提供的服务器配置文件部分中 指定。--defaults-file
但是,以这种方式指定的值的优先级低于为该[mysqlbackup]
部分中的选项指定的值,并且命令行中给出的值会覆盖配置文件中给出的任何值。有关配置文件使用的更多信息,请参阅 第 21 章,配置文件和参数。
对于 MySQL Enterprise Backup 8.0.30 及更高版本:
自 8.0.30 版以来,重做日志在 MySQL 服务器上的维护方式已发生 变化 。要仅使用重做日志创建增量备份,您应该使用 UDF 向服务器注册 mysqlbackup作为重做日志的外部使用者,
innodb_redo_log_consumer_register()
并且在每次仅重做日志增量备份后,运行innodb_redo_log_consumer_advance($lsn)
UDF 以前进到新的LSN 检查点。有关详细信息,请参阅 仅使用重做日志创建增量备份。