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

目录

说明 如果通过方式一无法升级成功,您可以使用方式二。

其他引擎升级数据库版本请参见:

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

功能介绍

支持在控制台进行如下形式的版本升级:

  • RDS MySQL 5.7 → RDS MySQL 8.0
  • RDS MySQL 5.6 → RDS MySQL 5.7
  • RDS MySQL 5.5 → RDS MySQL 5.6
功能限制
限制类别限制详情
实例限制仅支持高可用版本地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.78.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.65.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_timeMySQL 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显示表名。

常见问题

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

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

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

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

  • 问:基础版实例控制台上为什么没有数据库版本的升级入口?基础版实例应如何升级?
    答:基础版实例当前不支持直接升级,因此控制台上无法看到升级入口。您可以先将目标实例从基础版升级为高可用版,然后再升级数据库版本
    说明
    • 当前仅支持高可用版本地SSD盘实例通过控制台直接升级数据库版本。
    • MySQL 5.7基础版(SSD云盘)在升级为高可用版时,支持将存储类型从SSD云盘变更为本地SSD盘。
  • Q:数据库版本升级期间,是否能变更实例?

    A:数据库版本升级期间不支持变更实例,必须在版本升级完成后,才可以进行其他操作。

  • Q:数据库版本是否支持自动升级?

    A:暂不支持自动升级数据库版本。

相关API

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