公司开始使用MySQL8.0了,之前一直是MySQL5.6和MySQL5.7.

之前使用xtrabackup对MySQL5.6和MySQL5.7执行数据恢复操作都没问题。

现在数据库版本是MySQL8.0,按原来的套路执行就不行了。

基本情况如下:
数据库备份是某云服务商的云数据库,版本MySQL8.0.

备份在控制台操作实现每日完整备份。

根据云服务商提供的文档,可以使用xtrabackup进行恢复数据操作。

本地创建了一个环境,系统是Ubuntu20.04,数据库是MySQL8.0

反复进行测试恢复数据后,有以下2点要注意:

1.xtrabackup的版本问题

MySQL5.7对应是xtrabackup2.4.x。

而MySQL8.0对应的版本号也是xtrabackup 8.0.x

下载地址:Download Percona XtraBackup 8.0

2.数据文件的存取路径

在MySQL5.6和MySQL5.7版本上,恢复数据时通常我会创建一个新的目录来恢复数据。然后修改配置文件,启动服务。

这个操作在MySQL8.0会导致服务启动失败。

错误日志内会有如下类似提示:

[Server] Can't create test file /data/mysql/data/mysqld_tmp_file_case_insensitive_test...

解决问题的方法有两个:

第一个方法,把恢复的数据文件放在MySQL8.0的默认数据文件目录下。当然其权限要改为mysql为属主。

第二个方法则是使用如下命令:

mysqld --initablize-insecure 对新的数据文件目录进行一次初始化

补充一个初始化命令例子如下:

/usr/sbin/mysqld --defaults-files=/etc/mysql/my.cnf --initialize --user=mysql

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐