使用只读副本在升级 RDS for MySQL 数据库时减少停机时间 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用只读副本在升级 RDS for 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 创建自定义数据库参数组。有关说明,请参阅在 Amazon RDS 中创建数据库参数组

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

    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 数据库实例。