因 MySQL 5.7 版本将于 2023 年 10 月EOL,AWS RDS MySQL 5.7 也将在 10 月停止该版本的支持和服务,9 月 30 日后会强制升级至 MySQL 8.x 的版本,请提前做好评估工作并规划好事件,具体日期和升级事项如下:
RDS for MySQL发布日历
RDS for MySQL主要版本至少会在相应社区版本的社区生命周期终止前保持可用状态。您可以参照下列日期规划您的测试和升级周期。如果Amazon对某个RDS for MySQL版本的支持时间比原定时间更长吗我们会计划更新此表格以反映较晚的日期。
⚠️注意:
只有月份和年份的发布日期均为大概日期,这些日期会在确日期明确后惊醒更新。
兼容性问题
由于从MySQL5.7升级到5.8存在一定的不兼容性,所以在从5.7升级到8.0的时候这些不兼容性会引起一些潜在的问题,因此,为了让升级成功,可能需要对数据库做一些准备。以下是这些不一致项的一般列表:
不得有使用过时的数据类型或函数的表。
不得有孤立的 *.frm 文件。
触发器不得具有缺失的或空的定义程序或无效的创建上下文。
不得有使用不支持本机分区的存储引擎的分区表。
不得出现关键字或保留关键字违规情况。MySQL 8.0 中可能会保留一些以前未保留的关键字,请参阅 MySQL 文档中的关键字和保留关键字
MySQL 5.7 mysql 系统数据库中不得有与 MySQL 8.0 数据字典使用的表同名的表。
sql_mode 系统变量设置中不得定义过时的 SQL 模式。
不得有包含超过 255 个字符或 1020 个字节的单个 ENUM 或 SET 列元素的表或存储过程。
在升级到 MySQL 8.0.13 或更高版本之前,不得有驻留在共享 InnoDB 表空间中的表分区。
MySQL 8.0.12 或更低版本中不得有对 ASC 子句使用 DESC 或 GROUP BY 限定符的查询和存储程序定义。
您的 MySQL 5.7 安装不得使用 MySQL 8.0 不支持的功能,请参阅 MySQL 文档中的 MySQL 8.0 中删除的功能
不得有超过 64 个字符的外键约束名称。
要获得改进的 Unicode 支持,请考虑将使用 utf8mb3 字符集的对象转换为使用 utf8mb4 字符集。utf8mb3 字符集已弃用。此外,请考虑对字符集引用使用 utf8mb4 而不是 utf8,因为 utf8 当前是 utf8mb3 字符集的别名。请参阅 MySQL 文档中的 utf8mb3 字符集(3 字节 UTF-8 Unicode 编码)
升级前检查
当您开始从 MySQL 5.7 更新到 8.0 时,Amazon RDS 会自动运行预检查,以便检测这些不兼容性。有关升级到 MySQL 8.0 的信息,请参阅 MySQL 文档中的升级 MySQL。
这些预检查是必需的。您不能选择跳过它们。预检查提供以下好处:
它们让您可以在升级期间避免出现计划外停机。
如果存在不一致项,Amazon RDS 将阻止升级并提供日志以供您参阅。然后,您可以查看日志来消除不一致项,从而准备数据库以升级到 MySQL 8.0。有关删除不兼容性的详细信息,请参阅 MySQL 文档中的准备安装以进行升级,以及 MySQL 服务器博客上的升级到 MySQL 8.0?以下是您需要了解的内容。
预检查包括 MySQL 内的一些预检查和 Amazon RDS 团队专门创建的一些预检查。有关 MySQL 提供的预检查的信息,请参阅升级检查程序实用工具。
在升级关闭数据库之前,就可以进行数据库的预检查工作,数据库此时正常运行,预检查如发现不兼容问题,会自动取消升级,另外RDS 还会针对这些不兼容的问题产生事件的通知。
Amazon RDS 在日志文件PrePatchCompatibility.log 中记录有关每项不兼容性的详细信息。在大部分情况下,日志条目包括用于纠正不兼容性的 MySQL 文档的链接。
另外由于预检查的性质,它们会分析数据库中的对象。此分析会导致资源消耗并增加完成升级的时间。
回滚
将数据库实例从 MySQL 版本 5.7 升级到 MySQL 版本 8.0 时,升级可能会失败。尤其是,如果数据字典中包含预检查未发现的不兼容性,则可能会失败。在这种情况下,数据库无法在新的 MySQL 8.0 版本中成功启动。此时,升级所进行的更改就会 Amazon RDS 回滚。回滚后,MySQL 数据库实例将运行 MySQL 版本 5.7。当升级失败并回滚时,Amazon RDS 生成一个 ID 为 RDS-EVENT-0188 的事件。
通常,升级失败是因为数据库实例中的数据库与目标 MySQL 版本之间的元数据存在不兼容性。升级失败时,您可以在 upgradeFailure.log 文件中查看有关这些不兼容性的详细信息。在尝试再次升级之前,请先解决不兼容问题。
尝试升级和回滚失败时,您的数据库实例会重新启动。任何待处理的参数更改都将在重新启动期间应用,并在回滚后保留。
有关升级到 MySQL 8.0 的更多信息,请参阅 MySQL 文档中的以下主题:
• 准备安装以进行升级
• 升级到 MySQL 8.0? 您需要知道这些.