

# 如何执行就地升级
<a name="AuroraMySQL.Upgrading.Procedure"></a>

我们建议您查看 [Aurora MySQL 主要版本就地升级的工作原理](AuroraMySQL.Updates.MajorVersionUpgrade.md#AuroraMySQL.Upgrading.Sequence)中的背景材料。

按[为 Aurora MySQL 集群计划主要版本升级](AuroraMySQL.Updates.MajorVersionUpgrade.md#AuroraMySQL.Upgrading.Planning)中所述执行任何升级前的计划和测试。

## 控制台
<a name="AuroraMySQL.Upgrading.ModifyingDBCluster.CON"></a>

以下示例将 `mydbcluster-cluster` 数据库集群升级到 Aurora MySQL 版本 3.04.1。

**要升级 Aurora MySQL 数据库集群的主要版本**

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

1. 如果您将自定义参数组用于原始数据库集群，请创建与新的主要版本兼容的相应参数组。对这个新参数组中的配置参数进行任何必要的调整。有关更多信息，请参阅“[就地升级如何影响集群的参数组](#AuroraMySQL.Upgrading.ParamGroups)”。

1.  在导航窗格中，选择 **Databases (数据库)**。

1.  在列表中，选择您要修改的数据库集群。

1.  选择 **Modify (修改)**。

1.  对于 **Version**（版本），选择新的 Aurora MySQL 主要版本。

   我们通常建议使用主要版本的最新次要版本。在这里，我们选择当前的默认版本。  
![\[Aurora MySQL 数据库集群从版本 2 就地升级到版本 3\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/ams-upgrade-v2-v3.png)

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

1.  在下一页上，指定何时执行升级。选择 **During the next scheduled maintenance window**（在下一个计划的维护时段内）或 **Immediately**（立即）。

1.  （可选）在升级过程中定期检查 RDS 控制台中的 **Events**（事件）页面。这样做可以帮助您监控升级进度并识别问题。如果升级遇到任何问题，请参阅[Aurora MySQL 就地升级的故障排除](AuroraMySQL.Upgrading.Troubleshooting.md)以了解要采取的步骤。

1. 如果您在此过程开始时创建了一个新的参数组，请将自定义参数组与升级的集群关联起来。有关更多信息，请参阅 [就地升级如何影响集群的参数组](#AuroraMySQL.Upgrading.ParamGroups)。
**注意**  
 执行此步骤需要您再次重新启动集群以应用新的参数组。

1.  （可选）完成任何升级后测试后，请删除升级开始时 Aurora 创建的手动快照。

## AWS CLI
<a name="AuroraMySQL.Upgrading.ModifyingDBCluster.CLI"></a>

要升级 Aurora MySQL 数据库集群的主要版本，请结合使用 AWS CLI [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令与以下所需的参数：
+ `--db-cluster-identifier`
+ `--engine-version`
+ `--allow-major-version-upgrade`
+  `--apply-immediately` 或者 `--no-apply-immediately`

如果您的集群使用任何自定义参数组，则还要包含以下一个或两个选项：
+ `--db-cluster-parameter-group-name`，如果集群使用自定义集群参数组
+ `--db-instance-parameter-group-name`，如果集群中的任何实例使用自定义数据库参数组

以下示例将 `sample-cluster` 数据库集群升级到 Aurora MySQL 版本 3.04.1。升级会立即进行，而不是等待下一个维护时段。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster \
          --db-cluster-identifier sample-cluster \
          --engine-version 8.0.mysql_aurora.3.04.1 \
          --allow-major-version-upgrade \
          --apply-immediately
```
对于 Windows：  

```
aws rds modify-db-cluster ^
          --db-cluster-identifier sample-cluster ^
          --engine-version 8.0.mysql_aurora.3.04.1 ^
          --allow-major-version-upgrade ^
          --apply-immediately
```
您可以将其他 CLI 命令与 `modify-db-cluster` 结合使用，以创建执行和验证升级的自动端到端流程。有关更多信息以及示例，请参阅 [Aurora MySQL 就地升级教程](AuroraMySQL.Upgrading.Tutorial.md)。

**注意**  
如果您的集群属于 Aurora 全局数据库的一部分，则就地升级程序会略有不同。您可以调用 [modify-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-global-cluster.html) 命令操作而不是 `modify-db-cluster`。有关更多信息，请参阅“[全局数据库的就地主要版本升级](#AuroraMySQL.Upgrading.GlobalDB)”。

## RDS API
<a name="AuroraMySQL.Upgrading.ModifyingDBCluster.API"></a>

要升级 Aurora MySQL 数据库集群的主要版本，请结合使用 RDS API 操作 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) 与以下所需的参数：
+ `DBClusterIdentifier`
+ `Engine`
+ `EngineVersion`
+ `AllowMajorVersionUpgrade`
+ `ApplyImmediately`（设置为 `true` 或 `false`）

**注意**  
如果您的集群属于 Aurora 全局数据库的一部分，则就地升级程序会略有不同。您将调用 [ModifyGlobalCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyGlobalClusterParameterGroup.html) 操作而不是 `ModifyDBCluster`。有关更多信息，请参阅“[全局数据库的就地主要版本升级](#AuroraMySQL.Upgrading.GlobalDB)”。

## 就地升级如何影响集群的参数组
<a name="AuroraMySQL.Upgrading.ParamGroups"></a>

对于与 MySQL 5.7 或 8.0 兼容的集群，Aurora 参数组具有不同的配置设置集。执行就地升级时，升级后的集群及其所有实例必须使用相应的集群和实例参数组：

您的集群和实例可能使用与 5.7 兼容的原定设置参数组。如果是这样，则升级后的集群和实例将以与 8.0 兼容的原定设置参数组开始。如果您的集群和实例使用任何自定义参数组，则确保创建相应的与 8.0 兼容的参数组。此外，请确保在升级过程中指定这些参数组。

**注意**  
对于大多数参数设置，您可以在两个点选择自定义参数组。也即，在您创建集群或稍后将参数组与集群关联时。  
但是，如果您将非原定设置设置用于 `lower_case_table_names` 参数，则必须提前使用此设置来设置自定义参数组。然后，在执行快照还原操作以创建集群时指定参数组。创建集群后，`lower_case_table_names` 参数的任何更改不会产生任何影响。  
我们建议您在从 Aurora MySQL 版本 2 升级到版本 3 时对 `lower_case_table_names` 使用相同的设置。  
使用基于 Aurora MySQL 的 Aurora 全局数据库时，如果开启了 `lower_case_table_names` 参数，则无法执行从 Aurora MySQL 版本 2 到版本 3 的就地升级。有关可以使用的方法的更多信息，请参阅[主要版本升级。](aurora-global-database-upgrade.md#aurora-global-database-upgrade.major)。

**重要**  
 如果在升级过程中指定了任何自定义参数组，请确保在升级完成后手动重启集群。这样做会使集群开始使用您的自定义参数设置。

## Aurora MySQL 版本之间的集群属性更改
<a name="AuroraMySQL.Upgrading.Attrs"></a>

当从 Aurora MySQL 版本 2 升级到版本 3 时，请确保检查用于设置或管理 Aurora MySQL 集群和数据库实例的任何应用程序或脚本。

此外，请更改操作参数组的代码，以考虑到原定设置参数组名称对于 5.7 和 8.0 兼容的集群各不相同这一事实。Aurora MySQL 版本 2 和 3 集群的原定设置参数组名称分别为 `default.aurora-mysql5.7` 和 `default.aurora-mysql8.0`。

例如，升级之前，您可能有适用于您的集群的类似以下内容的代码。

```
# Check the default parameter values for MySQL 5.7–compatible clusters.
aws rds describe-db-parameters --db-parameter-group-name default.aurora-mysql5.7 --region us-east-1
```

 升级集群的主要版本后，请按如下方式修改该代码。

```
# Check the default parameter values for MySQL 8.0–compatible clusters.
aws rds describe-db-parameters --db-parameter-group-name default.aurora-mysql8.0 --region us-east-1
```

## 全局数据库的就地主要版本升级
<a name="AuroraMySQL.Upgrading.GlobalDB"></a>

 对于 Aurora Global Database，您可升级全局数据库集群。Aurora 会同时自动升级所有集群，并确保所有集群运行相同的引擎版本。此要求是因为对系统表、数据文件格式等所做的任何更改都会自动复制到所有辅助集群。

按照[Aurora MySQL 主要版本就地升级的工作原理](AuroraMySQL.Updates.MajorVersionUpgrade.md#AuroraMySQL.Upgrading.Sequence)中的说明进行操作。指定要升级的内容时，请确保选择全局数据库集群，而不是其包含的集群之一。

如果您使用 AWS 管理控制台，请选择具有角色 **Global database**（全局数据库）的项目。

![\[升级全局数据库集群\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/aurora-global-databases-major-upgrade-global-cluster.png)


 如果您使用 AWS CLI 或 RDS API，请通过调用 [modify-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-global-cluster.html) 命令或 [ModifyGlobalCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyGlobalCluster.html) 操作来启动升级过程。您可以使用其中一个操作来代替 `modify-db-cluster` 或 `ModifyDBCluster`。

**注意**  
在对该 Aurora 全局数据库执行主要版本升级时，无法为全局数据库集群指定自定义参数组。在全局集群的每个区域中创建自定义参数组。然后，在升级后手动将它们应用于区域集群。

 要使用 AWS CLI 升级 Aurora MySQL 全局数据库集群的主要版本，请结合使用 [modify-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-global-cluster.html) 命令与以下所需的参数：
+  `--global-cluster-identifier` 
+  `--engine aurora-mysql` 
+  `--engine-version` 
+  `--allow-major-version-upgrade` 

以下示例将全局数据库集群升级到 Aurora MySQL 版本 2.10.2。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds modify-global-cluster \
          --global-cluster-identifier global_cluster_identifier \
          --engine aurora-mysql \
          --engine-version 5.7.mysql_aurora.2.10.2 \
          --allow-major-version-upgrade
```
对于 Windows：  

```
aws rds modify-global-cluster ^
          --global-cluster-identifier global_cluster_identifier ^
          --engine aurora-mysql ^
          --engine-version 5.7.mysql_aurora.2.10.2 ^
          --allow-major-version-upgrade
```

## 回溯注意事项
<a name="AuroraMySQL.Upgrading.Backtrack"></a>

如果您升级的集群启用了回溯功能，您无法将升级的集群回溯到升级之前的时间。