RDS MySQL支持在控制台中直接升级数据库版本。此外,您也可以通过迁移的方式间接升级数据库版本,例如升级已开启TDE功能的实例。

目录

方式一:通过控制台直接升级数据库版本

功能限制
限制类别 限制详情
实例限制 仅支持高可用版本地SSD盘实例。
主实例下面如果有多个只读实例,且只读实例之间的规格不相同,则暂时不支持升级。
升级前,请确保实例状态为运行中,如果为其他状态(如重启中创建网络连接中等),请等待任务结束后再发起数据库版本升级任务。
高可用版实例的主备节点状态健康且无延迟时,才支持升级。您可通过控制台监控告警功能查看备节点复制线程状态备节点复制延迟监控指标。
升级限制 不支持跨大版本升级。例如MySQL 5.6无法直接升级至MySQL 8.0,需要先升级到MySQL 5.7,再升级MySQL 8.0。
升级后不支持降级。
说明 升级完成后,旧版本的备份集无法用于恢复新版本实例,如需进行恢复操作,请使用实例升级后生成的备份集。
加密限制 如果实例开启了SSL功能,则不支持升级,请先关闭SSL加密后再升级。
如果实例开启了TDE功能,则不支持通过控制台直接升级,请参见方式二:通过数据迁移DTS升级数据库版本
数据库限制 数据库中创建了事件(EVENT)的实例不支持从5.7升级到8.0,您可以先删除EVENT,升级后再重新创建。
数据库中的存储过程、触发器、视图或函数中若包含MySQL 8.0不支持的特性,则升级失败。
如果实例中数据表数量超过20万张,可能会造成升级不成功,建议在升级前清理冗余表。
如果您使用了MyISAM、Memory,TokuDB,Sphinx或RocksDB引擎,则不支持升级,请先转换为InnoDB引擎。
规格限制 部分已下线的历史规格实例无法进行版本升级,请先进行规格升级。更多信息,请参见变更配置
注意 系统先升级备实例,完成后进行主备切换,再升级主实例。升级过程将造成不超过五分钟的业务中断,请您尽量在业务低峰期执行升级操作。
升级前准备
  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 配置信息区域单击升级数据库版本
    说明 如果未找到该入口,请确认实例版本是否符合升级的要求。
  3. 在弹出的对话框中,选择立即切换在设置时间段内升级,并单击确定
    • 立即切换:立即开始升级。
    • 在设置时间段内升级:在可维护时间段升级。您也可以单击右侧的修改快速修改可维护时间段。

方式二:通过数据迁移DTS升级数据库版本

对于不支持通过控制台直接升级的实例,您可以按如下步骤间接升级:

  1. 创建新实例
  2. 数据迁移至新实例
  3. 释放原实例

例如您可以创建MySQL 8.0的新实例,然后将开启了TDE功能的MySQL 5.7实例的数据迁移至新实例,最后释放MySQL 5.7的原实例。

注意 跨版本迁移请您务必先测试兼容性,并观察一段时间,确认正常后,再释放原实例。

附录一:MySQL 5.7升级MySQL 8.0的优势

  • 提高了安全性,并在账号管理中实现了更大的灵活性。
  • 支持资源组的创建和管理。
  • InnoDB存储引擎的功能增强。
  • 新增字符集、数据类型、语法、新型备份锁、optimizer_switch标志等支持。
  • JSON、XML增强。
  • Optimizer优化器功能增强。
  • 复制性能增强。
  • 支持创建多值索引、派生条件下推优化。
  • 支持读取MySQL授权表。
  • 支持资源分配控制。

附录二:MySQL5.6升级MySQL 5.7的优势

  • 增加密码管理、账号锁定、加密连接等功能,提高数据库的安全性。
  • 支持在线DDL操作。例如RENAME INDEX重命名索引等。
  • 改进了InnoDB引擎的可扩展性和临时表的性能,实现更快的数据加载速度。
  • 支持JSON。
  • 支持针对分区表的索引条件下推(ICP),以及全新的InnoDB空间索引。
  • 优化了大部分解析器、优化器和成本模型,提高数据库的可维护性、可扩展性和性能。
  • 扩展支持的字符集,包括中国国家标准规定的GB18030字符集。
  • 提供ngram全文解析器插件,支持中文、日文和韩文。
  • 优化源转储线程,减少锁的争用,提高了源吞吐量。
  • 大幅改进了复制延迟问题。
  • 新增sys系统库,提供多个监控项并减少存储空间占用,显著提高数据库的易用性。

附录三:MySQL 8.0和MySQL 5.7版本功能差异列表

说明 下表中仅列出MySQL 8.0与5.7的部分重要差异,其它各版本间差异,请参见MySQL Release Notes
特性 5.7 8.0
GRANT ... IDENTIFIED BY PASSWORD语法 支持 不支持
PASSWORD()函数 支持 不支持
FLUSH QUERY CACHERESET QUERY CACHE语法 支持 不支持
SQL_MODE系统变量的参数:DB2, MAXDB, MSSQL, MYSQL323, MYSQL40, ORACLE, POSTGRESQL, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, NO_TABLE_OPTIONS 支持 不支持
GROUP BY语法默认自动排序 支持 不支持
包含EXTENDEDPARTITIONS关键字的相关语法 支持 不支持
ENCODE()、DECODE()、ENCRYPT()等加密函数 支持 不支持
空间分析相关函数。更多信息,请参见官方文档 支持 不支持
函数以前接受WKB值的字符串或几何参数,现在不再允许几何参数 支持 不支持
\N解析为NULL 支持 不支持
PROCEDURE ANALYSE()函数 支持 不支持
通过NDB存储引擎创建分区表 支持 不支持
通过InnoDB存储引擎压缩临时表 支持 不支持
JSON_APPEND()函数 支持 不支持
在共享表空间中放置表分区的支持 支持 不支持
ALTER TABLE ... UPGRADE PARTITIONING语法 支持 不支持

附录四:MySQL 5.7和MySQL 5.6版本功能差异列表

说明 下表中仅列出MySQL 5.7与5.6的部分重要差异,其它各版本间差异,请参见MySQL Release Notes
特性 5.6 5.7
GTID模式下的CREATE...AS SELECT 支持 不支持
GTID模式下在事务中使用临时表 支持 不支持
在分区表中指定分区键 支持 不支持
ENGINE_NO_CACHE语法 支持 不支持
不可见索引(Invisible Indexes) 支持 不支持
UPDATE non_affected_rows INSERT语法 支持 不支持
Proxy相关命令 使用SET命令方式 使用Call Procedure模式
TokuDB、Sphinx、RocksDB和Memory引擎 支持 不支持
str_ord()函数 支持 不支持
raiseerror()函数 支持 不支持
OPTIMIZE TABLE table ASYNC 支持 不支持
ENGINE_NO_CACHE 支持 不支持
表INFORMATION.TABLE_UTILIZATION 支持 不支持
表INFORMATION_SCHEMA.INNODB_LOCK_WAITS中的requesting_thd_id列和blocking_thd_id 支持 不支持
表INFORMATION_SCHEMA.INNODB_RSEG 支持 不支持
表INFORMATION_SCHEMA.INNODB_IO_STATUS 支持 不支持
压缩列功能 支持 不支持
Query Plan Cache 支持 不支持
Limit + Union语法 不需要括号 需要括号
SHOW FULL PROCESSLIST语法 MySQL 5.7返回结果删除memoryquery_memory列。
max_statement_timemax_execution_time MySQL 5.7删除max_statement_time,只保留max_execution_time
RDS_SQL_MAX_AFFECTED语法 MySQL 5.7不再支持通过RDS_SQL_MAX_AFFECTED限制单条UPDATEDELETE影响的记录数。通过变量rds_sql_max_affected_rows控制。
并发性能优化调整 MySQL 5.7不再支持通过如下参数进行并发控制:
  • innodb_adaptive_tickets_algo
  • innodb_min_concurrency_tickets
  • rds_threads_running_ctl_mode
  • rds_threads_running_high_watermark
  • rds_filter_key_cmp_in_order
  • rds_reset_all_filter
  • rds_sql_delete_filter
  • rds_sql_select_filter
  • rds_sql_update_filter
  • rds_strict_concurrency
  • rds_thread_extra_concurrency
  • rds_strict_trx_idle_timeout
  • rds_sql_buf_read_bandwidth
  • rds_sql_buf_read_threshold_bytes
  • rds_sql_buf_write_bandwidth
  • rds_sql_buf_write_threshold_bytes
  • rds_sql_max_iops
连接数变量的调整 MySQL 5.7删除如下变量:
  • extra_max_connections
  • rds_root_connections
  • rds_sysinfo_connections
  • rds_sysinfo_user_list
复制相关调整
  • MySQL 5.7兼容性调整:
    • 不再支持GTID和非GTID之间的复制。
    • sql_slave_skip_counter不能再用于GTID。
    • 不再支持CREATE .... SELECT
  • MySQL 5.7 slave相关调整:
    • SHOW SLAVE LAG不再支持。
    • SHOW SLAVE STATUS不再支持超时。
    • SHOW SLAVE STATUS显示的信息变少。
    • slave的sql_thread不再支持执行超时。
    • slave的sql_thread不再支持跳过某些语句。
  • MySQL 5.7 Binlog调整:
    • 不再支持传输速度调整。
    • 不再支持rds_rpl_receive_buffer_difftime
    • 不再支持rds_rpl_receive_buffer_size
日志相关调整 MySQL 5.7错误日志调整:
  • 不再记录SHUTDOWN的IP、user和io/net latency。
  • 不再支持Duplicate key显示表名。

常见问题

问:升级过程中,实例为什么会出现闪断?是否会有其他严重风险?

答:为保证业务稳定,升级采用先备后主的方式。备实例升级完成后,业务自动切换至备实例,引发闪断。无其他严重风险。

问:升级时,主备实例会一起升级吗?

答:系统先行升级备实例,再升级主实例。

相关API

API 描述
RDS MySQL升级数据库大版本 升级RDS实例版本。