在percona官网可以看到有两个版本的xtrabackup:8.0和2.4。
MySQL 8.0 采用了新的重做日志和数据字典格式,因此需要使用xtrabackup 8.0 来进行备份恢复,之前版本需要使用 xtrabackup 2.4 进行备份和恢复。
xtrabackup 8.0与2.4版本行为对比:
- Xtrabackup 2.4 备份后生成的 xtrabackup_binlog_info 文件记录的 GTID 信息是准确的,但是备份恢复后 show master status 显示的 GTID 是不准确的。
- Xtrabackup 8.0 在备份只有 InnoDB 表的实例时,xtrabackup_binlog_info 文件记录的 GTID 信息不一定是准确的,但是备份恢复后 show master status 显示的 GTID 是准确的。
- Xtrabackup 8.0 在备份有非 InnoDB 表格的实例时,xtrabackup_binlog_info 文件记录的 GTID 信息是准确的,备份恢复后 show master status 显示的 GTID 也是准确的。
xtrabackup 2.4 过程大致如下:
- start backup
- copy ibdata1 / copy .ibd file
- excuted FTWRL
- backup non-InnoDB tables and files
- writing xtrabackup_binlog_info
- executed FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS
- executed UNLOCK TABLES
- copying ib_buffer_pool
- completed OK!
xtrabackup 8.0默认情况下大致过程如下:
- start backup
- copy .ibd file
- backup non-InnoDB tables and files
- executed FLUSH NO_WRITE_TO_BINLOG BINARY LOGS
- selecting LSN and binary log position from p_s.log_status
- copy last binlog file
- writing /mysql/backup/backup/binlog.index
- writing xtrabackup_binlog_info
- executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS
- copy ib_buffer_pool
- completed OK!
注意: 当存在非InnoDB表时,xtrabackup 8.0会执行FTWRL。
从上述步骤可知,xtrabackup 8.0与2.4的步骤主要区别为:
当只存在InnoDB引擎的表时,不再执行FTWRL,而是通过 上述第5步(SELECT server_uuid, local, replication, storage_engines FROM performance_schema.log_status )来获取LSN、binlog position、GTID 。
版权声明:本文为博主原创文章,未经博主允许不得转载。