Xtrabackup 8.0.x关于MySQL的版本支持浅析

网友投稿 681 2023-06-13

Xtrabackup 8.0.x关于MySQL的版本支持浅析

Xtrabackup 8.0.x关于MySQL的版本支持浅析

我们知道从MySQL 8.0.x开始,我们必须用Percona Xtrabackup 8.0.x来备份,之前的Percona XtraBackup 2.4已经不支持MySQL 8.x的备份了。而且Percona Xtrabackup 8.0.x也不支持备份之前的MySQL 5.6/MySQL 5.7了。但是我们对Percona Xtrabackup的具体版本支持哪一些MySQL版本了解甚少,而且官方文档也没有很详细的介绍资料。

下面来看一个案例,最近安装了一个MySQL环境,MySQL版本为最新的MySQL 8.0.28版本,Percona XtraBackup版本也是下载最新的8.0.27-19版本。

MySQL版本:8.0.28 MySQL Community Server - GPL Xtrabackup版本:8.0.27-19

mysql> select version();+-----------+| version() |+-----------+| 8.0.28 |+-----------+1 row in set (0.00 sec)mysql>

$ xtrabackup --versionxtrabackup: recognized server arguments: --datadir=/var/lib/mysqlxtrabackup version 8.0.27-19 based on MySQL server 8.0.27 Linux (x86_64) (revision id: 50dbc8dadda)

使用Percona Xtrabackup 8.0.27备份MySQL 8.0.28的时报错,如下所示:

xtrabackup: recognized server arguments: --datadir=/data/mysql/data --tmpdir=/data/mysql/mysql_temp --innodb_buffer_pool_size=8G --server-id=1 --log_bin=/data/mysql/bin_logs/mysql_binlogxtrabackup: recognized client arguments: --port=3306 --socket=/tmp/mysql.sock --user=bkuser --password=* --host=127.0.0.1 --port=3306 --backup=1 --target-dir=/mysql_backup/db_backup/backup_cycle_2022_02_06/full_backup_2022_02_12_08_57_02/usr/bin/xtrabackup version 8.0.27-19 based on MySQL server 8.0.27 Linux (x86_64) (revision id: 50dbc8dadda)220212 08:58:02 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup;host=127.0.0.1;port=3306;mysql_socket=/tmp/mysql.sock' as 'bkuser' (using password: YES).220212 08:58:02 version_check Connected to MySQL server220212 08:58:02 version_check Executing a version check against the server...220212 08:58:02 version_check Done.220212 08:58:02 Connecting to MySQL server host: 127.0.0.1, user: bkuser, password: set, port: 3306, socket: /tmp/mysql.sockError: Unsupported server version 8.0.28.Please upgrade PXB, if a new version is available. To continue with risk, use the option --no-server-version-check.

提示当前的Percona Xtrabackup(8.0.27-19)不支持MySQL 8.0.28. 但是当前时间节点(2022-02-11),Percona官方网址,Xtrabackup最新版本为percona-xtrabackup-80-8.0.27-19.1.el7.x86_64.rpm。而MySQL的官方最新版本为MySQL 8.0.28。看了一下发布日期,MySQL 8.0.28是Sep 28, 2021发布的。而percona-xtrabackup 8.0.27是February 2, 2022才发布的。也就是说目前官方还没有发布percona-xtrabackup 8.0.28

不过,根据官方文档,Percona XtraBackup 8.0.21 开始,新增了--no-server-version-check 参数。此参数控制是否将源系统版本与 Percona XtraBackup 版本进行比较。

--no-server-version-check This option allows backup to proceed when the server version is greater (newer) than the PXB supported version

关于这个参数,搜索了一下官方资料,具体介绍如下所示

该参数检查以下场景:

源系统和PXB版本一样,备份继续源系统低于PXB版本,备份继续源系统大于PXB版本,且参数未被覆盖,停止备份并返回错误信息源系统大于PXB版本,参数被覆盖,备份继续

所以我们如果使用参数--no-server-version-check备份的话,可能可以备份成功。也可能备份失败,还有可能创建了一个损坏的备份。

xtrabackup --defaults-file=/data/mysql/my.cnf --login-path=dbbackup --backup --no-server-version-check --target-dir=/mysql_backup/db_backup

后面在搜索相关资料时,也看到了其他人遇到了类似问题,详见链接:When will xtrabackup-8.0.26-18 release[1]

关于Percona Xtrabackup 8.0.x的版本支持与限制,其实之前也是很少去了解这方面的内容,而Percona官方也没有详细的资料介绍,那么Xtrabackup 8.0.x是否能向下兼容支持呢 ?

例如 Xtrabackup 8.0.27-19 是否支持备份 MySQL 8.0.26 或MySQL 8.0.26之下的MySQL 8.x.x的版本呢,简单测试了一下,我安装了一个MySQL 8.0.26,然后安装Xtrabackup 8.0.27-19, 测试验证它能否备份成功,看来Xtrabackup 8.0.x应该是向下兼容(当然Xtrabackup 8.0.x只能向下兼容 MySQL 8.0.x的版本)

后面我搜索相关资料时,也看到了官方一则博客,它也只是简单介绍了一下,Percona XtraBackup 8.0.12之前的版本不支持MySQL 8.0.20或以上版本的备份。因为此版本包含对 InnoDB 重做日志格式的更改,这破坏了与所有当前发布的 Percona XtraBackup 8.x 系列版本的兼容性。详见Percona XtraBackup 8.x and MySQL 8.0.20[2]

Update: Percona XtraBackup 8.0.12 now supports backup and restore processing for versions of MySQL 8.x; previous versions of Percona XtraBackup will not work with MySQL 8.0.20 and higher. More information

看来MySQL 8.0.x的变更太快,Percona Xtrabackup 8.0.x的版本开发有点跟不上节奏了。开源免费的产品,在版本的更新发布上肯定不如商业软件那么高效,这也是开源软件的一些缺陷,没办法的事情。

参考资料

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是流式SQL,它有什么用?
下一篇:MySQL5.7设置变量的几种方法
相关文章