MySQL Enterprise Backup 8.0.19 是 MySQL Enterprise Backup 的最新版本。它仅支持 MySQL 服务器 8.0.19。对于MySQL 8.0之前的版本,使用与服务器版本号相同的MySQL Enterprise Backup版本。MySQL Server 5.7请使用MySQL Enterprise Backup 4.1,MySQL Server 5.6和5.5请使用MySQL Enterprise Backup 3.12。
重要更改: 对于
backup-to-image
、extract
、list-image
和copy-back-and-apply-log
命令,使用 指定的 任何相对路径--backup-image
现在都被视为相对于运行命令的当前目录。(漏洞 #29943103)-
重要变化:
mysql.backup_progress
备份服务器上表 的存储引擎 此外,还添加了一个自动递增的主键id
列以及表backup_id
和current_timestamp
列的复合索引。使用组复制设置时, mysqlbackup现在backup_progress
通过确保在每个 mysqlbackup操作期间在主节点上更新表,使表对服务器组的所有成员可用。当 MySQL Enterprise Backup 8.0.19 或更高版本尝试对数据库执行第一次完整备份时,它会自动检查
mysql.backup_progress
表的格式。如果它检测到表是旧格式(这意味着服务器已从 8.0.18 或更早版本升级并且之前已通过 MySQL Enterprise Backup 备份过),它会尝试自动对表执行更新。将表升级所需的这些权限授予mysqlbackup
服务器上的用户:GRANT ALTER ON mysql.backup_progress TO 'mysqlbackup'@'localhost'; GRANT CREATE, INSERT, DROP ON mysql.backup_progress_old TO 'mysqlbackup'@'localhost'; GRANT CREATE, INSERT, DROP, ALTER ON mysql.backup_progress_new TO 'mysqlbackup'@'localhost';
有关详细信息,请参阅备份进度表更新。(错误#29882544,错误#28695518)
重要变化: 由于增加了备份保护以防止并行 DDL 操作引起的不一致(请参阅下面关于新功能的讨论), mysqlbackup连接到 MySQL 服务器的用户现在必须被授予
SELECT ON *.*
权限;请参阅向备份管理员授予 MySQL 权限。备份还原的日志记录已得到改进:在设置日志文件大小的步骤中,现在包括日志文件的名称。(缺陷号 30380310)
mysqlbackup现在在被信号终止后打印堆栈跟踪。(缺陷号 30042338)
当mysqlbackup无法连接到服务器时,mysqlbackup返回的警告 现在包括 TCP 连接的主机名和端口号,以及套接字连接的套接字信息。这对于 Group Replication 设置特别有用, mysqlbackup可能会尝试连接到多个主机。(缺陷号 30040027)
如果在非增量备份期间无法打开二进制日志文件,备份仍然会完成,但
backup_history
表会指示备份失败。使用此修复程序,如果无法打开任何相关的二进制日志文件,所有类型的备份都会失败,并引发适当的错误。(漏洞#29882381)mysqlbackup现在包括配置文件
auto.cnf
和mysqld-auto.cnf
来自服务器的备份(TTS 备份除外)。backup-auto.cnf
它们分别作为和恢复到目标服务器的数据目录backup-mysqld-auto.cnf
。要使用这些文件来配置已恢复的服务器,请在启动服务器之前将它们重命名为它们的原始名称。(错误#27121423,错误#30033486)-
现在支持在完全备份和增量备份之间以及由mysqlbackup执行的两个增量备份之间的服务器上二进制日志加密的主密钥轮换。在增量备份期间, mysqlbackup现在记录所有加密二进制日志文件的加密信息(包括那些已经在早期完整或增量备份中备份的文件),除非
--skip-binlog
使用该选项,在这种情况下会发出警告,指出较旧的二进制日志文件可能变得不可挽回。此外,该
--skip-binlog
选项现在不仅可以为当前备份操作跳过二进制日志,还可以为基于当前备份的所有后续增量备份跳过二进制日志。当使用选项恢复增量备份--skip-binlog
时,或者当增量备份不包含二进制日志时,mysqlbackup重命名任何已经使用基本备份恢复的二进制日志和索引文件,方法是向它们添加.old
扩展名,然后给出一个警告。 -
过去,如果在备份过程中发生 DDL 操作,备份可能会变得不一致。现在可以安全地在服务器上与备份操作并行发生 DDL 操作( CREATE TABLE、RENAME TABLE、 DROP TABLE、 ALTER TABLE和映射到ALTER TABLE的操作,如 CREATE INDEX ):
涉及的表存在于自己的表空间中,而不是在系统表空间或一些通用表空间中。
-
这些服务器功能尚未应用于涉及的表:
-
不使用以下
mysqlbackup
功能进行备份:
当使用包含压缩行格式
backup-dir-to-image
的 InnoDB 表的压缩目录备份中 的命令创建 映像备份时,无法验证映像备份,除非首先将其解压缩回目录中。(缺陷号 31346149)mysqlbackup报告
extract
操作成功,即使--src-entry
指定的文件在备份中不存在。此修复程序添加了对--src-entry
值的验证,并在验证失败时使 mysqlbackup抛出错误。(缺陷号 30461566)在提取操作期间,提取的文件内容没有
stdout
按预期进入 when--dst-entry=-
,而是进入名为 “ - ”的文件。(缺陷号 30451238)有时,由于某些错误而收到信号 6 后, mysqlbackup 会退出而不打印任何错误消息。(缺陷号 30423128)
当启用重做日志存档时, mysqlbackup有时会在备份期间挂起。这是由于 mysqlbackup在读取重做日志文件和重做日志存档之间切换的方式,已通过此修复程序得到纠正。(缺陷号 30387689)
如果服务器上的表空间在备份过程中被删除,然后在过程结束前恢复,使得备份包括该表并成功, mysqlbackup仍然在该
mysql.backup_history
表中报告备份失败。(缺陷号 30340161)重新启动时,恢复的服务器有时会发出警告
Doublewrite page ### for {space: ###, page_no:###} could not be restored
。发生这种情况是因为从备份服务器恢复的双写缓冲区包含不再相关的页面。通过此修复,备份中的双写缓冲区在备份过程中被清除,因此不再恢复。(缺陷号 30286862)当 OpenSSL 1.1.1 用于将 mysqlbackup连接到服务器 且未指定--tls-version选项时,使用的是 TLSv1.3,但 mysqlbackup的输出表明它使用的是 TLSv1.2。(缺陷号 30268505)
如果密钥环文件位于服务器的数据目录中,则使用keyring_file或 keyring_encrypted_file 插件 备份服务器 会失败并出现错误。
Opening of file master_keyring_kef failed
这是因为在那种情况下,插件返回了一个相对于数据目录的密钥环文件的路径,而 mysqlbackup无法通过该路径找到该文件。通过此修复,插件将文件的完整路径返回到 mysqlbackup。(缺陷号 30238406)validate
在未指定任何命令选项的情况下发出命令时, mysqlbackup意外退出 有了这个修复, mysqlbackup通过抛出一个正确的错误在这种情况下优雅地退出。(缺陷号 30204114)该
--page-reread-time
选项的默认值为 0 毫秒,而不是手册中记录的 100 毫秒。(缺陷号 30036877)当
copy-back-and-apply-log
对准备好的备份应用操作时,警告 在mysqlbackupApply-log operation has already been done on that backup
的输出中出现两次 。(漏洞#29941423)当服务器上的系统变量设置为时, 备份有时会失败,mysqlbackup 报告撤消日志文件看起来已损坏 。这是因为在复制文件时,加密信息尚未传播到撤消日志文件侦听器。通过此修复,在这种情况下,mysqlbackup 会等到撤消日志文件的标头更新后才复制它。(漏洞 #29545236)
innodb_undo_log_encrypt
ON
恢复增量备份时, mysqlbackup删除了服务器上未包含在增量备份中的表。(缺陷号 29399666)
如果服务器有两个位于不同文件路径但具有相同文件名的外部撤消表空间,则备份失败。这是因为mysqlbackup在备份时将所有的 undo 表空间复制到同一个目录,导致文件名冲突。通过此修复,在复制撤消表空间时,表空间相对于的路径
innodb_undo_directory
名将被保留,因此不会再有文件名冲突。(错误号 29340016)如果任何表名包含保留字或特殊字符,则在mysqlbackup 将
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK
语句应用于所有非 InnoDB 表 时备份失败。这是因为mysqlbackup在发出语句时没有将表名括在反引号中,并且此修复确保完成了。(缺陷 #19709505,缺陷 #74144)