MySQL升级方法概述总结

0    73    2

Tags:

👉 本文共约4097个字,系统预计阅读时间或需16分钟。

概述

升级方法

MySQL升级方法概述总结

1、从MySQL 8.0.16开始,做好备份,然后安装新软件,最后直接启动即可。

2、低于 MySQL 8.0.16 的版本,需要执行 mysql_upgrade,以升级系统库

为什么升级MySQL

  • 基于安全考虑

  • 基于性能和稳定性考虑:mgr复制 ,并行复制writeset 等功能,性能提升

  • 新的功能:Hash join ,窗口函数,DDL即时,json 支持

  • 原始环境中版本太多,统一版本

  • 8.0版本基本已到稳定期,可以大量投入生产环境中

升级前注意事项

  • 注意字符集设置。为了避免新旧对象字符集不一致的情况,可以在配置文件将字符集和校验规则设置为旧版本的字符集和比较规则。

  • 密码认证插件变更。为了避免连接问题,可以仍采用5.7的mysql_native_password认证插件。

  • sql_mode支持问题。8.0版本sql_mode不支持NO_AUTO_CREATE_USER,要避免配置的sql_mode中带有NO_AUTO_CREATE_USER。

  • 是否需要手动升级系统表。在MySQL 8.0.16版本之前,需要手动的执行mysql_upgrade来完成该步骤的升级,在MySQL 8.0.16版本及之后是由mysqld来完成该步骤的升级。

  • 高可用架构下 需要先升级从库,再逐步升级主库

升级路径

  1. 仅支持 GA 版本之间的升级
  2. MySQL 5.7-> MySQL 8.0,建议升级至 5.7 最新版,再升级 8.0
  3. MySQL 5.6-> MySQL 5.7 -> MySQL 8.0,不支持跨大版本升级。
  4. MySQL 8.0.x -> MySQL 8.0.z,支持跨小版本升级。

MySQL Shell 升级检查

可通过 MySQL Shell 工具进行版本升级检查,以验证是否满足升级条件。该工具适用于 MySQL5.7 和 MySQL 8.0 的所有 GA 版本。

官方文档链接:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-upgrade.html

MySQL Shell 安装

MySQL Shell 下载链接:https://dev.mysql.com/downloads/shell/

  1. 安装 MySQL Shell

  1. 运行 MySQL Shell

可直接执行 mysqlsh,进入 cli 交互模式,在执行升级检查时,指定 用户名/密码

也可在执行 mysqlsh 时,通过参数选项-u-p直接指定 用户名/密码

以上信息显示,当前 MySQL 服务器版本为 MySQL 5.7.22 社区版

升级检查

假设数据库 192.168.3.227 版本为 5.7.22,欲升级 8.0.30。则可通过如下几种方式检查升级。

【注意】
通过 configPath指定配置文件 my.cnf,可以检查新、旧版本冲突的配置项。

  1. 以交互模式,执行升级检查。

  1. 以命令模式,执行升级检查。

  1. 关于升级检查工具的帮助

【权限需求】

版本号低于 MySQL Shell 8.0.20 时,用于运行升级检查器实用程序的用户帐户必须具有 ALL 权限。从 MySQL Shell 8.0.21 开始,用户帐户需要 RELOADPROCESSSELECT 权限。

调整冲突项

根据升级检查结果,手动纠正影响升级的配置项,其中可能需要关注的注意事项如下:

  1. MySQL 5.7 的默认身份验证插件为 mysql_native_password,而 MySQL 8.0 的默认身份验证插件变更为 cache_sha2_password。即 MySQL 全局系统变量 default_authentication_plugin 的默认值从 mysql_native_password 变为 caching_sha2_password。该变化仅影响升级后的新建用户,不影响存量用户。

若启用新的验证插件,则需要通过如下命令修改用户密码。

  1. 如想继续保持适用 mysql_native_password 身份验证插件,可为 MySQL 服务器的配置文件(Linux 系统默认位置为 /etc/my.cnf)中增加如下参数。

【注意】
在 MySQL 8.0 版本中,用户验证方式配置项 default_authentication_plugin 已废弃。替换为 authentication_policy

  1. 需将分区表的存储引擎调整为 InnoDB

若数据库中存在存储引擎不是 InnoDB 的分区表,需将这些分区表的存储引擎调整为 InnoDB。命令语法如下:

  1. 默认字符集已从 latin1 更改为 utf8mb4。将影响如下系统变量:
    • character_set_servercharacter_set_database 系统变量的默认值已从 latin1 更改为 utf8mb4
    • collation_servercollation_database 系统变量的默认值已从 latin1_swedish_ci 更改为 utf8mb4_0900_ai_ci
  2. 从 MySQL 8.0.11 开始,禁止使用与服务器初始化时使用的设置不同的 lower_case_table_names 设置来启动服务器。

更多需注意的事项,参考链接:https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html

5.5.62升级到5.7.30示例

1、set global innodb_fast_shutdown=0;
2、关闭MySQL
3、修改my.cnf参数文件,例如basedir参数
4、使用新版本mysqld_safe启动MySQL,观察错误日志
5、若新版本小于8.0.16,那么需要使用 mysql_upgrade -uroot -p123456,观察错误日志

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
MySQL升级方法概述总结后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章
验证码:
请关注本站微信公众号,回复“小麦苗博客”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部