一、兼容性测试
-
版本检测
- 使用
mysqlsh util.checkForServerUpgrade()
来检测当前MySQL版本是否适合升级到目标版本。
- 使用
-
保留并调整的参数:
-
skip_ssl
:在新版本需要设置为1 不使用ssl加密 -
innodb_data_file_path
:需要检查下具体路径 -
sql_mode
:NO_AUTO_CREATE_USER
在新版本中不再支持,应从sql_mode
中移除该选项。 -
explicit_defaults_for_timestamp
:在新版本中需要设置为ON -
local_infile
:如果需要使用LOAD DATA LOCAL INFILE
语句,将此参数设置为1
(或ON
)。 -
default_authentication_plugin
:mysql_native_password
下面两个选项涉及到排序规则,如果你的表设置了具体的排序规则,就恢复成5.7默认值保证兼容性 -
collation_server
:utf8mb4_general_ci -
skip-character-set-client-handshake
:在新版本设置为1,会忽略客户端请求的字符集设置。
-
-
废弃的参数:
-
binlog_expire_days
:此参数在新版本中已废弃。应使用binlog_expire_logs_seconds
替代。
-
-
新增的参数:
-
binlog_expire_logs_seconds=604800
:设置二进制日志的过期时间为 604800 秒(即 7 天)。 -
mysqlx_socket=a.socket
:配置 MySQL X Protocol 使用的 socket 文件。 -
mysqlx_port=33061
:配置 MySQL X Protocol 使用的端口号。根据您的实际需求进行设置。 -
innodb_redo_log_archive_dirs
:配置重做日志的归档路径。根据您的实际路径和需求进行设置。 -
innodb_redo_log_archive_capacity
:配置重做日志归档的大小限制。根据您的实际需求进行设置。 -
plugin_load_add=mysql_clone.so
:加载mysql_clone
插件。确保该插件文件存在于 MySQL 的插件目录中。 -
innodb_print_ddl_logs=1
:启用此参数以在错误日志中打印 DDL 语句的详细信息。这对于调试和监控 DDL 更改非常有用。
-
-
参数一致性校验
- 使用
pt-config-diff
工具来比较不同MySQL实例之间的配置差异,确保一致性。
- 使用
-
程序测试
- 确认Java驱动已更新以支持MySQL 8.0。
- 测试并确认移除或替换的函数如
date_format
,datetime_format
,time_format
,JSON(APPEND, MERGE)
, 和password
加密函数。 - 检查并更新使用
GROUP BY ASC/DESC
的SQL语句,因为这在MySQL 8.0中不再支持。 - 验证程序中是否使用了MySQL 8.0新增的关键字,并做适当调整。
- 测试程序以确保没有错误,SQL语句得到支持,并且性能符合预期。
二、升级步骤
-
备份
- 使用
xtrabackup
进行物理备份以恢复实例。
- 使用
-
安装新版本
- 安装MySQL 8.0.32新版本实例。
-
恢复实例
- 关闭需要设置 innodb_fast_shutdown=0
- 在安全模式下启动8.0.32版本,使用
skip-networking
和--skip-grant-tables
参数。
-
观察升级
- 监视升级到8.0.32后的系统行为和性能。
-
正常启动
- 关闭安全模式,正常启动MySQL实例。
-
主从复制设置
- 配置新实例作为从库,连接到主库,并执行
CHECKSUM TABLE
校验核心表的一致性。
- 配置新实例作为从库,连接到主库,并执行
-
主从切换
- 执行主从切换,进行滚动升级以确保服务的高可用性。
-
升级工具
- 升级
xtrabackup
工具以保持与MySQL 8.0.32版本的兼容性。
- 升级
网友评论