RDS MySQL支持在控制台中进行5.6到5.7以及5.5到5.6版本的直接升级。此外,您也可以通过迁移的方式间接升级数据库版本,例如从5.7升级至8.0。

根据原实例版本不同可选择以下两种方式升级:

通过控制台直接升级数据库版本

功能限制
  • 本功能仅支持高可用版实例。
  • 仅支持MySQL 5.6到MySQL 5.7,以及MySQL 5.5到MySQL 5.6的升级,且升级后,不支持降级。
    说明 升级完成后,旧版本的备份集无法用于恢复新版本实例,如需进行恢复操作,请使用实例升级后生成的备份集。
  • 如果实例开启了SSL功能,则不支持升级,请先关闭SSL功能后再升级。
  • 如果实例开启了TDE功能,则不支持通过控制台直接升级,请参见通过数据迁移升级
  • 仅支持对主实例进行升级,如果实例下包含只读实例,则不支持通过控制台直接升级,请参见通过数据迁移升级
  • 如果实例中数据表数量超过20万张,可能会造成升级不成功,建议在升级前清理冗余表。
  • 高可用版实例的主备节点状态健康且无延迟时,才支持升级。您可通过控制台监控告警功能查看备节点复制线程状态备节点复制延迟监控指标。
  • 如果您使用了MyISAM、Memory,TokuDB,Sphinx或RocksDB引擎,则不支持升级,请先转换为InnoDB引擎。
  • 升级前,请确保实例状态为运行中,如果为其他状态(如重启中创建网络连接中等),请等待任务结束后再发起数据库版本升级任务。
  • 部分已下线的历史规格实例无法进行版本升级,请先进行规格升级。更多信息,请参见变更配置
注意 RDS MySQL 5.6高可用版实例升级版本先升级备库节点,完成后进行主备切换,再升级主库节点。升级过程将造成不超过五分钟的业务中断,请您尽量在业务低峰期执行升级操作。
升级前准备
  • 仔细对比升级前后版本差异,避免应用使用的低版本语法或特性,在升级高版本后不支持。具体版本见差异请参见MySQL Release Notes附录2:MySQL 5.6和MySQL 5.7版本功能差异列表
  • 了解MySQL 5.7版本的优势。更多信息,请参见附录1:MySQL 5.7的版本优势
  • 建议您克隆原实例,先使用克隆实例进行升级测试,确认各项功能正常后再升级原实例。
  • 升级前请检查最近一周是否有全量数据备份的成功记录,必要时请进行一次全量数据备份。
  • 在数据库升级过程中,RDS服务会出现闪断,请您尽量在业务低峰期执行升级操作,或确保您的应用有自动重连机制。
  • 升级前请确保预留充足磁盘可用空间。
  • 建议调整Binlog清理策略,增加本地保存Binlog时长以及最大存储空间占有率。具体操作,请参见长期保留备份
  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 配置信息区域单击升级数据库版本
    说明 如果未找到该入口,请确认实例版本是否符合升级的要求。
  3. 在弹出的对话框中,选择立即切换在设置时间段内升级,并单击确定
    • 立即切换:立即开始升级。
    • 在设置时间段内升级:在可维护时间段升级。您也可以单击右侧的修改快速修改可维护时间段。

通过数据迁移升级

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

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

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

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

附录1:MySQL 5.7的版本优势

MySQL 5.7与MySQL 5.6相比,具有如下优势:

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

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

说明 下表中仅列出MySQL 5.6与5.7的部分重要差异,其它各版本见差异,请参见MySQL Release Notes
特性 5.6 5.7
GTID模式下的CREATE...AS SELECT 支持 不支持
GTID模式下在事务中使用临时表 支持 不支持
在分区表中指定分区键 支持 不支持
ENGINE_NO_CACHE语法 支持 不支持
不可见索引(Invisible Indexes) 支持 不支持
SELECT FOR UPDATE WAIT语法 支持 不支持
ELECT FOR UPDATE语法 支持 不支持
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实例版本。