- 最新动态
- 功能总览
-
服务公告
- 漏洞公告
-
产品公告
- 【停售公告】华为云云数据库RDS for PostgreSQL 12版本于2025年5月1日00:00(北京时间)停售通知
- 【下线公告】华为云云数据库RDS for PostgreSQL 10、11版本于2024年11月1日00:00(北京时间)下线通知
- 【停售公告】华为云云数据库RDS for MySQL 5.6版本于2024年7月1日00:00(北京时间)停售通知
- 【停售公告】华为云云数据库RDS for PostgreSQL 10、11版本于2024年7月1日00:00(北京时间)停售通知
- 【下线公告】华为云云数据库RDS for PostgreSQL 9.5、9.6版本于2024年7月1日00:00(北京时间)下线通知
- 【通知】2024年5月28日起RDS for MySQL内存加速特性开放公测
- 产品发布说明
- 产品介绍
- 计费说明
- 快速入门
- 内核介绍
-
用户指南
- RDS for MySQL用户指南
- RDS for MariaDB用户指南
- RDS for PostgreSQL用户指南
- RDS for SQL Server用户指南
-
最佳实践
- RDS最佳实践汇总
- RDS for MySQL
- RDS for PostgreSQL
-
RDS for SQL Server
- 恢复备份文件到RDS for SQL Server实例的版本限制
- 使用导入导出功能将ECS上的SQL Server数据库迁移到RDS for SQL Server
- 修改RDS for SQL Server实例的参数
- RDS SQL Server支持DMV动态管理视图
- 使用导入导出功能将本地SQL Server数据库迁移到RDS for SQL Server
- 在rdsuser主账号下创建子账号
- 创建tempdb临时数据文件
- Microsoft SQL Server发布与订阅
- RDS for SQL Server添加c#CLR程序集的使用方法
- RDS for SQL Server添加链接服务器
- RDS for SQL Server 如何将线下SSRS报表服务部署上云
- RDS for SQL Server收缩数据库
- 使用DAS在RDS for SQL Server主备实例上分别创建和配置Agent Job和Dblink
- 创建实例定期维护job
- 使用扩展事件
- 性能白皮书
-
API参考
- 使用前必读
- API概览
- 如何调用API
- API v3.1(推荐)
-
API v3(推荐)
- 查询API版本
- 查询数据库引擎的版本
- 查询数据库规格
- 查询数据库磁盘类型
- 获取磁盘空间使用量
-
实例管理
- 创建数据库实例
- 创建数据库实例(v5接口)
- 按需转包周期
- 停止实例
- 开启实例
- 修改实例名称
- 修改实例备注
- 申请内网域名
- 修改内网域名
- 查询实例域名
- 查询实例IPv6域名
- 获取实例的复制状态
- 查询数据库可变更规格接口
- 变更数据库实例的规格
- 扩容数据库实例的磁盘空间
- 设置自动扩容策略
- 查询自动扩容策略
- 单机转主备实例
- 重启数据库实例
- 删除数据库实例
- 查询数据库实例列表
- 绑定和解绑弹性公网IP
- 切换主备实例的倒换策略
- 手动倒换主备
- 更改主备实例的数据同步方式
- 设置实例读写状态
- 迁移主备实例的备机
- 设置可维护时间段
- 升级内核小版本
- 设置秒级监控策略
- 查询秒级监控策略
- 开启实例TDE(SQL Server)
- 查询实例TDE状态(SQL Server)
- 解除节点只读状态
- 灾备实例
- 数据库安全性
- 备份与恢复
- 大版本升级
- 获取日志信息
- 实例诊断
- SQL限流(PostgreSQL)
- 数据库代理(MySQL)
- 管理数据库和用户(MySQL)
- 管理数据库和用户(PostgreSQL)
- 管理数据库和用户(SQL Server)
- 参数管理
- 插件管理(PostgreSQL)
- 配置只读延迟库(PostgreSQL)
- 回收站
- 标签管理
- 配额管理
- 获取任务信息
- 历史API
- 权限和授权项
- 附录
- SDK参考
-
常见问题
-
产品咨询
- 使用RDS要注意些什么
- RDS实例是否会受其他用户实例的影响
- 不同RDS实例的CPU和内存是否共享
- 创建RDS实例需要多长时间
- 为何使用了RDS后网站登录较慢
- 主备同步存在多长时间的延迟
- 多台弹性云服务器是否可以使用同一个RDS数据库
- RDS购买磁盘加密后,备份文件会加密吗
- 什么是RDS实例可用性
- 云数据库RDS支持跨AZ高可用吗
- RDS是否支持主备实例变更为单机实例
- RDS for MySQL与TaurusDB的区别
- 云数据库RDS是否支持CloudPond
- RDS for MySQL实例支持哪些加密函数
- RDS for MySQL是否兼容MariaDB
- RDS for MySQL是否支持TokuDB
- RDS for MySQL开启GTID后有哪些限制
- RDS for MySQL是否有单表尺寸限制
- 登录RDS实例时能使用加密密码认证吗
- RDS实例内网IP和私有IP的区别
- 找不到我的RDS资源怎么办
- 资源冻结/释放/停止/删除/退订
- 资源及磁盘管理
-
数据库连接
- RDS实例连接失败怎么办
- RDS数据库连接数满的排查思路
- RDS数据库实例支持的最大数据连接数是多少
- 内网方式下ECS无法连接RDS实例的原因
- 客户端问题导致连接RDS实例失败
- 服务端问题导致连接RDS实例失败
- 应用程序是否需要支持自动重连RDS数据库
- RDS绑定公网IP后无法ping通的解决方案
- RDS跨地域内网能访问吗
- 为什么RDS实例重置密码后新密码没有生效
- 可以访问RDS备实例吗
- 如何查看RDS for MySQL数据库的连接情况
- 连接RDS for SQL Server数据库时,连接超时是否会自动退出
- RDS for SQL Server连接不上的判断方法
- 外部服务器能否访问RDS数据库
- ECS内网访问RDS,是否受带宽限制
- 如何安装SQL Server Management Studio
- 数据库迁移
-
数据库权限
- RDS的root账号为什么没有super权限
- RDS ManageAccess权限和DAS权限有什么区别
- 本地客户端连接RDS实例后如何查看已授权的数据库
- 使用DAS登录RDS数据库是否有人数限制,密码多次输入错误有无锁死机制
- RDS for MySQL是否支持多账号
- 普通用户在postgres数据库下创建对象失败
- 删除RDS for PostgreSQL数据库中的角色失败
- RDS for PostgreSQL数据迁移过程中由于权限问题导致迁移报错
- 如何给RDS for PostgreSQL数据库中的用户赋予REPLICATION权限
- 更改云数据库 RDS for PostgreSQL数据库中表的OWNER报错
- RDS for SQL Server 2017 企业版主备实例的登录名权限如何同步到只读实例
- RDS for SQL Server中主实例的账号删除重建后,权限是否会自动同步
- 数据库存储
- 数据库基本使用
- 备份与恢复
- 只读实例和读写分离
- 数据库监控
- 扩容及规格变更
-
数据库参数修改
- RDS是否支持使用SQL命令修改全局参数
- 如何修改RDS实例的时区
- 如何设置RDS for MySQL 8.0字符集的编码格式
- 如何设置RDS for MySQL的表名是否区分大小写
- 如何设置RDS for MySQL实例开启查询缓存
- 如何设置RDS for MySQL实例的密码过期策略
- 如何修改RDS for MySQL实例的事务隔离等级
- 如何确保RDS for MySQL数据库字符集正确
- 如何使用utf8mb4字符集存储emoji表情到RDS for MySQL实例
- RDS for PostgreSQL的哪些参数设置不合理会导致数据库不可用
- 如何设置RDS for PostgreSQL实例的临时文件磁盘占用上限
- 如何设置RDS for PostgreSQL实例支持test_decoding插件
- 如何在RDS for SQL Server数据库添加ndf文件的路径
- 如何修改RDS for SQL Server字符集的排序规则
- 日志管理
- 网络安全
- 版本升级
- RDS API&SDK等开发者相关
-
产品咨询
-
故障排除
-
RDS for MySQL
- 备份恢复
- 主备复制
- 参数类
-
性能资源类
- CPU使用率高问题排查与优化
- 内存使用超限风险与优化
- 磁盘性能带宽超上限
- 联合索引设置不当导致慢SQL
- 数据库磁盘满导致被设置read_only
- Binlog未清理导致磁盘占用高
- 业务死锁导致响应变慢
- MySQL只读实例磁盘占用远超主实例
- RDS for MySQL CPU升高定位思路
- 冷热数据问题导致sql执行速度慢
- 表碎片率过高可能导致的问题
- 复杂查询造成磁盘满
- 怎么解决查询运行缓慢的问题
- 长事务导致规格变更或小版本升级失败
- RDS for MySQL数据库报错Native error 1461的解决方案
- RDS for MySQL增加表字段后出现运行卡顿现象
- 长事务导致UNDO增多引起磁盘空间满
- RDS for MySQL如何定位一直存在的长事务告警
- RDS for MySQL部分SQL的commit时间偶现从几毫秒陡增到几百毫秒
- ibdata1为什么会变大
-
SQL类
- RDS for MySQL执行SQL报错无法识别双引号
- 更新emoji表情数据报错Error 1366
- 索引长度限制导致修改varchar长度失败
- 建表时timestamp字段默认值无效
- 自增属性AUTO_INCREMENT为什么未在表结构中显示
- 存储过程和相关表字符集不一致导致执行缓慢
- RDS MySQL报错ERROR [1412]的解决方法
- 创建二级索引报错Too many keys specified
- 存在外键的表删除问题
- distinct与group by优化
- 字符集和字符序的默认选择方式
- MySQL创建用户提示服务器错误
- delete大表数据后,再次查询同一张表时出现慢SQL
- 设置事件定时器后未生效
- 为什么有时候用浮点数做等值比较查不到数据
- 开通数据库代理后有大量select请求分发到主节点
- 执行RENAME USER失败的解决方法
- 有外键的表无法删除报错ERROR[1451]的解决方案
- 表字段类型转换失败的解决方法
- RDS for MySQL创建表失败报错Row size too large的解决方案
- RDS for MySQL数据库报错ERROR [1412]的解决方案
- 外键使用不规范导致实例重启失败或执行表操作报错ERROR 1146: Table 'xxx' doesn't exist
- RDS for MySQL在分页查询时报错:Out of sort memory, consider increasing server sort buffer size
- RDS for MySQL创建用户报错:Operation CREATE USER failed
- RDS for MySQL使用grant授权all privileges报语法错误
- RDS for MySQL 5.6版本实例创建表报错
- 无主键表添加自增主键后导致主备节点查询数据不一致
- RDS for MySQL插入数据提示Data too long for column
-
连接类
- 连接数据库报错Access denied
- mariadb-connector SSL方式连接数据库失败
- RDS for MySQL建立连接慢导致客户端超时报connection established slowly
- root账号的ssl_type修改为ANY后无法登录
- 通过DAS登录实例报错Client does not support authentication protocol requested by server
- 通过DAS授权或取消授权时报错Your password does not satisfy the current policy requirements
- 客户端TLS版本与RDS for MySQL不一致导致SSL连接失败
- 使用root账号连接数据库失败
- RDS for MySQL客户端连接实例后会自动断开
- RDS for MySQL实例无法访问
- RDS for MySQL数据库修改authentication_string字段为显示密码后无法登录
- RDS for MySQL升级版本后,导致现有配置无法正常连接到MySQL-server
- 客户端超时参数设置不当导致连接超时退出
- RDS for MySQL在启用了SSL验证连接功能后,导致代码(php/java/python)等连接数据库失败
- istio-citadel证书机制导致每隔45天出现断连
- 数据库版本升级后Navicat客户端登录实例报错1251
-
其他使用问题
- 慢日志显示SQL语句扫描行数为0
- SQL诊断结果中记录的行数远小于慢日志中的扫描行数
- RDS for MySQL慢日志里面有毫秒级别的SQL
- 查看RDS存储空间使用量
- 错误日志报错The table is full
- 审计日志上传策略说明
- 自增字段取值
- 表的自增AUTO_INCREMENT初值与步长
- 表的自增AUTO_INCREMENT超过数据中该字段的最大值加1
- 自增字段值跳变的原因
- 修改表的自增AUTO_INCREMENT值
- 自增主键达到上限,无法插入数据
- 空用户的危害
- pt-osc工具连接RDS for MySQL主备实例卡住
- 购买RDS实例支付报错:Policy doesn't allow bss:order:update to be performed
- RDS for MySQL是否可以修改数据库名称
- 购买RDS实例报错:无IAM的agency相关权限
- RDS for PostgreSQL
- RDS for SQL Server
-
RDS for MySQL
- 视频帮助
- 产品术语
-
更多文档
-
用户指南(阿布扎比区域)
- 产品介绍
- MySQL快速入门
- PostgreSQL快速入门
- SQL Server快速入门
- MySQL用户指南
- PostgreSQL用户指南
- SQL Server用户指南
- 常见问题
- API参考 (阿布扎比区域)
- 用户指南(巴黎区域)
- API参考(巴黎区域)
-
用户指南(吉隆坡区域)
- 产品介绍
- MySQL快速入门
- PostgreSQL快速入门
- SQL Server快速入门
- MySQL用户指南
- PostgreSQL用户指南
- SQL Server用户指南
- 常见问题
- API参考(吉隆坡区域)
-
用户指南(安卡拉区域)
- 产品介绍
- RDS for MySQL快速入门
- RDS for PostgreSQL快速入门
- RDS for MySQL用户指南
- RDS for PostgreSQL用户指南
-
常见问题
- 产品咨询
- 资源及磁盘管理
-
数据库连接
- RDS实例连接失败怎么办
- 外部服务器能否访问RDS数据库
- RDS数据库连接数满的排查思路
- RDS数据库实例支持的最大数据连接数是多少
- 如何创建和连接ECS
- 内网方式下ECS无法连接RDS实例的原因
- 客户端问题导致连接失败
- 服务端问题导致连接失败
- 应用程序是否需要支持自动重连数据库
- 如何通过JDBC连接RDS for PostgreSQL数据库
- 绑定公网IP后无法ping通的解决方案
- 如何定位本地IP地址
- RDS跨地域内网能访问吗
- 为什么重置密码后新密码没有生效
- 如何设置MySQL8.0字符集的编码格式
- ECS和RDS部署在不同的VPC网络不通怎么办
- 如何查看当前时间所有连接数据库的IP
- RDS备实例能够访问吗
- 如何判断RDS for MySQL数据库是否被连接使用
- 数据库迁移
- 数据库权限
- 数据库存储
- 安装客户端
- 数据库基本使用
- 备份与恢复
- 数据库监控
- 扩容及规格变更
- 数据库参数修改
- 网络安全
- 版本升级
- 修订记录
- API参考(安卡拉区域)
-
用户指南(阿布扎比区域)
- 通用参考
链接复制成功!
RDS for MySQL 5.7版本升级到8.0
操作场景
云数据库 RDS for MySQL支持通过以下两种方式升级实例大版本:
- 通过RDS界面升级大版本:关于内核版本的功能,请参见华为云RDS for MySQL内核版本说明。
如需通过界面升级大版本,您可以在管理控制台右上角,选择“工单 > 新建工单”,提交权限申请。
- 通过DRS升级大版本:通过DRS迁移功能将RDS for MySQL低版本实例迁移到高版本。
注意事项
- 下发RDS for MySQL 5.7升级至8.0前,需进行预检查,请注意以下内容:
- 预检查耗时与表数量相关,请您尽量在业务低峰期执行。
- 检查报告保留24小时,请及时下载。
- “检查参数”项失败时,请根据检查详情中的检查项,对照表1进行修复,级别为error的检查项,必须修复才可升级,级别为warning的检查项,请知悉升级前后该内核特性的变化。
- 修复后需单击“重新检查”,获取新的检查结果。
- 只能从5.7的最新小版本升级到8.0的最新小版本。请先确认5.7版本已经是最新小版本,才能继续大版本升级。
- 大版本升级操作建议避开执行备份的时间窗。
- 升级大版本前建议先做一次全量备份。
- 升级数据库大版本过程将造成约10~120秒的业务中断,请确保您的应用有自动重连机制。请在业务低峰期执行该操作,在业务高峰期执行会导致升级时长变长。
- 升级主实例大版本时,如有只读实例,也会同步升级只读实例的大版本(不支持单独升级只读实例的大版本)。
- 升级大版本后,实例会升级到新的内核大版本,不支持降级。
- 请务必仔细对比升级前后版本差异,建议您新建一个RDS for MySQL 5.7或8.0版本实例进行语法测试,避免应用使用的低版本语法或特性在升级高版本后不支持。
- 建议您将原实例数据恢复到新实例上面,先使用新实例进行升级测试,确认各项功能正常后再升级原实例。
- 内核大版本升级期间,自动扩容不生效,需要确保实例预留了足够的空间支撑升级过程中的业务写入。
- 大版本升级定时任务需预准备,设置后不可取消。
- 升级大版本后,升级前的备份将不可用于新版本实例,时间点恢复功能将不能选择升级前的时间点。
- 大版本升级过程中禁止event的DDL操作,如create event、drop event和alter event。
- 大版本升级后,规格参数会恢复到升级版本的默认值,包括以下参数:threadpool_size、innodb_buffer_pool_size、innodb_io_capacity、innodb_io_capacity_max、innodb_buffer_pool_instances、back_log、max_connections。
- 5.7版本和8.0版本实例存在相同参数取值范围不一样的情况,例如参数“max_execution_time”如果在5.7版本中设置为小于60000,大版本升级后将恢复成默认值0,这是因为8.0版本该参数最小值只能为60000。
约束限制
- 有关内核版本详情,请参见内核版本说明。
- 对于主备实例,复制延迟大于300秒无法升级大版本。
- 实例中存在异常节点,无法升级大版本。
- MySQL 5.7及之后版本不再支持Sequence Engine,升级前请确认。
- 目前RDS for MySQL实例最大可支持50万张表(系统表+数据表),大于50万张表时,会导致大版本升级失败。
- 云数据库RDS for MySQL暂不支持已开启事件定时器功能的实例升级大版本,若您想使用该功能,请先关闭事件定时器。具体操作请参考开启或关闭事件定时器。
- 升级到8.0版本后,主实例和只读实例会共用SQL限流规则,为避免主实例SQL限流规则对只读业务造成影响,请在升级前审视调整主实例SQL限流规则、以及主实例和只读实例的SQL限流开关。
- 以下场景不支持RDS for MySQL 5.7升级至8.0:
- 不支持已绑定DDM或已开通数据库代理的RDS for MySQL实例进行升级。
- 不支持单机实例进行升级。
- 主实例下的只读实例带有SQL限流规则时,不支持升级,请在升级前删除只读的限流规则。
升级检查项及升级失败的修复建议
检查项 |
检查内容 |
修复建议 |
---|---|---|
utf8mb3Check |
检查字符集utf8mb3。 |
MySQL 5.7中,字符集utf8等同于utf8mb3, MySQL 8.0中,字符集utf8等同于utf8mb4, 请注意升级后如果使用utf8创建表格,相当于使用字符集utf8mb4。 用户无需处理该项检查。 |
removedSysVars |
检查已移除的系统参数。 |
系统参数在MySQL 8.0中已删除。 该检查项不影响升级,用户无需处理。 |
sysVarsNewDefaults |
检查系统参数默认值变化。 |
系统参数在MySQL 8.0中的默认值发生变化,如果您修改过该参数的值,升级后保留修改后的值,如果未修改过,将采用新的默认值。 该检查项不影响升级,用户无需处理。 |
zeroDatesCheck |
检查使用了零日期、日期时间和时间戳。 |
MySQL 8.0.16及以后版本,将零值日期(例:“2024-00-00”)作为查询条件时,MySQL将该字符串转换为DATE,如果转换失败,该查询将报错。 该检查项不影响升级,但影响升级后的查询逻辑。用户无需处理global.sql_mode的报错,建议排查是否存在此类值,如果存在,修改为非零值。 |
enumSetElementLenghtCheck |
检查ENUM/SET列元素长度。 |
元素长度大于255个字符,请修改到不超过255个字符。 |
reservedKeywordsCheck |
检查保留字。 |
与MySQL 8.0中的保留字冲突,请修改名字。 |
mysqlDollarSignNameCheck |
检查$符号。 |
数据库对象名包含“$”,请修改。 |
mysqlInvalid57NamesCheck |
检查非法库名/表名/列名等。 |
包含非法名字,请修改。 |
groupByAscCheck |
检查group by ASC/DESC语法。 |
MySQL 8.0移除了GROUP BY ASC/DESC语法,请修改数据库对象,可将ASC/DESC关键字从 GROUP BY子句中移除,并放置在适当的ORDER BY子句中。 |
checkTableOutput |
通过"check table x for upgrade"检查表存在的问题。 |
根据检查结果中的“说明”进行修复。 |
engineMixupCheck |
检查 InnoDB 识别了属于其他引擎的表的情况。 |
表格被 InnoDB引擎识别,但 SQL 层认为它们属于另一个引擎,请提交工单解决。 |
foreignKeyLengthCheck |
检查外键约束名长度。 |
外键约束名长度不得超过64个字符,请修改。 |
nonNativePartitioningCheck |
检查使用了非本地分区引擎的分区表的情况。 |
MySQL 8.0仅支持InnoDB 和 NDB作分区表引擎,请转换为InnoDB引擎,或删除其分区。 |
routinesSyntaxCheck |
检查语法不兼容的情况。 |
存储过程、函数等数据库对象的定义包含了不兼容的语法,例如与MySQL8.0中的保留字冲突,请根据检查结果中的“说明”做修改。 |
maxdbFlagCheck |
检查是否使用了过时的 MAXDB sql_mode标志。 |
MySQL 8.0删除了sql_mode中的MAXDB选项,请修改sql_mode参数,不使用MAXDB。 |
sqlModeFlagCheck |
检查是否使用了过时的sql_mode标志。 |
MySQL 8.0删除了部分sql_mode标志,请根据检查结果中的“说明”,修改sql_mode参数。 |
removedSysLogVars |
检查已移除的系统日志系统参数。 |
MySQL 8.0移除了部分系统日志系统参数,请知悉。 用户无需处理该项检查结果。 |
mysqlIndexTooLargeCheck |
检查索引长度。 |
MySQL 5.7和MySQL 8.0都支持相同长度的索引,最大索引长度为767字节,在MySQL 8.0 utf8mb4编码下,最大支持191个字符;请修改索引长度至不超过191个字符。 |
circularDirectoryCheck |
检查表空间数据文件路径使用循环目录。 |
目标版本不支持表空间在数据文件路径中包含循环目录引用(例如“/../”),请提交工单处理。 |
columnsWhichCannotHaveDefaultsCheck |
检查列默认值。 |
BLOB、TEXT、GEOMETRY或JSON等类型的列不允许设置默认值,请通过ALTER TABLE语句删除默认值。 |
removedFunctionsCheck |
检查已移除的函数。 |
目标版本删除了部分函数,请根据检查结果中的“说明”,修改相应数据库对象。 |
mysqlOrphanedRoutinesCheck |
检查孤立的存储过程或函数等。 |
孤立的存储过程或函数等指其引用的数据库对象已不存在,无法运行,请删除。 |
mysqlEmptyDotTableSyntaxCheck |
检查废弃的标识符。 |
请根据检查结果中的“说明”,修改对应数据库对象中的标识符。 |
mysqlSchemaCheck |
检查表名冲突。 |
MySQL8.0新增部分表,请通过RENAME TABLE语句修改存在冲突的表名。 |
mysqlInvalidEngineForeignKeyCheck |
检查外键约束指向其他引擎的表。 |
请通过ALTER TABLE语句修改引擎,或删除外键引用。 |
lowerCaseNameCheck |
检查参数lower_case_table_names=1时,是否存在大写表名 |
参数lower_case_table_names=1时,如果存在大写表名,将导致升级失败;请先修改lower_case_table_names=0,通过RENAME TABLE语句将检查结果中的大写表名修改为小写,再将lower_case_table_names的值修改回1。 |
specVarInConfigFileCheck |
检查配置文件中 sql_mode、loose_tls_version 是否有过时的值。 |
目标版本移除了部分sql_mode标志,MySQL8.0.28及其以上,loose_tls_version参数不支持TLSv1和TLSv1.1,请根据检查结果修改sql_mode或loose_tls_version参数的值。 |
reversedUserCheck |
检查是否创建了创建 mysql.infoschema@localhost。 |
MySQL8.0内置mysql.infoschema@localhost账号,如MySQL5.7存在此账号,将导致升级失败,升级前请删除该账号。 |
schemaInconsistencyCheck |
检查表文件移除或损坏导致的数据库结构不一致问题。 |
表文件.frm缺失,请提交工单申请处理。 |
geometryIndexCheck |
检查空间坐标作为索引时是否为空间索引。 |
目标版本中,空间坐标作索引时必须为空间索引,请重建索引或删除索引。 |
danglingIndexCheck |
检查是否存在空悬索引。 |
全文索引列删除导致FTS_DOC_ID空悬的表,需要进行 OPTIMIZE TABLE修复。 |
viewColumnCheck |
检查视图列名长度。 |
目标版本中视图列名长度不可超过64个字符,请通过ALTER VIEW语句修改列名。 |
partitionedTablesInSharedTablespaceCheck |
检查分区表是否在共享表空间。 |
目标版本不支持共享表空间,请通过ALTER TABLE语句将它们移动到独立表空间。 |
partitionsReferencedCheck |
检查分区表是否被普通表通过外键引用。 |
分区表不可被普通表引用,请删除外键引用。 |
partitionsRangeDateCheck |
检查按时间分区的分区表。 |
MySQL 8.0按时间分区时,时间列内容要求是标准的格式(例如:'YYYY-MM-DD hh:mm:ss' 或 'YY-MM-DD hh:mm:ss'),并修改相应表中时间数值为标准格式。 |
问题描述 |
影响 |
修复建议 |
---|---|---|
RDS for MySQL 5.7升级到8.0后,由于默认字符集变更,导致执行部分SQL时索引失效。 5.7默认使用UTF8mb3字符集,8.0默认使用UTF8mb4字符集。 |
5.7版本使用默认字符集建表,在升级过程中,字符集不会自动变更为8.0版本默认字符集,若用户在内核升级到8.0后建表,同时对两张字符集不同的表进行JOIN等操作,影响SQL执行时索引选择,最终导致SQL执行时间变长。 |
修改8.0的库、表、字段字符集、以及默认字符集,与5.7的字符集一致。 |
RDS for MySQL 5.7升级到8.0过程中,删除了全文索引,可能会导致升级失败。 |
可能会导致升级失败。 |
执行optimize table重建表;并排查空悬FTS_DOC_ID,详见表1。 |
RDS for MySQL 5.7升级到8.0过程中,由于含有分区表外键约束(通过参数foreign_key_check设置),导致升级失败。 |
导致升级失败。 |
移除该外键约束。 |
5.7版本中含有definer列为空的“mysql.events”表,会导致RDS for MySQL 5.7升级到8.0失败。 |
导致升级失败。 |
将definer列设置为非空。 |
RDS for MySQL 5.7升级到8.0过程中,Server层和InnoDB层列名大小写不匹配导致升级失败。 |
导致升级失败。 |
执行optimize table重建表。 |
RDS for MySQL 5.7升级到8.0过程中,索引中包含的字段在Server层和InnoDB层中大小写不一致导致升级失败。 |
导致升级失败。 |
执行optimize table重建表。 |
使用8.0不支持的“BTREE SPATIAL INDEX”,会导致RDS for MySQL 5.7升级到8.0失败。 |
导致升级失败。 |
删除“BTREE SPATIAL INDEX”索引。 |
通过RDS界面升级大版本
- 登录管理控制台。
- 单击管理控制台左上角的
,选择区域和项目。
- 单击页面左上角的
,选择“数据库 > 云数据库 RDS”,进入RDS信息页面。
- 在“实例管理”页面,单击主实例名称。
- 在“概览”页面的“数据库引擎版本”处,单击“升级数据库版本”。
图1 升级数据库大版本
- 在弹出框中,确认升级信息,然后单击“下一步”。
图2 升级信息确认
- 升级预检查。
图3 开始预检查
预检查结束后,根据预检查结果参考表1进行修复。
修复完成后,单击“重新检查”再次下发检查,直到“检查实例状态”和“检查参数”全部是“已完成”,然后单击“下一步”。
图4 预检查完成 - 选择升级方式,单击“确定”。
- 立即升级:系统会立即升级您的数据库版本到当前5.7或8.0最新版本。
- 可维护时间段内升级:系统会在您设置的可维护时间段内,升级您的数据库版本到当前5.7或8.0最新版本。详情请参见设置可维护时间段。
图5 选择升级方式如果升级失败,参考表2进行修复。
通过DRS升级大版本
RDS for MySQL支持通过DRS将RDS for MySQL 5.6版本数据迁移到5.7版本。使用该方式进行大版本升级,需要提前准备好待迁移到的高版本数据库实例。
您可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“迁移数据库”,进入数据复制服务信息页面。
具体迁移操作,请参见《数据复制服务用户指南》的“入云迁移”内容。
源数据库版本 |
目标数据库版本 |
迁移类型 |
---|---|---|
RDS for MySQL/自建MySQL/其他云MySQL
|
RDS for MySQL
|
MySQL数据库版本升级 |
DRS仅支持从低版本迁移到高版本。