MySQL5.7升级8.0,前置检查必不可少,通过前置检查,可以排除升级过程中的绝大部分问题,降低升级失败的概率,将问题暴露在升级之前。
MySQLShell工具提供了5.7升级8.0的前置检查功能,它能够检查一系列的兼容性问题,比如命名冲突、sql_mode、移除的系统变量和函数等等。这个工具只检查问题,并不会修复问题,如果检查确实存在兼容性问题,那么还需要人为介入进行修复。
下面通过一个实例,演示该工具如何使用,演示的MySQL版本为5.7.19,MySQLShell版本为8.0.16。
安装mysql-shell:
yuminstall-ymysql-shell.x86_64
或者直接下载解压,即可使用:
mysql-shell-8.0.16-linux-glibc2.12-x86-64bit.tar.gz
执行升级前置检查:
mysqlsh-h.0.0.1-uadmin-p"-eutil.checkForServerUpgrade();
检查结果有2个警告,分别是字符集utf8mb3和caching_sha2_password认证插件。MySQL8.0推荐使用utf8mb4,密码认证如果想要兼容5.7,需要加上
default_authentication_plugin=mysql_native_password。
checkForServerUpgrade()函数加上参数:
util.checkForServerUpgrade(admin
.0.0.1:,{password:,targetVersion:8.0.16,configPath:/etc/my.cnf});加上参数后,可以指定目标版本和配置文件my.cnf,从执行结果看,出现3个错误,12个警告。
3个错误是配置文件中的3个被移除的参数:
internal_tmp_disk_storage_engine-issetandwillberemovedquery_cache_size-issetandwillberemovedquery_cache_type-issetandwillberemoved具体的检查结果如下:
总结:
使用MySQLShell工具,使得MySQL5.7升级8.0的前置检查变得更加简单,只需一个命令,就能发现几乎所有不兼容的问题,提高了升级的成功率,减少了升级后再出现问题的概率。