最近我们把20个系统的mysql 5.7 升级到 8.0.20 ,后又升级到最新的 8.0.22
记录一下遇到的问题,和解决办法。
版本兼容性检查
从 mysql 官网下载 mysql shell 安装到 mysqld 服务器上,并执行如下命令
mysqlsh root@localhost -e "util.checkForServerUpgrade();"
也可以远程检查,需要把 my.cnf 拷贝到 mysqlsh 机器上, 增加参数 --config-path=/etc/mysql/my.cnf
8.0 my.cnf 不兼容的地方
8.0 sql_mode 去掉 NO_AUTO_CREATE_USER 写了这个会直接起不来
8.0 建议增加 default_authentication_plugin=mysql_native_password 以提高驱动的兼容性
驱动升级
jdbc 的 驱动,至少需要 5.1.46 版本,建议使用 5.1.48+ 或是 8.0 的驱动。版本太低的jdbc 驱动,连接时会报 query cache 不存在,连不上数据库。
临时替换驱动时,可以直接更换 jar 包 或 war 包里面的 驱动程序。最好是让开发人员升级 pom 文件或是 gradle 里面的驱动版本。
我们的经验是,5.1.47,5.1.48, 5.1.49 8.0 在不同的项目都有用,没有发现明显的bug
有的 jdbc 需要加上 useOldAliasMetadataBehavior=true&noAccessToProcedureBodies=true 等参数
升级方式1: 导出导