云数据库 MySQL 为您提供两种主要的数据库版本升级方式:通过控制台直接升级和通过数据传输服务(Data Transfer Service,DTS)间接升级。本文以MySQL 5.6 升级到 MySQL 5.7为例,为您介绍这两种数据库版本升级方式的说明和实现方法。
版本升级条件
不支持
create table … as select …
语法。云数据库 MySQL5.6、5.7主从同步基于 GTID 实现,默认仅支持 InnoDB 引擎。
单个实例的表数量超过30万后,可能会造成升级失败,同时也会影响数据库监控,请合理规范表的数量,控制单个实例表数量不超过30万。
升级方式说明
通过控制台直接升级:在符合条件的情况下(满足上述 版本升级条件),您可以直接在控制台操作,将现有实例的数据库版本升级至更高版本。这种方式通常较为便捷,建议升级前进行兼容性检查,在业务低峰期进行升级。
通过 DTS 间接升级:若您的实例不满足直接升级的条件或不方便进行直接升级,您可以新购一个高版本的 MySQL 实例,然后使用 DTS 将原实例的数据迁移至新实例。待数据验证无误后,即可将业务切换至新实例,并释放原实例。这种方式灵活性高,但需要额外进行数据迁移和校验工作。
注意事项
不支持降级数据库版本。
单节点(云盘)、云盘版(云盘)架构的实例不支持升级数据库版本。
主实例与关联的只读实例、灾备实例会同时升级至目标数据库版本,您可通过升级主实例的数据库版本来关联升级主实例下的只读实例和灾备实例。
云数据库 MySQL 版本升级会涉及到数据搬迁,通常需要较长时间,请您耐心等待,期间您的业务不受影响,可以访问。
版本升级完毕时会涉及实例切换(会出现秒级别的数据库连接断开),建议应用程序具备自动重连功能,并且建议在实例维护时间内进行切换。有关实例维护时间,请参考 设置实例维护时间。
方式一:通过控制台直接升级
准备工作
了解升级过程与影响
数据库版本不支持跨多版本升级,且默认升级为目标大版本中最新的小版本。例如:MySQL 5.6无法直接升级至 MySQL 8.0,需要先升级到MySQL 5.7,再升级到MySQL 8.0。
云盘版(云盘)架构的实例最低的数据库版本为 MySQL 5.7,因此不涉及 MySQL 5.6升级至 MySQL 5.7。
检查实例与数据库配置
查看自定义函数,确保函数中没有使用保留关键字,有关保留关键字请参见 MySQL 官网保留关键字。
检查最近一周是否有全量数据备份的成功记录,必要时请进行一次全量数据备份。
升级前请确保预留充足的存储空间。
增加本地日志保留时长,具体操作可参见 设置本地 binlog 保留。
为确保 MySQL 在新数据库版本中的稳定性和性能,完成数据库版本升级后,云数据库 MySQL 不再支持修改部分在高版本废弃的低版本的参数。在数据库版本升级前,建议您备份相关参数的修改记录,以便后续操作和审计。
升级前测试与模拟
建议在升级前新建一个高数据库版本的实例进行语法测试,避免低数据库版本语法或特性在升级高数据库版本后不支持。
建议在升级前 克隆实例,先使用克隆实例进行升级测试,确认各项功能正常后再升级原实例。
升级后注意事项
操作步骤
方式二:通过 DTS 间接升级
若您有一个 MySQL 5.6版本的实例不满足直接升级的条件或不方便进行直接升级,此时,您可以创建一个数据库版本为 MySQL 5.7的新实例,然后将原实例中的数据通过 DTS 迁移至新实例。在对新实例进行兼容性测试并观察一段时间,确认正常后,您可以选择销毁原实例,使用新实例,以此实现数据库版本的间接升级。
操作步骤
1. 创建一个 MySQL 5.7版本的实例,方法请参考 创建 MySQL 实例。
2. 通过 DTS 将数据迁移至以上创建的 MySQL 5.7实例,方法请参考 MySQL 迁移至 MySQL。
3. 登录数据库管理控制台,检查数据是否正常,方法请参见 登录实例。
4. 销毁原实例,方法请参考 销毁实例。
附录1:MySQL 5.6和 MySQL 5.7特性差异
特性 | MySQL 5.6 | MySQL 5.7 |
自动 kill 空闲事务 | 支持 | 支持 |
并行复制 | 支持 | 支持 |
动态线程池 | 不支持 | 支持 |
NOWAIT 语法 | 不支持 | 支持 |
Returning | 不支持 | 支持 |
列压缩 | 不支持 | 支持 |
闪回查询 | 不支持 | 支持 |
大事务复制 | 支持 | 支持 |
支持使用 fdatasync | 不支持 | 支持 |
自增列持久化 | 不支持 | 支持 |
InnoDB Buffer Pool 并行初始化 | 支持 | 支持 |
FAST DDL | 不支持 | 支持 |
Invisible Index | 不支持 | 支持 |
CATS 事务调度 | 不支持 | 支持 |
计算下推 | 不支持 | 支持 |
透明数据加密 | 不支持 | 支持 |
秒级加列 | 不支持 | 支持 |
异步删除大表 | 支持 | 支持 |
热点更新 | 不支持 | 支持 |
SQL 限流 | 支持 | 支持 |
LibraDB | 不支持 | 支持 |
附录2:MySQL 5.6升级至 MySQL 5.7的优势
增加透明数据加密功能,提高数据库的安全性。
支持热点更新合并优化,提升热点更新性能。
支持 DDL 进度展示。执行 DDL 操作期间,执行 show detail processlist 命令来查看。
增加默认表加密功能。
支持闪回查询持久化。
支持 Nonblocking DDL 功能。
支持 validate password 插件。
支持存储历史死锁信息。
支持 InnoDB 自增列持久化功能。