RDS MySQL提供了两种方式升级数据库版本,您可以通过控制台直接升级数据库,也可以新购一个高版本MySQL实例,通过DTS数据迁移任务将原实例数据迁移至新实例中,实现数据库版本的间接升级。
RDS MySQL不支持从控制台直接降低数据库版本。您可以新购低版本的RDS实例,使用DTS数据传输工具将高版本实例迁移至低版本实例,验证无误后释放高版本实例。
选择升级方式
方式一:通过控制台直接升级数据库版本与方式二:通过数据迁移DTS升级数据库版本支持MySQL 5.5升级至5.6、5.6升级至5.7、5.7升级至8.0、8.0升级至8.4。在升级数据库前,您需要通过以下内容选择合适的升级方式:
-
实例规格符合以下四种类型,且实例配置满足对应类型的要求,建议通过方式一:通过控制台直接升级数据库版本。
说明-
Serverless实例不支持通过控制台直接升级,建议使用方式二:通过数据迁移DTS升级数据库版本。
集群系列(ESSD云盘、高性能云盘)
高可用系列(ESSD云盘、高性能云盘)
-
数据库代理限制(如有):5.7升级至8.0时,数据库代理小版本不低于1.13.41;8.0升级至8.4时,数据库代理小版本不低于2.25.11。
-
实例状态限制:实例状态为运行中,主备节点状态健康且无延迟。
-
引擎限制:数据库及所有库表都为InnoDB引擎。
-
不属于已下线的历史规格。
高可用系列(高性能本地盘)
-
加密限制:未开启TDE加密功能(TDE开启后不支持关闭,如已开启TDE,请选择方式二:通过数据迁移DTS升级数据库版本进行升级)。
-
数据库代理限制(如有):5.7升级至8.0时,数据库代理小版本不低于1.13.41;8.0升级至8.4时,数据库代理小版本不低于2.25.11。
-
实例状态限制:实例状态为运行中,主备节点状态健康且无延迟。
-
表数量限制:不超过100万张。
-
引擎限制:数据库及所有库表都为InnoDB引擎。
-
规格限制:升级后的数据库版本必须支持原实例规格(含主实例和只读实例),且不属于已下线的历史规格,详情请参见RDS MySQL主实例规格。
基础系列(ESSD云盘、高性能云盘)
-
实例状态限制:实例状态为运行中。
-
引擎限制:数据库及所有库表都为InnoDB引擎。
-
不属于已下线的历史规格。
-
-
实例规格不符合以上四种类型或已经开启TDE加密功能,请使用方式二:通过数据迁移DTS升级数据库版本。
-
实例规格符合以上四种类型,但实例配置不满足相关要求,您可以参考下表方案修改配置后,使用方式一:通过控制台直接升级数据库版本,或使用方式二:通过数据迁移DTS升级数据库版本。
问题
解决方案
实例处于其它状态(如重启中)
等待任务结束后再发起数据库版本升级任务。
高可用系列高性能本地盘实例表数量超过100万张
在升级前清理冗余表。
部分库表未使用InnoDB引擎
使用
ALTER TABLE <表名> engine=InnoDB;命令转换为InnoDB引擎。实例规格为历史规格
进行规格升级后再升级数据库版本,更多信息请参见变更配置。
数据库代理小版本不符合要求
升级数据库小版本至1.13.41及以上,详情请参见升级数据库代理内核小版本。
实例存储类型为SSD云盘
将SSD云盘升级为ESSD云盘后,再升级数据库版本。
其它引擎升级数据库版本请参见:
方式一:通过控制台直接升级数据库版本
准备工作
-
了解新旧版本差异与优势
-
5.6升级至5.7:功能差异请参见附录六:MySQL 5.7和MySQL 5.6版本功能差异列表,升级优势请参见附录三:MySQL 5.6升级MySQL 5.7的优势。
-
5.7升级至8.0:功能差异请参见附录五:MySQL 8.0和MySQL 5.7版本功能差异列表,升级优势请参见附录二:MySQL 5.7升级MySQL 8.0的优势。
-
8.0升级至8.4:功能差异请参见附录四:MySQL 8.4和MySQL 8.0版本功能差异列表,升级优势请参见附录一:MySQL 8.0升级MySQL 8.4的优势。
-
-
了解升级过程与影响
-
版本跨度限制:不支持跨大版本升级,且默认升级为目标大版本中最新的小版本。例如:MySQL 5.6无法直接升级至MySQL 8.0,需要先升级到MySQL 5.7,再升级到MySQL 8.0。
-
降级限制:不支持从控制台直接降级。您可以新购低版本的RDS实例,使用DTS数据传输工具将高版本实例迁移至低版本实例,验证无误后释放高版本实例。
-
高性能本地盘实例升级过程:系统先升级备实例,完成后进行主备切换,再升级主实例。升级过程将造成15秒的业务中断,请您尽量在业务低峰期执行升级操作。
-
ESSD云盘实例升级过程:系统先建立新节点,并在新节点上执行升级,在新节点升级完成后链路将切换至新节点。升级过程中,将造成15秒的业务中断,请您尽量在业务低峰期执行升级操作。
-
-
检查实例与数据库配置
-
检查保留关键字:查看自定义函数,确保函数中没有使用保留关键字。
-
检查全量备份:检查最近一周是否有全量数据备份的成功记录,必要时请进行一次全量数据备份。
-
检查自动重连机制:在数据库升级过程中,RDS会进行实例切换,请您尽量在业务低峰期执行升级操作,或确保您的应用有自动重连机制。实例切换的影响请参见实例切换的影响。
-
检查可用存储空间:升级前请确保预留充足的磁盘可用空间(建议预留10 GB以上)。
-
调整日志清理策略:增加本地日志保留时长以及最大存储空间占有率。具体操作,请参见修改本地日志策略。
-
备份实例参数:为确保MySQL在新版本中的稳定性和性能,完成MySQL数据库大版本升级后,RDS不再支持查看和修改部分在高版本废弃的低版本的参数。在大版本升级前,建议您备份相关参数的修改记录,以便后续操作和审计。
-
5.6升级至5.7、5.7升级至8.0、8.0升级至8.4场景需要额外检查以下内容:
5.6升级至5.7
检查全文索引及版本信息:低于RDS MySQL 5.6 20221130版本的数据库在创建全文索引时会将其建立在系统表空间上,升级至5.7版本时有概率导致表空间损坏。如您小版本较低,请先升级至RDS MySQL 5.6下最新的小版本,然后再升级数据库大版本,详情请参见常见问题。
5.7升级至8.0
-
检查特性兼容:如果数据库中的存储过程、触发器、视图或函数中包含MySQL 8.0不支持的特性,请在升级前修改,否则会导致升级失败。
-
检查系统表依赖:检查您的业务是否对MySQL 5.7系统表(sys、mysql、information_schema、performance_schema库下的表)有依赖,由于MySQL 5.7中的部分系统表升级至8.0后会发生变化(如表被移除、表名变化、表结构变化等),若业务依赖这些发生变化的表,有可能出现错误。
-
检查数据类型兼容:RDS MySQL 8.0不再支持部分旧版本数据类型。如果表中字段含有MySQL 8.0不支持的数据类型,需要在升级前通过
REPAIR TABLE或逻辑导出+导入的方式修复。更多信息请参见准备升级安装。 -
检查
comment取值:MySQL 8.0 20221231及之后小版本引入参数loose_upgrade_clear_invalid_comment,该参数取值为ON(默认值)时,在升级过程中会自动清空表、字段、索引的注释乱码,避免升级失败。因此,您需要在升级前确认数据库表中的comment取值是否存在乱码,如果存在,comment将被清空。 -
检查存储过程:如果数据库中的存储过程或函数存在乱码,请在升级前修正,以免导致升级失败。
-
检查MySQL 5.5及之前版本的时间类型:如果数据库中存在MySQL 5.5及之前版本时间类型的表,请先将表重建,再升级为MySQL8.0,以免导致升级失败。
-
通过以下SQL查询数据库实例中是否存在MySQL 5.5及之前版本时间类型的表:
# 显式旧时间类型 SET SESSION show_old_temporals= ON; # 查询包含旧时间类型的表 SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE FROM information_schema.columns WHERE COLUMN_TYPE IN ("time /* 5.5 binary format */ ", "timestamp /* 5.5 binary format */", "datetime /* 5.5 binary format */ "); -
当表内存在MySQL 5.5及之前版本的时间类型时,可以使用以下命令将表结构重建:
# 重建表 ALTER TABLE <table_name> FORCE;
-
8.0升级至8.4
-
检查特性兼容:MySQL 8.4不再支持组复制(MGR)等部分旧特性。如果实例启用了MGR,需要在升级前停止组复制并清理相关配置,否则无法升级。
-
检查表、索引及元数据兼容:检查实例中是否存在MySQL 8.4不兼容的存储引擎、全文索引、discard tablespace、分区表外键、过长的视图列名或外键约束,以及SPATIAL或RTREE索引。命中问题时,需要在升级前修改表结构或删除相关索引,并在升级完成后按需重新创建。此外,使用
FLOAT或DOUBLE字段作为AUTO_INCREMENT列的表也需要提前修改。 -
检查实例拓扑及升级条件:检查主备节点健康状态、复制延迟、只读实例及备用只读实例的数量和规格、实例连接类型、未完成任务、目标版本规格和MaxScale版本等是否满足升级要求。不同实例规格的检查内容不同:本地盘会额外检查只读实例拓扑;云盘会检查存储类型和云环境限制。
-
检查参数、认证及连接兼容:MySQL 8.4移除了部劆8.0参数和认证配置,升级流程会自动过滤或转换不兼容参数。MySQL 8.4同时不再支持TLSv1和TLSv1.1,系统会自动调整服务端
tls_version,但使用旧TLS协议的客户端仍会在升级后连接失败,请提前确认客户端支持TLSv1.2或TLSv1.3。部分认证、权限和参数默认行为也发生变化,建议确保账号登录、权限和业务性能不受影响后升级。
-
-
-
升级前测试与模拟
-
语法测试:建议在升级前新建一个高版本RDS实例进行语法测试,避免低版本语法或特性在升级高版本后不支持。
-
模拟升级:建议在升级前克隆原实例,先使用克隆实例进行升级测试,确认各项功能正常后再升级原实例。
-
-
升级后注意事项
-
恢复旧版本实例:支持使用旧版本云盘备份恢复旧版本实例,高性能本地盘暂不支持。
-
恢复新版本实例:旧版本备份集无法用于恢复新版本实例,如需进行恢复操作,请使用实例升级后生成的备份集。
-
操作方式
根据升级场景选择升级方式:
|
升级方式 |
升级场景 |
|
进行前置检查并升级 |
|
|
直接升级 |
|
进行前置检查并升级
-
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
-
单击左侧导航栏大版本升级,进入升级前置检查。
-
在选择升级版本右侧的下拉框中,选择需要升级的版本号,单击创建升级检查报告,报告详情请参见大版本升级检查报告说明。
-
待检查报告检测完毕,并确认升级无风险后,切换页签至升级实例。
-
在选择升级版本右侧的下拉框中,选择需要升级的版本号,单击升级实例。
-
在弹出的大版本升级实例中,确认升级的版本,选择切换时间后,单击立即升级。
直接升级
方式二:通过数据迁移DTS升级数据库版本
对于不支持通过控制台直接升级的实例,您可以创建一个高数据库版本的新实例,通过DTS数据迁移任务将原实例数据迁移至新实例中,实现数据库的间接升级,相关步骤如下:
举例:您有一个开启了TDE功能的MySQL 5.7实例,其不能通过控制台直接升级数据库版本。此时,您可以创建一个数据库版本为MySQL 8.0的新实例,然后将原实例中的数据迁移至新实例,最后释放原实例,实现数据库版本的间接升级。
跨版本数据迁移后,请先测试兼容性并观察一段时间,确认正常后,再释放原实例。
附录一:MySQL 8.0升级MySQL 8.4的优势
-
增强长期稳定性。MySQL 8.4是LTS版本,适合生产环境长期使用,后续8.4.x以稳定性、安全修复和兼容维护为主。
-
增强认证能力。支持WebAuthn/FIDO2认证,Enterprise Edition可使用安全密钥、生物识别等认证方式;Windows上支持SASL LDAP/GSSAPI/Kerberos认证。
-
增强GTID能力。支持Tagged GTID,可使用
UUID:TAG:NUMBER区分不同业务域、管理操作或数据操作,并提供TRANSACTION_GTID_TAG权限控制。 -
改进复制可用性。多线程applier支持
SQL_AFTER_GTIDS,副本追赶指定GTID集时可以继续利用并行复制能力。 -
增强relay log恢复能力。支持清理relay log尾部未完成事务及相关残留文件,降低异常宕机后relay log不一致带来的恢复风险。
-
增强Group Replication运维能力。8.4 LTS系列内支持跨版本组成员和原地降级,切主流程对DDL/DCL的等待更完整,并支持single-primary模式下的认证信息预清理,降低内存和切主风险。
-
改进统计信息能力。Histogram支持自动或手动更新控制,有助于提升优化器统计信息维护的可控性。
-
增强执行计划诊断能力。
EXPLAIN FORMAT=JSON支持格式版本选择,支持EXPLAIN FORMAT=JSON INTO写入用户变量,并支持EXPLAIN FOR SCHEMA和FOR DATABASE,便于诊断跨schema的SQL。 -
增强TLS证书校验能力。支持更严格的TLS证书校验,提高加密连接安全性。
-
改进Clone能力。同一major或minor系列内clone不再要求point release完全一致,便于8.4.x之间做实例初始化、恢复和扩容。
-
增强审计和防火墙能力。Enterprise Firewall支持周期性重载cache,也支持自定义内部对象schema,运维灵活性更高。
-
改进密钥管理迁移能力。支持从keyring component迁移到keyring plugin,提升加密能力迁移和兼容场景的灵活性。
-
改进升级可观测性。数据目录维护JSON格式的
mysql_upgrade_history,记录安装和升级历史,便于审计和问题排查。 -
提升SQL和优化器演进能力。新增
TABLESAMPLE、QUALIFY、PARALLEL等关键字,为后续SQL能力和优化器扩展提供基础。
附录二:MySQL 5.7升级MySQL 8.0的优势
-
提高了安全性,并在账号管理中实现了更大的灵活性。
-
支持资源组的创建和管理。
-
InnoDB存储引擎的功能增强。
-
新增字符集、数据类型、语法、新型备份锁、optimizer_switch标志等支持。
-
JSON、XML增强。
-
Optimizer优化器功能增强。
-
复制性能增强。
-
支持创建多值索引、派生条件下推优化。
-
支持读取MySQL授权表。
-
支持资源分配控制。
附录三:MySQL 5.6升级MySQL 5.7的优势
-
增加密码管理、账号锁定、加密连接等功能,提高数据库的安全性。
-
支持在线DDL操作。例如RENAME INDEX重命名索引等。
-
改进了InnoDB引擎的可扩展性和临时表的性能,实现更快的数据加载速度。
-
支持JSON。
-
支持针对分区表的索引条件下推(ICP),以及全新的InnoDB空间索引。
-
优化了大部分解析器、优化器和成本模型,提高数据库的可维护性、可扩展性和性能。
-
扩展支持的字符集,包括中国国家标准规定的GB18030字符集。
-
提供ngram全文解析器插件,支持中文、日文和韩文。
-
优化源转储线程,减少锁的争用,提高了源吞吐量。
-
大幅改进了复制延迟问题。
-
新增sys系统库,提供多个监控项并减少存储空间占用,显著提高数据库的易用性。
附录四:MySQL 8.4和MySQL 8.0版本功能差异列表
下表中仅列出MySQL 8.4与8.0的部分重要差异,其他各版本间差异,请参见MySQL Release Notes。
|
特性 |
8.0 |
8.4 |
|
WebAuthn认证 |
不支持 |
支持WebAuthn/FIDO2认证,Enterprise Edition提供服务端插件 |
|
Windows上的SASL LDAP |
不支持 |
支持Windows上的SASL LDAP/GSSAPI/Kerberos认证 |
|
Clone Plugin跨小版本能力 |
通常要求point release匹配 |
同一major或minor内可跨point release进行clone,例如8.4.0和8.4.x |
|
Tagged GTID |
不支持 |
支持 |
|
GTID标签权限控制 |
不支持 |
新增 |
|
多线程applier与 |
使用受限,可能切回单线程 |
支持多线程applier下使用 |
|
Relay log恢复清理 |
relay log恢复行为较旧 |
可清理relay log尾部未完成事务和相关残留文件 |
|
Group Replication 8.4.x组内兼容 |
不适用 |
8.4 LTS系列内支持跨版本组成员和原地降级 |
|
Group Replication认证垃圾回收 |
常规GC |
支持single-primary模式下的preemptive certification garbage collection |
|
|
覆盖范围较少 |
会等待更多DDL/DCL完成后再切主 |
|
Histogram自动更新 |
不支持AUTO UPDATE或MANUAL UPDATE |
支持histogram自动或手动更新控制 |
|
|
单一JSON格式 |
支持 |
|
|
不支持 |
支持将JSON explain输出写入用户变量 |
|
|
不支持 |
支持按指定schema解释语句 |
|
MySQL客户端注释处理 |
默认剥离注释 |
默认保留注释 |
|
TLS证书校验 |
行为较宽松 |
支持强制TLS证书校验 |
|
Enterprise Firewall缓存重载 |
主要在启动或插件重装时重载 |
支持按周期重载 |
|
Enterprise Firewall存储schema |
固定内部位置 |
支持指定自定义schema |
|
Keyring component到plugin迁移 |
不支持 |
支持keyring component迁移到keyring plugin |
|
升级历史记录 |
使用旧升级信息文件机制 |
数据目录维护JSON格式的 |
附录五: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 CACHE、 RESET QUERY CACHE语法 |
支持 |
不支持 |
|
SQL_MODE系统变量的参数:DB2, MAXDB, MSSQL, MYSQL323, MYSQL40, ORACLE, POSTGRESQL, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, NO_TABLE_OPTIONS |
支持 |
不支持 |
|
GROUP BY语法默认自动排序 |
支持 |
不支持 |
|
包含EXTENDED或PARTITIONS关键字的相关语法 |
支持 |
不支持 |
|
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返回结果删除memory和query_memory列。 |
|
|
max_statement_time和max_execution_time |
MySQL 5.7删除max_statement_time,只保留max_execution_time。 |
|
|
RDS_SQL_MAX_AFFECTED语法 |
MySQL 5.7不再支持通过RDS_SQL_MAX_AFFECTED限制单条UPDATE或DELETE影响的记录数。通过变量rds_sql_max_affected_rows控制。 |
|
|
并发性能优化调整 |
MySQL 5.7不再支持通过如下参数进行并发控制:
|
|
|
连接数变量的调整 |
MySQL 5.7删除如下变量:
|
|
|
复制相关调整 |
|
|
|
日志相关调整 |
MySQL 5.7错误日志调整:
|
|
|
在5.6.4版本之前,旧时间类型不支持微秒。 |
时间类型支持微秒级别。 重要
在从5.6升级到5.7的过程中,系统会检测并重建包含旧时间类型字段的表,这会使升级过程变慢。 |
|
附录七:MySQL 5.5和MySQL 5.6版本功能差异列表
下表中仅列出MySQL 5.5和5.6的部分重要差异,其他各版本间差异,请参见MySQL 5.6 Reference Manual。
|
特性 |
MySQL 5.5 |
MySQL 5.6 |
|
全文索引 |
不支持 |
支持 |
|
InnoDB online DDL |
不支持 |
部分支持 |
|
REDO |
最大支持4 GB |
最大支持512 GB |
|
刷脏 |
单线程 |
单独的刷脏线程 |
|
purge |
单线程 |
多线程 |
|
EXCHANGE PARTITION |
不支持 |
支持 |
|
DML显式指定分区 |
不支持 |
支持 |
|
INFORMATION_SCHEMA |
MySQL 5.6提供更多关于Buffer Pool信息和表、索引、字段等元信息。 |
|
|
PERFORMANCE_SCHEMA |
MySQL 5.6中PFS增加了更多的监控信息和查看形式。 |
|
|
复制 |
MySQL 5.6中复制增强和变更包括:
重要
RDS MySQL 5.5升级至5.6后,自动切换为基于GTID的复制模式。 |
|
|
优化器 |
MySQL 5.6增强了优化器能力,主要包括:
|
|
|
不支持 |
支持 |
|
|
不支持 |
支持 |
|
|
不支持 |
支持 |
|
|
不支持 |
支持 |
|
|
不支持 |
支持 |
|
常见问题
-
Q:升级过程中,为什么会出现实例切换?是否会有其他严重风险?
A:为保证业务稳定,高性能本地盘实例升级采用先备后主的方式,备实例升级完成后,业务自动切换至备实例。ESSD云盘实例升级采用新建节点的方式,新节点升级完成后,业务自动切换至新节点。无其他严重风险。主备切换的影响请参见主备切换的影响。
-
Q:升级时,主备实例会一起升级吗?
A:高性能本地盘升级时,系统先行升级备实例,再升级主实例。
-
Q:MySQL 5.7基础系列SSD云盘实例如何升级?
A:当前不支持该类型的实例升级。如您想升级MySQL 5.7基础系列SSD云盘实例,您可以先将目标实例存储类型从SSD云盘变更为ESSD云盘,然后再升级数据库版本。
-
Q:数据库版本升级前后,参数模板是否保持一致?
A:RDS MySQL 5.7升级至RDS MySQL 8.0时,如果升级前实例为系统参数模板,升级后实例将设置为新版本对应的系统参数模板,如升级前为MySQL_InnoDB_5.7_高可用系列_高性能参数模板,升级后将设置为MySQL_InnoDB_8.0_高可用系列_高性能参数模板;如果升级前实例为用户自定义参数模板,升级后参数模板将不会被保留。
-
Q:数据库版本升级期间,是否能变更实例?
A:数据库版本升级期间不支持变更实例,必须在版本升级完成后,才可以进行其他操作。
-
Q:数据库版本是否支持自动升级?
A:暂不支持自动升级数据库版本。
-
Q:数据库版本是否支持降级?
A:不支持通过控制台直接降级。根据实例是否存在业务数据,选择以下方案:
-
有业务数据:新购低版本实例,通过DTS数据迁移工具将高版本实例数据迁移至新购的低版本实例,迁移完成后释放高版本实例,间接实现数据库版本降级。详情请参见RDS实例间数据迁移。
-
无业务数据:退订原实例后重新购买所需低版本实例。包年包月实例请参考退款说明进行退订,按量付费实例可直接释放。
-
-
Q:RDS MySQL 5.6升级至RDS MySQL 5.7或RDS MySQL 5.7升级至RDS MySQL 8.0时,升级失败,提示“当前实例有全文索引且小版本低于20221130,请先进行小版本升级后再进行删除、重建全文索引”或“当前实例包含建立在系统表空间的全文索引,请删除并重建相应全文索引后再进行升级操作”,问题原因和解决方案是什么?
A:问题原因和解决方案如下:
-
问题原因
由于MySQL的历史原因,较低版本的MySQL 5.6在创建全文索引(Full-Text Index)时会建立在系统表空间(System Tablespace)之上。当升级到5.7或进一步升级到8.0后,建立在系统表空间的全文索引有概率会导致表空间损坏,因此需要在升级前进行处理,避免实例数据损坏和不可访问等问题。
说明RDS MySQL 5.6 20221130对该问题进行了修复,全文索引将建立在单独的表空间之上。
-
解决方案
重要老版本RDS MySQL 5.6全文索引会创建在系统表空间,因此需要确保升级至RDS MySQL 5.7前的版本是RDS MySQL 5.6 20221130或之后的版本。如您的版本较低,请先升级到最新的RDS MySQL 5.6版本。
-
根据提示中的表名,删除建立在系统表空间的全文索引。
# 删除全文索引 ALTER TABLE $table_name DROP INDEX $fts_name; -
重新创建全文索引。
# 重新创建全文索引 ALTER TABLE $table_name ADD FULLTEXT INDEX $fts_name; -
建立完索引后,可以使用如下SQL对当前实例的全文索引进行检查。SQL会返回建立在系统表空间的全文索引,如查询结果为空,则RDS MySQL5.6升级至RDS MySQL5.7的过程中不会因为该问题而导致失败。
# 查询建立在系统表空间的全文索引 SELECT NAME FROM information_schema.INNODB_SYS_TABLES WHERE TABLE_ID IN ( SELECT CONV(SUBSTRING_INDEX(SUBSTRING_INDEX(NAME, '_', -4),'_', 1),16,10) FROM INNODB_SYS_TABLES WHERE NAME LIKE '%fts_00000000%' AND SPACE = 0);
-
-
-
Q:RDS MySQL 5.7升级至RDS MySQL 8.0时,报错
267 - Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '=',该如何处理?A:请检查MySQL中的字符集和排序规则。如果当前使用的是utf8mb4_general_ci,建议通过以下 SQL 语句将其修改为utf8mb4_0900_ai_ci。
# 修改库的字符集和排序规则 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; # 修改表的字符集和排序规则 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; # 修改字段的字符集和排序规则 ALTER TABLE table_name CHANGE column_name column_name type CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;在MySQL 5.7中使用utf8mb4_general_ci排序规则创建的表,如果升级到MySQL 8.0,系统默认会使用utf8mb4_0900_ai_ci作为排序规则。如果在查询中比较一个使用utf8mb4_general_ci的列与一个使用utf8mb4_0900_ai_ci的列,MySQL将无法处理这两种不同的排序规则,从而导致错误。
-
Q:无论是否有只读实例,升级大版本的闪断时间都是15秒吗?
A:是的,请您尽量在业务低峰期执行升级操作。
相关API
|
API |
描述 |
|
升级RDS实例版本。 |