升级 MySQL 数据库引擎 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

升级 MySQL 数据库引擎

如果 Amazon RDS 支持数据库引擎的新版本,您可以将您的数据库实例升级到新版本。MySQL 数据库有两种升级方式:主要版本升级和次要版本升级。

主要版本升级。

主要版本升级会包含不与现有应用程序向后兼容的数据库更改。因此,您必须手动为数据库实例执行主要版本升级。您可以通过修改数据库实例来启动主要版本升级。在执行主要版本升级之前,我们建议您按照MySQL 的主要版本升级中的说明操作。

对于多可用区数据库实例部署的主要版本升级,Amazon RDS 会同时升级主要副本和备用副本。在升级完成之前,数据库实例将不可用。目前,Amazon RDS 不支持对多可用区数据库集群部署进行主要版本升级。

提示

您可以使用蓝绿部署,最大限度地减少主要版本升级所需的停机时间。有关更多信息,请参阅使用 Amazon RDS 蓝绿部署进行数据库更新

次要版本升级

次要版本升级 仅包含与现有应用程序向后兼容的更改。您可以通过修改数据库实例来手动启动次要版本升级。您也可以在创建或修改数据库实例时启用自动次要版本升级选项。这样做意味着 Amazon RDS 会在测试并批准新版本后自动升级您的数据库实例。有关执行升级的信息,请参阅 升级数据库实例引擎版本

当您对多可用区数据库集群执行次要版本升级时,Amazon RDS 将一次升级一个读取器数据库实例。然后,其中一个读取器数据库实例将切换为新的写入器数据库实例。然后,Amazon RDS 升级旧的写入器实例(现在是读取器实例)。

注意

多可用区数据库实例部署的次要版本升级的停机时间可能会持续几分钟。多可用区数据库集群通常可将次要版本升级的停机时间缩短至大约 35 秒。与 RDS 代理一起使用时,您可以将停机时间进一步缩短到一秒或更短。有关更多信息,请参阅将 Amazon RDS 代理。或者,您可以使用开源数据库代理,例如 ProxySQLPgBouncer适用于 MySQL 的 Amazon JDBC 驱动程序

如果 MySQL 数据库实例使用只读副本,则必须在升级源实例之前升级所有只读副本。

升级概述

使用 Amazon Web Services Management Console 升级数据库实例时,它会显示数据库实例的有效升级目标。您还可以使用以下 Amazon CLI 命令来标识数据库实例的有效升级目标:

对于 Linux、macOS 或 Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version version-number \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

对于 Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version version-number ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

例如,要标识 MySQL 版本 8.0.28 数据库实例的有效升级目标,请运行以下 Amazon CLI 命令:

对于 Linux、macOS 或 Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.28 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

对于 Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.28 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{EngineVersion:EngineVersion}" --output text

在升级流程期间,Amazon RDS 会创建两个或更多数据库快照。在进行任何升级更改之前,Amazon RDS 最多会拍摄两个数据库实例快照。如果无法完成数据库的升级,那么,就可以还原这些快照之一,来创建一个运行旧版本的数据库实例。升级完成后,Amazon RDS 会为数据库实例拍摄另一个快照。无论 Amazon Backup 是否管理数据库实例的备份,Amazon RDS 都会拍摄这些快照。

注意

如果您将数据库实例的备份保留期设置为大于 0 的数字,则 Amazon RDS 只需创建数据库快照。要更改您的备份保留期,请参阅 修改 Amazon RDS 数据库实例

升级完成后,您无法恢复为数据库引擎的以前版本。如果要返回以前版本,则还原创建的第一个数据库快照以新建数据库实例。

您可以控制何时将数据库实例升级到 Amazon RDS 支持的新版本。此级别的控制可帮助您保留与特定数据库版本的兼容性,并在生产中部署前使用应用程序测试新版本。在您准备好后,可在与时间表最搭配的时间执行版本升级。

如果数据库实例使用只读复制,则必须在升级源实例之前升级所有只读副本。

MySQL 版本号

RDS for MySQL 数据库引擎的版本编号序列采用 major.minor.patch.YYYYMMDDmajor.minor.patch 形式,例如 8.0.33.R2.20231201 或 5.7.44。使用的格式取决于 MySQL 引擎版本。有关 RDS 扩展支持版本号的信息,请参阅Amazon RDS 扩展支持版本命名

major

主要版本号是版本号的整数和第一个小数点后的部分,例如 8.0。主要版本升级会增加版本号的主要版本部分。例如,从 5.7.44 升级到 8.0.33 是主要版本升级,其中 5.78.0 为主要版本号。

minor

次要版本号是版本号的第三部分,例如 8.0.33 中的 33。

patch

补丁是版本号的第四部分,例如 8.0.33.R2 中的 R2。RDS 补丁版本包括在发布后添加到次要版本的重要错误修复。

YYYYMMDD

日期是版本号的第五部分,例如 8.0.33.R2.20231201 中的 20231201。RDS 日期版本是一个安全补丁,它包括在发布后添加到次要版本的重要安全修复程序。它不包括任何可能更改引擎行为的修复程序。

主要版本 次要版本 命名模式
8.0 ≥ 33 新的数据库实例使用 major.minor.patch.YYMMDD,例如 8.0.33.R2.20231201。

在下一次主要版本或次要版本升级之前,现有数据库实例可能使用 major.minor.patch,例如 8.0.33.R2。

< 33 现有数据库实例使用 major.minor.patch,例如 8.0.32.R2。
5.7 ≥ 42 新的数据库实例使用 major.minor.patch.YYMMDD,例如 5.7.42.R2.20231201。

在下一次主要版本或次要版本升级之前,现有数据库实例可能使用 major.minor.patch,例如 5.7.42.R2。

RDS 版本号

RDS 版本号使用 major.minor.patchmajor.minor.patch.YYYYMMDD 命名方案。RDS 补丁版本包括在发布后添加到次要版本的重要错误修复。RDS 日期版本(YYMMDD)是一个安全补丁。安全补丁不包括任何可能更改引擎行为的修复程序。有关 RDS 扩展支持版本号的信息,请参阅Amazon RDS 扩展支持版本命名

要识别数据库的 Amazon RDS 版本号,必须先使用以下命令创建 rds_tools 扩展:

CREATE EXTENSION rds_tools;

您可以通过以下 SQL 查询找出 RDS for MySQL 数据库的 RDS 版本号:

mysql> select mysql.rds_version();

例如,查询 RDS for MySQL 8.0.34 数据库将返回以下输出:

+---------------------+ | mysql.rds_version() | +---------------------+ | 8.0.34.R2.20231201 | +---------------------+ 1 row in set (0.01 sec)

MySQL 的主要版本升级

Amazon RDS 支持 MySQL 数据库引擎的以下主要版本就地升级:

  • MySQL 5.6 到 MySQL 5.7。

  • MySQL 5.7 到 MySQL 8.0。

注意

除了 db.m3 上一代数据库实例类以外,您只能使用最新一代和当前一代数据库实例类创建 MySQL 5.7 和 8.0 版数据库实例。

在某些情况下,您想将在上一代数据库实例类(非 db.m3)上运行的 MySQL 5.6 版数据库实例升级到 MySQL 5.7 版数据库实例。在这些情况下,先修改数据库实例以使用最新一代或当前一代数据库实例类。执行此操作之后,您就可以修改数据库实例以使用 MySQL 5.7 版数据库引擎。有关 Amazon RDS 数据库实例类的信息,请参阅 数据库实例类

MySQL 主要版本升级概述

主要版本升级会包含不与现有应用程序向后兼容的数据库更改。因此,Amazon RDS 不会自动应用主要版本升级;您必须手动修改数据库实例。建议您在将任何升级应用于生产实例前全面测试这些升级。

要将 Amazon RDS 上的 MySQL 5.6 版数据库实例的主要版本升级到 MySQL 5.7 或更高版本,先执行所有可用的操作系统更新。在操作系统更新完成后,升级到各个主要版本:5.6 到 5.7,然后 5.7 到 8.0。在 2014 年 4 月 24 日之前创建的 MySQL 数据库实例会显示可用的操作系统更新,直到更新安装完成。有关操作系统升级的更多信息,请参阅 应用数据库实例的更新

在 MySQL 的主要版本升级期间,如有必要,Amazon RDS 会运行 MySQL 二进制文件 mysql_upgrade 以便升级表。此外,Amazon RDS 会在主要版本升级期间清空 slow_loggeneral_log 表。要保留日志信息,请在升级主要版本之前保存日志内容。

MySQL 主要版本升级通常在大约 10 分钟内完成。由于数据库实例类大小不同或由于实例未遵循Amazon RDS 的最佳实践中的特定操作指南,某些升级过程可能需要更长时间。如果您从 Amazon RDS 控制台升级数据库实例,则数据库实例的状态会标明升级完成的时间。如果您使用 Amazon Command Line Interface (Amazon CLI) 进行升级,请使用 describe-db-instances 命令并选中 Status 值。

升级到 MySQL 5.7 版的速度可能较慢

MySQL 5.6.4 版引入了 datetimetimetimestamp 列的新日期和时间格式,这将允许日期和时间值包含小数部分。在将数据库实例升级到 MySQL 5.7 版时,MySQL 会强制性将所有日期和时间列类型转换为新格式。

由于此转换会重新构建表,因此,完成数据库实例升级可能需要耗费大量时间。运行 MySQL 5.6.4 之前版本的任何数据库实例都会发生强制转换。从 MySQL 5.6.4 之前版本升级到非 5.7 版的任何数据库实例也会发生强制转换。

如果您的数据库实例运行 MySQL 5.6.4 之前的版本,或者从 5.6.4 之前的版本升级,则我们建议执行一个额外步骤。在这些情况下,我们建议先转换数据库中的 datetimetimetimestamp 列,然后再将数据库实例升级到 MySQL 5.7。此转换可大大减少将数据库实例升级到 MySQL 5.7 版所需的时间。要将日期和时间列升级到新格式,请对每个包含日期或时间列的表发出 ALTER TABLE <table_name> FORCE; 命令。由于修改表会将表锁定为只读状态,因此,我们建议您在维护时段内执行此更新。

若要查找数据库拥有 datetimetimetimestamp 的列的所有表,并为每个表创建一条 ALTER TABLE <table_name> FORCE; 命令,请使用以下查询。

SET show_old_temporals = ON; SELECT table_schema, table_name,column_name, column_type FROM information_schema.columns WHERE column_type LIKE '%/* 5.5 binary format */'; SET show_old_temporals = OFF;

从 MySQL 5.7 升级到 8.0 的预检查

MySQL 8.0 与 MySQL 5.7 存在一定的不兼容性。在从 MySQL 5.7 升级到 MySQL 8.0 时,这些不兼容性会引起问题。因此,为了让升级成功,可能需要对数据库做一些准备。以下是这些不一致项的一般列表:

  • 不得有使用过时的数据类型或函数的表。

  • 不得有孤立的 *.frm 文件。

  • 触发器不得具有缺失的或空的定义程序或无效的创建上下文。

  • 不得有使用不支持本机分区的存储引擎的分区表。

  • 不得出现关键字或保留关键字违规情况。MySQL 8.0 中可能会保留一些以前未保留的关键字。

    有关更多信息,请参阅 MySQL 文档中的关键字和保留关键字

  • MySQL 5.7 mysql 系统数据库中不得有与 MySQL 8.0 数据字典使用的表同名的表。

  • sql_mode 系统变量设置中不得定义过时的 SQL 模式。

  • 不得有包含超过 255 个字符或 1020 个字节的单个 ENUMSET 列元素的表或存储过程。

  • 在升级到 MySQL 8.0.13 或更高版本之前,不得有驻留在共享 InnoDB 表空间中的表分区。

  • MySQL 8.0.12 或更低版本中不得有对 ASC 子句使用 DESCGROUP 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 Server 博客上的升级到 MySQL 8.0? 以下是您需要了解的内容…

预检查包括 MySQL 内的一些预检查和 Amazon RDS 团队专门创建的一些预检查。有关 MySQL 提供的预检查的信息,请参阅升级检查程序实用工具

在为了升级而停止数据库实例之前先运行预检查,这意味着它们在运行时不会造成任何停机。如果预检查发现不兼容问题,Amazon RDS 会在停止数据库实例之前自动取消升级。Amazon RDS 还会针对不兼容问题生成事件。有关 Amazon RDS 事件的更多信息,请参阅 使用 Amazon RDS 事件通知

Amazon RDS 在日志文件 PrePatchCompatibility.log 中记录有关每项不兼容性的详细信息。在大部分情况下,日志条目包括用于纠正不兼容性的 MySQL 文档的链接。有关查看日志文件的更多信息,请参阅 查看和列出数据库日志文件

由于预检查的性质,它们会分析数据库中的对象。此分析会导致资源消耗并增加完成升级的时间。

注意

Amazon RDS 仅为从 MySQL 5.7 升级到 MySQL 8.0 运行所有这些预检查。对于从 MySQL 5.6 升级到 MySQL 5.7,预检查仅限于确认没有孤立表以及确保有足够的存储空间来重建表。对于 MySQL 5.7 以下版本的升级,不会运行预检查。

从 MySQL 5.7 升级到 8.0 失败后回滚

将数据库实例从 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 5.7 到 8.0 主要版本升级才支持升级失败后自动回滚。

测试升级

在数据库实例上执行主要版本升级前,彻底地测试数据库,了解是否与新版本兼容。此外,彻底地测试访问数据库的所有应用程序,了解是否与新版本兼容。我们建议您使用以下过程。

测试主要版本升级
  1. 检查新版数据库引擎的升级文档以了解是否存在可能会影响数据库或应用程序的兼容性问题:

  2. 如果数据库实例是自定义数据库参数组的成员,就必须使用兼容新主要版本的现有设置创建一个新的数据库参数组。在升级测试实例时,应指定新的数据库参数组,以便升级测试可确保其运行正常。有关创建数据库参数组的详细信息,请参阅 使用参数组

  3. 为要升级的数据库实例创建数据库快照。有关更多信息,请参阅“为单可用区数据库实例创建数据库快照”。

  4. 恢复数据库快照,以便创建一个新的测试数据库实例。有关更多信息,请参阅“从数据库快照还原”。

  5. 使用下方详细介绍的某种方法,修改此新测试数据库实例以将其升级到新版本。如果您在步骤 2 中创建了一个新的参数组,则指定该参数组。

  6. 计算升级的实例使用的存储容量以决定升级是否需要额外的存储容量。

  7. 对升级的数据库实例运行所需次数的质量保证测试以确保数据库和应用程序可正常使用新版本。实施任何必需的新测试,评估您在步骤 1 中发现的任何兼容性问题的影响。测试所有的存储过程和功能。将应用程序的测试版本指向所升级的数据库实例。

  8. 如果所有测试通过,那么请在生产数据库实例上执行升级。我们建议您直到确认一切正常后,再允许对数据库实例执行写入操作。

升级 MySQL 数据库实例

有关手动或自动升级 MySQL 数据库实例的信息,请参阅升级数据库实例引擎版本

MySQL 的自动次要版本升级

如果在创建或修改数据库实例时指定以下设置,则可以让数据库实例自动升级。

  • 自动次要版本升级设置已启用。

  • 备份保留期设置需大于 0。

在 Amazon Web Services Management Console 中,这些设置位于 Additional configuration(其他配置)下。下图显示了 Auto minor version upgrade(自动次要版本升级)设置。


                自动次要版本升级设置

有关这些设置的更多信息,请参阅 数据库实例的设置

对于某些 Amazon Web Services 区域中的某些 RDS for MySQL 主要版本,RDS 将一个次要版本指定为自动升级版本。在 Amazon RDS 测试并批准次要版本后,将在维护时段内自动进行次要版本升级。RDS 不会自动将发布的较新次要版本设置为自动升级版本。在 RDS 指定较新的自动升级版本之前,将会考虑一些条件,例如:

  • 已知的安全问题

  • MySQL 社区版本中的错误

  • 发布次要版本后的整体队列稳定性

您可以使用以下 Amazon CLI 命令确定特定 Amazon Web Services 区域中指定 MySQL 次要版本的当前自动次要升级目标版本。

对于 Linux、macOS 或 Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version minor-version \ --region region \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output text

对于 Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version minor-version ^ --region region ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output text

例如,以下 Amazon CLI 命令可确定美国东部(俄亥俄州)Amazon Web Services 区域 (us-east-2) 中 MySQL 次要版本 8.0.11 的自动次要升级目标。

对于 Linux、macOS 或 Unix:

aws rds describe-db-engine-versions \ --engine mysql \ --engine-version 8.0.11 \ --region us-east-2 \ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" \ --output table

对于 Windows:

aws rds describe-db-engine-versions ^ --engine mysql ^ --engine-version 8.0.11 ^ --region us-east-2 ^ --query "DBEngineVersions[*].ValidUpgradeTarget[*].{AutoUpgrade:AutoUpgrade,EngineVersion:EngineVersion}" ^ --output table

输出类似于以下内容。

---------------------------------- | DescribeDBEngineVersions | +--------------+-----------------+ | AutoUpgrade | EngineVersion | +--------------+-----------------+ | False | 8.0.15 | | False | 8.0.16 | | False | 8.0.17 | | False | 8.0.19 | | False | 8.0.20 | | False | 8.0.21 | | True | 8.0.23 | | False | 8.0.25 | +--------------+-----------------+

在此示例中,AutoUpgrade 值对于 MySQL 版本 8.0.23 为 True。因此,自动次要升级目标是 MySQL 版本 8.0.23,它在输出中突出显示。

如果满足以下条件,则会在维护时段内自动升级 MySQL 数据库实例:

  • 自动次要版本升级设置已启用。

  • 备份保留期设置需大于 0。

  • 数据库实例运行的次要数据库引擎版本低于当前的自动升级次要版本。

有关更多信息,请参阅“自动升级次要引擎版本”。

升级 MySQL 数据库时,使用只读副本可减少停机时间

在大多数情况下,蓝绿部署是升级 MySQL 数据库实例时减少停机时间的最佳选项。有关更多信息,请参阅使用 Amazon RDS 蓝绿部署进行数据库更新

如果您无法使用蓝绿部署,并且 MySQL 数据库实例当前与生产应用程序结合使用,则可使用以下过程来升级数据库实例的数据库版本。此过程可以减少应用程序的停机时间。

使用只读副本,您可以提前执行大多数维护步骤,并在实际停机期间尽量减少必要的更改。利用此技巧,您可以在不对现有数据库实例进行任何更改的情况下测试和准备新的数据库实例。

以下过程显示了从 MySQL 5.7 版升级到 MySQL 8.0 版的示例。您可以使用相同的常规步骤升级到其他主要版本。

注意

如果需要将 MySQL 5.7 版升级到 MySQL 8.0 版,请在执行升级之前完成预检查。有关更多信息,请参阅从 MySQL 5.7 升级到 8.0 的预检查

在使用数据库实例时升级 MySQL 数据库
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 创建 MySQL 5.7 数据库实例的只读副本。该过程可创建数据库的可升级副本。可能还存在数据库实例的其他只读副本。

    1. 在控制台上,选择数据库,然后选择您要升级的数据库实例。

    2. 对于 Actions (操作),选择 Create read replica (创建只读副本)

    3. 为只读副本提供数据库实例标识符的值,并确保数据库实例类和其他设置与您的 MySQL 5.7 数据库实例匹配。

    4. 选择 Create read replica (创建只读副本)

  3. (可选)创建只读副本且状态显示为可用之后,将只读副本转换为多可用区部署并启用备份。

    默认情况下,只读副本将创建为已禁用备份的单可用区部署。由于只读副本最终成为生产数据库实例,因此最佳实践是立即配置多可用区部署并启用备份。

    1. 在控制台上,选择数据库,然后选择您刚创建的只读副本。

    2. 选择修改

    3. 对于多可用区部署,请选择创建备用实例

    4. 对于 Backup Retention Period(备份保留期),请选择正的非零值(如 3 天),然后选择 Continue(继续)。

    5. 对于修改计划,选择立即应用

    6. 选择修改数据库实例

  4. 只读副本状态显示可用后,请将只读副本升级到 MySQL 8.0:

    1. 在控制台上,选择数据库,然后选择您刚创建的只读副本。

    2. 选择修改

    3. 对于数据库引擎版本,选择升级目标版本 MySQL 8.0 版,然后选择继续

    4. 对于修改计划,选择立即应用

    5. 选择 Modify DB instance (修改数据库实例)开始升级。

  5. 升级完成并且状态显示为可用之后,验证升级的只读副本是否与源 MySQL 5.7 数据库实例保持同步。要进行验证,请连接到只读副本并运行 SHOW REPLICA STATUS 命令。如果 Seconds_Behind_Master 字段为 0,则复制保持最新。

    注意

    以前的 MySQL 版本使用的是 SHOW SLAVE STATUS,而不是 SHOW REPLICA STATUS。如果您使用的 MySQL 版本低于 8.0.23,那么请使用 SHOW SLAVE STATUS

  6. (可选)创建只读副本的只读副本。

    如果您希望数据库实例在提升为独立数据库实例后拥有只读副本,则可以立即创建只读副本。

    1. 在控制台上,选择数据库,然后选择您刚刚升级的只读副本。

    2. 对于 Actions (操作),选择 Create read replica (创建只读副本)

    3. 为只读副本提供数据库实例标识符的值,并确保数据库实例类和其他设置与您的 MySQL 5.7 数据库实例匹配。

    4. 选择 Create read replica (创建只读副本)

  7. (可选)为只读副本配置自定义数据库参数组。

    如果您希望数据库实例在提升为独立数据库实例后使用自定义参数组,则可以立即创建数据库参数组,并将其与只读副本相关联。

    1. 为 MySQL 8.0 创建自定义数据库参数组。有关说明,请参阅创建数据库参数组

    2. 修改要在刚创建的数据库参数组中更改的参数。有关说明,请参阅修改数据库参数组中的参数

    3. 在控制台中,选择数据库,然后选择只读副本。

    4. 选择修改

    5. 对于数据库参数组,请选择刚创建的 MySQL 8.0 数据库参数组,然后选择继续

    6. 对于修改计划,选择立即应用

    7. 选择 Modify DB instance (修改数据库实例)开始升级。

  8. 使您的 MySQL 8.0 只读副本成为独立的数据库实例。

    重要

    将 MySQL 8.0 只读副本提升为独立的数据库实例后,它不再是 MySQL 5.7 数据库实例的副本。建议您在源 MySQL 8.0 数据库实例处于只读模式并且所有写入操作都暂停的维护时段期间,提升 MySQL 5.7 只读副本。提升完成之后,您可以将写入操作定向到已升级的 MySQL 8.0 数据库实例,以确保不会丢失写入操作。

    此外,建议您在提升 MySQL 8.0 只读副本之前,对 MySQL 8.0 只读副本执行所有必需的数据定义语言 (DDL) 操作。例如,创建索引。此方法可避免在 MySQL 8.0 只读副本提升之后对其性能造成任何负面影响。要提升只读副本,请使用以下过程。

    1. 在控制台上,选择数据库,然后选择您刚刚升级的只读副本。

    2. 对于操作,请选择提升

    3. 选择,为只读副本实例启用自动备份。有关更多信息,请参阅“备份简介”。

    4. 选择 Continue (继续)

    5. 选择 Promote Read Replica

  9. 您现在有了 MySQL 数据库的升级版本。此时,您可以将应用程序定向到新的 MySQL 8.0 数据库实例。