MYSQL 备份到底怎么办,XTRABACKUP 还是 mysql enterprise backup (1)

cb57e2012093558c199e5e13b3119238.png

众所周知,MYSQL的版本更新的越来越快,明年或许就看到 MYSQL 9 的身影,大部分人都想试试,但先得泼一盆冷水,备份的事情你想好了吗?

基于MYSQL 不断的更新REDO LOG 的功能,同时对于并行方式在DDL 方也有所更新,导致XTRABACKUP 的备份软件,一直无法对其新版本的MYSQL。从下文看到,XTRABACKUP 经历了 

1  MYSQL 8.020 后一段时间的 XTRABACKUP 无法对8.020 及以后的版本进行备份的问题

2  截止目前XTRBACKUP 只能对8.029 的数据库进行备份,更高版本的无法进行备份-- 目前还是不可以

140fd615c6af18f457650a47ff7ad393.png

f954d3b365d7cbe897e1811501066fb0.png

895c8f0875f848e535e88b7df39b0ef0.png

在开始说备份的问题之前我们先看看8.020 对REDO 都做了什么

1 8.020 UNDO 表空间ID值的变化增加了数据字节的存储扩展,导致REDO LOG 记录的大小变化,引起IO 操作性能下降,所以需要修改日志的格式,为UNDO LOG 变化时,减少REDO LOG 所使用的日志大小而修改了REDO LOG 的格式。

这就是导致备份软件出现问题,无法继续对新版本MYSQL 进行备份的。

2  8.029 的问题在于之前DDL添加的列只能在表的列中的最后,而8.029后的版本则可以在列中任意的位置添加字段,这样的操作后,会导致在使用立即添加或删除会创建一个新的行版本最多允许64个行版本。

所以导致XTRABACKUP 在每次的一些数据库核心内部结构变化后,都不能进行数据的备份。

下面我们看看最新版本的XTRABACKUP 到底是不是能对目前的8.030 进行备份。

首先对于文件权限方面,xtrabackup 必须具有对MYSQL 的访问权限,也就是必须有读写用户的权利,同时基于读取大量的数据,使用posix_fadvise() 函数避免读取的数据进入到缓存中。

从文件中读取数据后,xtrabackup每次在1MB的缓冲区中迭代一个页面,并使用InnoDB的buf_page_is_corrupt()函数检查每个页面的页面损坏情况。如果页面损坏,它将为每个页面重新读取和重试最多10次。

我们下面就在MYSQL 8.030 上,尝试通过 8.029 XTRBACKUP 进行备份会产生什么问题。

在备份的数据库中,设置xtrabackup  需要最小的权限

mysql> create user 'backup'@'%' identified by '1234.Com';

Query OK, 0 rows affected (0.01 sec)

mysql> grant backup_admin,process,reload,lock tables,replication client on *.* to 'backup'@'%';

Query OK, 0 rows affected (0.00 sec)

mysql> grant select on performance_schema.log_status to 'backup'@'%';

Query OK, 0 rows affected (0.00 sec)

mysql> grant select on performance_schema.keyring_component_status to 'backup'@'%';

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

7c8f37cfd71b353a3d21cd8d8e1908cf.png

在备份的中,可以看下面的截图,的确因为MYSQL 8.029 更改了DDL 在表中的策略,导致目前备份软件只能支持到8.028的MSYQL 数据库。

b816fbdb6a3468bbd7beecadbb9b35fd.png

我们在尝试一下8.027 MYSQL 匹配 8.029 xtrbackup, 同样的配置和命令的基础上,在MYSQL 8.027 是可以进行数据的备份操作的。

9d41f2d4134f12a24d238dd9fb1ac85c.png

那么摆在现在的问题就是 8.029 和8.030 版本的数据库如果存在如何进行备份的问题。

下面我就试试ORACLE 提供的 mysql enterprise bakcup 工具软件对8.030是否能进行备份。

1 我们先建立相关的用户并针对MYSQLBAKCUP软件需要的权限进行赋予

mysql> create user 'mysqlbackup'@'%' identified by '1234.Com';

Query OK, 0 rows affected (0.01 sec)

mysql> grant select,backup_admin,reload,process,super,replication client on *.* to 'mysqlbackup'@'%';

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant create,insert,drop,update on mysql.backup_process to 'mysqlbackup'@'%';

Query OK, 0 rows affected (0.01 sec)

mysql> grant create,insert,drop,update,select,alter on mysql.backup_history to 'mysqlbackup'@'%';

Query OK, 0 rows affected (0.01 sec)

mysqlbackup --user=mysqlbackup --password=1234.Com --socket=/data/mysql.sock    --backup-dir=/backup backup

a06fbb425fd1b38747b6462579d772a6.png

63c0103f1deaa62829ed62ea735235da.png

b00fcb0e5c098938e05c1d4de02cfe0e.png

a6a0ae068c17ca5819e02571b0b5196e.png

d7e0ebe3eebb038a487eea76724fca57.png

通过上面的方法我们将MYSQL8.031 进行了简单的备份,由于只能通过试用的方式获得mysqlbackup 软件,并且只能选择 8.031版本,所以数据库也必须是 8.031 可以是社区版本,但需要注意的是,备份软件的版本和数据库软件本身的版本,不一致时将会报数据库版本和MEB 的版本不同,而拒绝备份的问题。

后续将针对两款备份软件,做相关的比较和功能的分析。

4b53b8e1c1190f767059e22847ecd4e8.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值