

# 使用只读副本在升级 RDS for MariaDB 数据库时减少停机时间
<a name="USER_UpgradeDBInstance.MariaDB.ReducedDowntime"></a>

在大多数情况下，蓝绿部署是升级 MariaDB 数据库实例时减少停机时间的最佳选择。有关更多信息，请参阅 [使用 Amazon RDS 蓝绿部署进行数据库更新](blue-green-deployments.md)。

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

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

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

**在使用数据库实例时升级 MariaDB 数据库**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

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

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

   1. 对于 **Actions (操作)**，选择 **Create read replica (创建只读副本)**。

   1. 为只读副本提供 **DB instance identifier**（数据库实例标识符）的值，并确保 **DB instance class**（数据库实例类）和其他设置与您的 MariaDB 10.5 数据库实例匹配。

   1. 选择 **Create read replica (创建只读副本)**。

1. （可选）创建只读副本且**状态**显示为**可用**之后，将只读副本转换为多可用区部署并启用备份。

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

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

   1. 选择**修改**。

   1. 对于**多可用区部署**，请选择**创建备用实例**。

   1. 对于 **Backup Retention Period**（备份保留期），请选择正的非零值（如 3 天），然后选择 **Continue**（继续）。

   1. 对于**修改计划**，选择**立即应用**。

   1. 选择**修改数据库实例**。

1. 当只读副本 **Status**（状态）显示 **Available**（可用）后，将只读副本升级到 MariaDB 10.6：

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

   1. 选择**修改**。

   1. 对于 **DB engine version**（数据库引擎版本），选择要升级到的 MariaDB 10.6 版本，然后选择 **Continue**（继续）。

   1. 对于**修改计划**，选择**立即应用**。

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

1. 升级完成并且 **Status**（状态）显示 **Available**（可用）之后，验证升级的只读副本是否与源 MariaDB 10.5 数据库实例保持同步。要进行验证，请连接到只读副本并运行 `SHOW REPLICA STATUS` 命令。如果 `Seconds_Behind_Master` 字段为 `0`，则复制保持最新。
**注意**  
以前的 MariaDB 版本使用的是 `SHOW SLAVE STATUS`，而不是 `SHOW REPLICA STATUS`。如果您使用的 MariaDB 版本低于 10.6，请使用 `SHOW SLAVE STATUS`。

1. （可选）创建只读副本的只读副本。

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

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

   1. 对于 **Actions (操作)**，选择 **Create read replica (创建只读副本)**。

   1. 为只读副本提供 **DB instance identifier**（数据库实例标识符）的值，并确保 **DB instance class**（数据库实例类）和其他设置与您的 MariaDB 10.5 数据库实例匹配。

   1. 选择 **Create read replica (创建只读副本)**。

1. （可选）为只读副本配置自定义数据库参数组。

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

   1. 为 MariaDB 10.6 创建自定义数据库参数组。有关说明，请参阅 [在 Amazon RDS 中创建数据库参数组](USER_WorkingWithParamGroups.Creating.md)。

   1. 修改要在刚创建的数据库参数组中更改的参数。有关说明，请参阅[在 Amazon RDS 中修改数据库参数组中的参数](USER_WorkingWithParamGroups.Modifying.md)。

   1. 在控制台中，选择**数据库**，然后选择只读副本。

   1. 选择**修改**。

   1. 对于 **DB parameter group**（数据库参数组），请选择刚创建的 MariaDB 10.6 数据库参数组，然后选择 **Continue**（继续）。

   1. 对于**修改计划**，选择**立即应用**。

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

1. 使您的 MariaDB 10.6 只读副本成为独立的数据库实例。
**重要**  
将 MariaDB 10.6 只读副本提升为独立的数据库实例后，它不再是 MariaDB 10.5 数据库实例的副本。建议您在源 MariaDB 10.5 数据库实例处于只读模式并且所有写入操作都暂停的维护时段期间，提升 MariaDB 10.6 只读副本。提升完成之后，您可以将写入操作定向到已升级的 MariaDB 10.6 数据库实例，以确保不会丢失写入操作。  
此外，建议您在提升 MariaDB 10.6 只读副本之前，对 MariaDB 10.6 只读副本执行所有必需的数据定义语言（DDL）操作。例如，创建索引。此方法可避免在提升 MariaDB 10.6 只读副本之后对其性能造成任何负面影响。要提升只读副本，请使用以下过程。

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

   1. 对于**操作**，请选择**提升**。

   1. 选择**是**，为只读副本实例启用自动备份。有关更多信息，请参阅“[备份简介](USER_WorkingWithAutomatedBackups.md)”。

   1. 选择 **Continue (继续)**。

   1. 选择 **Promote Read Replica**。

1. 您现在有了 MariaDB 数据库的升级版本。此时，您可以将应用程序定向到新的 MariaDB 10.6 数据库实例。