Xtrabackup 8.0 说明
官方文档:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html 简单过程说明
由以上步骤可知, XtraBackup 8.0 对 MySQL 8.0的备份与 XtraBackup 2.4 略有不同,根据 Percona 官方文档的信息,MySQL 8.0 不再执行 FTWRL
(当使用 --slave-info
启动 xtrabackup 时,MySQL 8.0 中仍然需要 FTWRL
) ,而是在备份开始执行一个 LOCK INSTANCE FOR BACKUP
获取备份锁, XtraBackup 8.0 会通过以下 SQL 语句从 performance_schema.log_status
来获取 LSN
、binlog position
和 GTID
官方文档:https://dev.mysql.com/doc/mysql-perfschema-excerpt/8.0/en/performance-schema-log-status-table.html performance_schema.log_status
是 MySQL 8.0 提供给在线备份工具获取复制日志文件信息的视图,查询 log_status
表时,服务器将阻止日志的记录和相关的更改来获取足够的时间以填充该表,然后释放资源。Log_status 表通知在线备份工具应记录主库 binlog 的 position
值 和 gtid_executed
值,及每个通道复制的 relay log
,它还为各个存储引擎提供相关信息,例如 InnoDB 存储引擎使用的最后一个日志序列号 LSN,和最后一个检查点的 LSN。
PXB准备工作
PXB 工具安装
参数说明
创建备份账号
备份账号建议单独创建,并授予相关权限 官方文档权限说明:https://www.percona.com/doc/percona-xtrabackup/LATEST/using_xtrabackup/privileges.html
权限对应说明
MySQL 8.0 增加了一个轻量级的备份锁,这个锁可以保证备份一致性,而且阻塞的操作相对比较少,PXB 8.0 备份就引用了这个特性 PXB官方文档说明:https://www.percona.com/doc/percona-server/8.0/management/backup_locks.html
备份过程说明
开始全量备份
可以看到备份文件已经在目录下,注意这里和 innobackupex 不一样,xtrabackup 备份不会建立一个当前时间命名的文件件 --no-timestamp
参数已经废弃
命令提示部分
上述日志打印出 innobackpex 可以用的一些参数
连接数据库
连接数据库,检查数据库版本,直接加MDL 备份锁,进入数据文件目录检查参数,开始备份。
备份系统表空间及InnoDB引擎数据
这部分首先列出数据库中有哪些表空间
- 系统表空间(ibdata)
- undo 表空间(undo)
- 用户表空间(innodb_file_per_table开启后每张表和表空间 一 一对应)
首先拷贝系统表空间然后是undo表空间文件,最后是innodb表文件。 xtrabackup 一直在扫描 redo 日志文件以反映数据的变化。
备份非 innodb表数据
拷贝二进制文件
根据 performance_schema.log_status
来拷贝备份非 InnoDB 时期的事务情况保证数据一致性
完成备份
PXB 生成文件说明
backup-my.cnf
xtrabackup_binlog_info
xtrabackup_checkpoints
xtrbackup_info