从MySQL5.7平滑升级到MySQL8.0的最佳实践分享

一、前言

升级需求:将5.7.35升级到8.0.27, 升级方式 in-place升级【关闭现有版本MySQL,将二进制或包替换成新版本并在现有数据目录上启动MySQL并执行升级任务的方式,称为in-place升级】

原版本 5.7.35 CentOS Linux release 7.9.2009

新版本 8.0.27 CentOS Linux release 7.9.2009

二、Mysql 生命周期

以下Mysql 生命周期-内容来自于互联网

关于数据库版本升级,一直都是热议话题,对于升级的缘由各家也有所不同,有业务驱动的,有DBA自发驱动的,有规划导向也有方向指引的……抛开各种原因,当升级这个决定落下来的时候,对于DBA手头的几百几千套数据库来说,就好比是一场动物大迁徙,满满的画面感。

从Oracle发布的版本生命周期规划可以看到,Mysql5.7已经走到了生命周期的终点,意味着后续将不再为Mysql5.7提供官方更新、错误修复或安全补丁。

阿里云和AWS都在官方公布了版本支持计划,Mysql5.7版本已经开始了倒计时。

图片

三、MySQL8.0的新特性

图片

默认字符集由latin1变为utf8mb4。

MyISAM系统表全部换成InnoDB表。

JSON特性增强。

支持不可见索引,支持直方图。

sql_mode参数默认值变化。

默认密码策略变更。

新增角色管理。

支持窗口函数,支持Hash join。

四、升级建议

支持从MySQL5.7升级到MySQL8.0,注意仅支持GA版本之间的升级。

不支持跨大版本的升级,如从5.6升级到8.0是不支持的。

建议升级大版本前先升级到当前版本的最近小版本,如5.7先升级到5.7.35后再升级到8.0。

做好充足的备份!数据无价!!!

五、升级前准备

5.1 Mysql-shell 检查工具兼容性

在执行升级操作前需要做一些检查工作,确认准备工作是否就绪,避免升级过程中出现异常。可以使用MySQL Shell使用util.checkForServerUpgrade进行检查,返回内容包括不符合迁移要求的问题,error的问题需要迁移前修改。

Mysql-shell 下载地址:https://dev.mysql.com/downloads/shell/

这里我们选择8027版本

图片

然后上传文件至5.7.35的机器/root目录下

[root@localhost ~]# tar -xf mysql-shell-8.0.27-linux-glibc2.12-x86-64bit.tar.gz

[root@localhost ~]# cd mysql-shell-8.0.27-linux-glibc2.12-x86-64bit/bin/

[root@localhost bin]# ./mysqlsh -uroot -p -S /tmp/mysql.sock -e "util.checkF

### 评估从 MySQL 5.78.0 的兼容性、性能改进与潜在风险 #### 兼容性评估 为了确保升级过程顺利,在进行 in-place 升级之前,应通过工具 `mysqlsh` 中的 `check-for-server-upgrade` 功能来检测当前数据库实例是否存在不兼容项。此功能可以识别可能影响升级成功的配置选项和语法差异[^3]。 对于特定的功能迁移问题,例如函数名称变更或者废弃的情况(如 `GeomFromText` 被替换为新的空间数据处理函数),需要提前调整应用程序逻辑以适配最新版的行为模式[^2]。 #### 性能改进分析 MySQL 8.0 提供了多项显著增强特性,包括但不限于更高效的索引结构(如 Invisible Indexes 和 Descending Indexes)、优化器改进以及 JSON 数据类型的全面支持。这些改动通常能够带来查询效率上的提升,并减少存储开销。然而实际收益取决于工作负载特点及具体应用场景[^1]。 另外需要注意的是,默认字符集由 latin1 改成了 utf8mb4 ,这虽然有助于更好地国际化应用开发,但也可能导致某些情况下磁盘占用增加约三倍以上;因此建议针对受影响较大的列单独测试其转换效果后再决定是否全局修改默认设置[^4]。 #### 潜在风险规避措施 尽管官方文档指出大多数情况下可以直接完成平滑过渡,但仍存在一些值得注意的风险因素: - **DDL/DML语句变化**:部分旧版本允许但新版本严格限制的操作可能会引发异常终止事务等问题; - **插件依赖冲突**:第三方组件如果没有及时更新至匹配的新接口标准,则很可能无法正常运作甚至崩溃整个系统; - **权限管理重构**:新版引入基于角色(Role-Based Access Control,RBAC)的安全机制替代传统细粒度控制模型,初次部署时需重新审视所有用户的授权状态以免遗漏重要访问权限分配。 综上所述,实施前务必制定详尽计划书涵盖上述各方面考量要素并通过模拟环境充分验证可行性之后再正式上线操作。 ```bash # 示例命令用于检查服务器升级兼容性 mysqlsh -- util check-for-server-upgrade \ {--user=root --host=localhost --port=3306} \ --target-version=8.0.27 \ --config-path=/path/to/my.cnf ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值