MySQL Enterprise Backup 8.0.16 is the latest release for MySQL Enterprise Backup. It only supports MySQL Server 8.0.16. For earlier versions of MySQL 8.0, use the MySQL Enterprise Backup version with the same version number as the server. For MySQL server 5.7, please use MySQL Enterprise Backup 4.1, and for MySQL Server 5.6 and 5.5, please use MySQL Enterprise Backup 3.12.
mysqlbackup now supports encrypted InnoDB undo logs. The encrypted undo tablespaces are handled the same way as the encrypted tablespaces for InnoDB tables. See Working with Encrypted InnoDB Tablespaces for details.
Near the end of the backup process, instead of locking the whole server instance for a brief period of time, mysqlbackup now applies these locks consecutively:
A backup lock on the server instance, which blocks DDLs (except those on user-created temporary tables), but not DMLs on InnoDB tables.
FLUSH TABLESoperation on all non-InnoDB tables, for copying the relevant ones among them into the backup. This step is skipped if no user-created non-InnoDB tables exist.
tbl_name [, tbl_name]... WITH READ LOCK
A brief blocking of logging activities on the server, for collecting logging-related information.
See The Backup ProcessThe Backup Process for details. The removal of the lock on the whole server instance reduces disruption to the database service by the backup operation.Important
The change requires that the
SELECTprivileges on all tables be granted to the user by which mysqlbackup connects to the server (the
BACKUP_ADMINprivilege is automatically granted to users with the
RELOADprivilege when an in-place upgrade to MySQL Server 8.0 from an earlier version is performed).
mysqlbackup now supports dynamic changes to undo tablespaces on the server being backed up. During a restore, the default undo tablespaces, as well as any non-default undo tablespaces resided in the backed-up server's data directory, are restored to the location pointed to by the mysqlbackup option
--innodb_undo_directory. Non-default, external undo tablespaces are restored to the locations they were found on the backed-up server. See undo log files for details. (WL #11094)
In addition to the requirement that the target data directory for a restore specified by the
--datadiroption must be non-existent or empty, mysqlbackup now enforces the same rule for the
--forceoption cannot be used to override the requirement on the three options). (WL #12665, WL #12407)
Zip packages of mysqlbackup contained duplicate files, which have now been removed. (Bug #29497272, Bug #94683)
mysqlbackup might quit unexpectedly if it lost its connection to the server at the middle of a backup operation. With this fix, mysqlbackup exits gracefully in the situation after throwing the appropriate errors. (Bug #29376006)
mysqlbackup returned success for a backup to Oracle Cloud Infrastructure Object Storage Classic even after the backup failed. (Bug #29362469)
Restore of an incremental backup failed if, on the server, some binary log files had been purged in between the times the incremental backup and its base backup were made. (Bug #29306026)
A backup failed for mysqlbackup if the path given by the
--backup-diroption was of the Universal Naming Convention (UNC) format, as mysqlbackup failed to create the backup directory then. (Bug #29190803)
A mysqlbackup operation failed when the
backup-imageoption was supplied to mysqlbackup in a configuration file instead of on the command line. (Bug #29157495)
mysqlbackup quit unexpectedly when the
--passwordoption was used twice, with no argument given at the second time, in a mysqlbackup command that was itself invalid aside from the use of the
--passwordoption. (Bug #28894102)
When a compressed incremental folder backup was restored, the binary log files created in between the times of the base and the incremental backups were not copied onto the target server. (Bug #28773998)
A restore operation for a database containing encrypted InnoDB tables failed without returning a proper error message when the the
--encrypt-passwordoption was not used in the mysqlbackup command. (Bug #28773077)
After restoring an incremental backup taken from a MySQL Community Server with encrypted InnoDB tables, the keyring file of the restored server became corrupted, so the server could not be started. (Bug #28422191)
A restore operation could corrupt a backup when, by mistake, a user specified the source directory to become the target directory for restoring some files (for example, specifying what was the backup's
--backup_innodb_data_home_dirvalue as the restore's
--innodb_data_home_dirvalue). This fix prevents the problem by having mysqlbackup throw an error when the command options make the source and target file paths the same for any file copying during a restore. (Bug #28376873)
While MySQL Server interprets the system variable setting
--innodb_checksum_algorithm=crc32, a mysqlbackup operation (except for backup) failed when
--innodb_checksum_algorithm=0was set as a configuration option on the backed up server. With this fix, mysqlbackup now takes
--innodb_checksum_algorithm=0as valid and interprets it as
--innodb_checksum_algorithm=crc32. (Bug #28295519)
A restore operation failed with the error that the binary log index file could not be opened if the binary log base name for the backed-up server was a substring of the word “index”. (Bug #28127023)
mysqlbackup tried to connect to a remote host specified by the
--hostoption, while it was supposed to ignore the option (see Connection Options for details). With this fix, the option is now ignored.Note
As a side-effect of this change, on Unix-like platforms, mysqlbackup command that used the
--hostoption now needs to use the
--protocol=TCPoption to indicate explicitly that mysqlbackup is to connect to
When the option
--no-lockingwas used during a backup operation, the backup sometimes failed with mysqlbackup complaining that the highest LSN was larger in a copied page than on the backed-up server. It was because mysqlbackup did not perform a log flushing before copying the redo log when the option was used. With this fix, log flushing was always performed to prevent the error. (Bug #25412655)