本帖最后由 sailyang 于 2020-5-11 17:56 编辑
因为基于安全考虑和稳定性考虑,8.0版本基本已到稳定期,可以大量投入生产环境中。
一、升级前检查
Mysql8.0还是提供了很多方便,不像之前一样5.6升级5.7那样。现在可以通过mysql shell进行确认。 下面2种方式 #mysqlsh root:123456@192.168.244.130:3410 -e 'util.checkForServerUpgrade({"targetVersion":"8.0.19","configPath":"/etc/my3410.cnf"})';
MySQL JS > util.checkForServerUpgrade('root@192.168.244.130:3410', {"password":"123456", "targetVersion":"8.0.11", "configPath":"/etc/my3410.cnf"})
报错信息: 按照提示的要求进行更改
二、开始升级 高可用架构下 需要先升级从库,在逐步升级主库。 执行mysql_upgrade命令,会提示如下: #/mysql8.0.19/bin/mysql_upgrade -uroot -p123456
在MySQL 8中mysql_upgrade客户端现已弃用。升级客户端执行的操作现在由服务器完成。 要升级,请使用较旧的数据目录启动新的 MySQL 二进制文件。自动修复用户表。升级后不需要重新启动。 所以必须在测试环境模拟准备对应SQL语句
1)登录服务器进行正常关闭:innodb_fast_shutdown是默认是1,常常认为是安全关闭 关闭innodb参数确认 mysql> show variables like 'innodb_fast_shutdown'; Variable_name innodb_fast_shutdown
确保数据都刷到硬盘上,更改成0 mysql> set global innodb_fast_shutdown=0;Query OK, 0 rows affected (0.01 sec) mysql> shutdown;Query OK, 0 rows affected (0.00 sec) *进行备份。
2)用mysql8.0.19客户端直接启动 启动mysql服务 [root@ss30 bin]# /opt/mysql8.0.19/bin/mysqld_safe --defaults-file=/etc/my3400.cnf --user=mysql & [1] 15400 [root@ss30 bin]# 2020-04-25T13:07:16.591560Z mysqld_safe Logging to '/opt/data3400/logs/error.log'. 2020-04-25T13:07:16.636879Z mysqld_safe Starting mysqld daemon with databases from /opt/data3400/mysql ##打开另一个窗口查看error日志 [root@ss30 ~]# tail -f /opt/data3400/logs/mysql_error.log
登录服务器确认 剩下的就是验证 和 业务确认否应用正常。
三、总结
整个从升级准备开始 到结束,中间包含很多细致的工作。比如版本确认,功能确认,测试,准备,备份,验证,高可用切换等等。前期需要投入很多精力进行准备,这样才能做到一步到位。 |