维护 Amazon Aurora 数据库集群 - Amazon Aurora

维护 Amazon Aurora 数据库集群

Amazon RDS 会定期对 Amazon RDS 资源执行维护。维护通常涉及对数据库集群中以下资源的更新:

  • 底层硬件

  • 底层操作系统(OS)

  • 数据库引擎版本

针对操作系统的更新最常见的原因是安全问题。您应该尽快进行更新。

一些维护项目要求 Amazon RDS 使您的数据库集群脱机一小段时间。要求资源脱机的维护项目包括必需的操作系统或数据库修补。仅对与安全性和实例可靠性相关的修补程序自动安排必需的修补。此类补丁很少发生,通常每隔几个月发生一次。它所需要的维护时间很少超过维护窗口的一小部分。

您已选择不立即应用的延迟数据库集群和实例修改会在维护时段内应用。例如,您可以选择在维护时段内更改数据库实例类或集群或数据库参数组。您使用等待重启设置指定的此类修改不会显示在等待维护列表中。有关修改数据库集群的信息,请参阅修改 Amazon Aurora 数据库集群

要查看下一个维护时段待处理的修改,请使用 describe-db-clusters AWS CLI 命令并选中 PendingModifiedValues 字段。

查看待处理维护

通过使用 RDS 控制台、AWS CLI 或 RDS API 来查看维护更新是否可用于数据库集群。如果某个更新可用,则将在 Amazon RDS 控制台上的数据库集群维护列中指示它,如下所示。

可用的脱机修补程序

如果没有维护更新可用于数据库集群,则它的列值为

如果有维护更新可用于数据库集群,则可能为以下列值:

  • 必需 – 维护操作将应用于资源且不能无限期推迟。

  • available (可用) – 维护操作可用,但不会自动应用于资源。您可以手动应用它。

  • 下一个窗口 – 维护操作将在下一个维护窗口期间应用于资源。

  • In progress (正在进行) – 维护操作正在应用于资源。

如果更新可用,则可执行这些操作之一:

  • 如果维护值为 next window (下一时段),请通过从 Actions (操作) 中选择 Defer upgrade (推迟升级) 来推迟维护项目。如果维护操作已经启动,则无法推迟该操作。

  • 立即应用维护项目。

  • 计划下一个维护时段内要开始的维护项目。

  • 不执行任何操作。

要采取操作,请选择数据库集群以显示其详细信息,然后选择 Maintenance & backups (维护和备份)。将显示待处理维护项目。

待处理维护项目

维护时段确定待处理的操作何时开始,但不限制这些操作的总运行时间。维护操作不保证在维护时段结束前完成,可以在超出指定的结束时间后继续。有关更多信息,请参阅“Amazon RDS 维护时段”。

有关 Amazon Aurora 引擎更新的信息以及升级和修补这些引擎的说明,请参阅Amazon Aurora MySQL 的数据库引擎更新Amazon Aurora PostgreSQL 更新

您可以通过运行 describe-pending-maintenance-actions AWS CLI 命令来查看维护更新是否可用于数据库集群

应用数据库集群的更新

通过 Amazon RDS,您可以选择何时应用维护操作。您可通过使用 RDS 控制台、AWS Command Line Interface(AWS CLI)或 RDS API 来决定 Amazon RDS 何时应用更新。

注意

对于 RDS for SQL Server,可以停止和启动数据库实例,或者纵向扩展数据库实例类后再次缩减数据库实例类,以此来应用对底层操作系统的更新。

管理数据库集群的更新
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 选择具有必需更新的数据库集群

  4. 对于操作,请选择下列选项之一:

    • 立即升级

    • 在下一个窗口升级

      注意

      如果您选择 Upgrade at next window (在下一个窗口升级),并且以后希望延迟更新,可以选择 Defer upgrade (推迟升级)。如果维护操作已经启动,则无法推迟该操作。

      要取消维护操作,请修改数据库实例并禁用 Auto minor version upgrade (自动次要版本升级)

要将待处理的更新应用于数据库集群,请使用 apply-pending-maintenance-action AWS CLI 命令。

对于 Linux、macOS 或 Unix:

aws rds apply-pending-maintenance-action \ --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db \ --apply-action system-update \ --opt-in-type immediate

对于 Windows:

aws rds apply-pending-maintenance-action ^ --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db ^ --apply-action system-update ^ --opt-in-type immediate
注意

要推迟维护操作,请为 undo-opt-in 指定 --opt-in-type。如果维护操作已启动,则无法为 undo-opt-in 指定 --opt-in-type

要取消维护操作,请运行 modify-db-instance AWS CLI 命令并指定 --no-auto-minor-version-upgrade

要返回具有至少一个待处理更新的资源的列表,请使用 describe-pending-maintenance-actions AWS CLI 命令。

对于 Linux、macOS 或 Unix:

aws rds describe-pending-maintenance-actions \ --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db

对于 Windows:

aws rds describe-pending-maintenance-actions ^ --resource-identifier arn:aws:rds:us-west-2:001234567890:db:mysql-db

您还可以通过指定 describe-pending-maintenance-actions AWS CLI 命令的 --filters 参数返回数据库集群的资源列表。--filters 命令的格式是 Name=filter-name,Value=resource-id,...

下面是筛选条件的 Name 参数中接受的值:

  • db-instance-id – 接受数据库实例标识符或 Amazon Resource Names (ARN) 的列表。返回的列表只包括这些标识符或 ARN 标识的数据库实例的待处理维护操作。

  • db-cluster-id – 接受 Amazon Aurora 的数据库集群标识符或 ARN 的列表。返回的列表只包括这些标识符或 ARN 标识的数据库集群的待处理维护操作。

例如,以下示例返回 sample-cluster1sample-cluster2 数据库集群的待处理维护操作。

对于 Linux、macOS 或 Unix:

aws rds describe-pending-maintenance-actions \ --filters Name=db-cluster-id,Values=sample-cluster1,sample-cluster2

对于 Windows:

aws rds describe-pending-maintenance-actions ^ --filters Name=db-cluster-id,Values=sample-cluster1,sample-cluster2

要将更新应用于数据库集群,请调用 Amazon RDS API ApplyPendingMaintenanceAction 操作。

要返回具有至少一个待处理更新的资源的列表,请调用 Amazon RDS API DescribePendingMaintenanceActions 操作。

Amazon RDS 维护时段

每个数据库集群都有一个每周维护时段,在此期间会应用任何系统更改。可以考虑利用维护时段控制何时进行修改和软件修补。如果在给定的周内安排了维护事件,则将在您确定的 30 分钟维护时段内启动维护。大部分维护事件也将在 30 分钟的维护时段内完成,但较大的维护事件可能需要 30 分钟以上的时间才能完成。

这个 30 分钟维护时段是随机从每个地区的 8 小时时间段中选择出来的。如果在创建数据库集群时未指定维护时段,则 RDS 在该星期内随机选择的某一天中分配 30 分钟的维护时段。

在应用维护时,RDS 会使用您的数据库集群上的一些资源。您可观察到对性能的影响甚微。对于数据库实例来说,在极少数情况下,可能需要多可用区故障转移才能完成维护更新。

在下面可以找到为每个区域分配默认维护时段的时间段。

区域名称 区域 时间段
US East (Ohio) us-east-2 03:00–11:00 UTC
美国东部(弗吉尼亚北部) us-east-1 03:00–11:00 UTC
美国西部(加利福尼亚北部) us-west-1 06:00–14:00 UTC
美国西部(俄勒冈) us-west-2 06:00–14:00 UTC
Africa (Cape Town) af-south-1 03:00–11:00 UTC
Asia Pacific (Hong Kong) ap-east-1 06:00–14:00 UTC
亚太地区(海得拉巴) ap-south-2 06:30–14:30 UTC
亚太地区(雅加达) ap-southeast-3 08:00–16:00 UTC
亚太地区(墨尔本) ap-southeast-4 11:00–19:00 UTC
亚太地区(孟买) ap-south-1 06:00–14:00 UTC
Asia Pacific (Osaka) ap-northeast-3 22:00–23:59 UTC
Asia Pacific (Seoul) ap-northeast-2 13:00–21:00 UTC
亚太地区(新加坡) ap-southeast-1 14:00–22:00 UTC
亚太地区(悉尼) ap-southeast-2 12:00–20:00 UTC
亚太地区(东京) ap-northeast-1 13:00–21:00 UTC
加拿大(中部) ca-central-1 03:00–11:00 UTC
加拿大西部(卡尔加里) ca-west-1 18:00–02:00 UTC
中国(北京) cn-north-1 06:00–14:00 UTC
China (Ningxia) cn-northwest-1 06:00–14:00 UTC
Europe (Frankfurt) eu-central-1 21:00–05:00 UTC
欧洲地区(爱尔兰) eu-west-1 22:00–06:00 UTC
欧洲地区(伦敦) eu-west-2 22:00–06:00 UTC
欧洲地区(米兰) eu-south-1 02:00–10:00 UTC
欧洲地区(巴黎) eu-west-3 23:59–07:29 UTC
欧洲(西班牙) eu-south-2 02:00–10:00 UTC
Europe (Stockholm) eu-north-1 23:00–07:00 UTC
欧洲(苏黎世) eu-central-2 02:00–10:00 UTC
以色列(特拉维夫) il-central-1 03:00–11:00 UTC
中东(巴林) me-south-1 06:00–14:00 UTC
中东(阿联酋) me-central-1 05:00–13:00 UTC
南美洲(圣保罗) sa-east-1 00:00–08:00 UTC
AWS GovCloud(美国东部) us-gov-east-1 17:00–01:00 UTC
AWS GovCloud(美国西部) us-gov-west-1 06:00–14:00 UTC

调整首选数据库集群维护时段

Aurora 数据库集群维护时段应当选在使用量最小的时段上,因而可能必须不时予以修改。仅当正在应用的更新需要中断时,您的数据库集群才会在这段时间内不可用。执行必要更新所需的中断持续时间会非常短。

调整首选数据库集群维护时段
  1. 登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 选择要更改维护时段的数据库集群。

  4. 选择修改

  5. 维护部分中,更新维护时段。

  6. 选择 Continue (继续)

    在确认页面上,检查您的更改。

  7. 要立即将更改应用于维护时段,请在修改计划部分中选择立即

  8. 选择修改集群以保存更改。

    或者,选择 Back 编辑您的更改,或者选择 Cancel 取消更改。

要调整首选数据库集群维护时段,请使用具有以下参数的 AWS CLI modify-db-cluster 命令:

  • --db-cluster-identifier

  • --preferred-maintenance-window

以下代码示例将维护时段设置为周二的凌晨 4:00–4:30 (UTC)。

对于 Linux、macOS 或 Unix:

aws rds modify-db-cluster \ --db-cluster-identifier my-cluster \ --preferred-maintenance-window Tue:04:00-Tue:04:30

对于 Windows:

aws rds modify-db-cluster ^ --db-cluster-identifier my-cluster ^ --preferred-maintenance-window Tue:04:00-Tue:04:30

要调整首选数据库集群维护时段,请使用带以下参数的 Amazon RDS ModifyDBCluster API 操作:

  • DBClusterIdentifier

  • PreferredMaintenanceWindow

Aurora 数据库集群的自动次要版本升级

自动次要版本升级设置指定 Aurora 是否自动将升级应用于您的数据库集群。这些升级包括新的次要版本,而次要版本包括其他功能以及补丁(其中包含错误修复)。

原定设置情况下,此设置处于启用状态。对于每个新的数据库集群,为此设置选择适当的值。此值基于其重要性、预期生命周期以及每次升级后执行的验证测试量。

有关打开或关闭自动次要版本升级设置的说明,请参阅以下内容:

重要

我们强烈建议,对于新的和现有的数据库集群,将此设置应用于数据库集群,而不是单独应用于集群中的数据库实例。如果对集群中的任何数据库实例关闭了此设置,则不会自动升级数据库集群。

下表显示了在集群和实例级别应用自动次要版本升级设置时的工作原理。

操作 集群设置 实例设置 是否自动升级集群?
您在数据库集群上将其设置为 True。 True 对于所有新实例和现有实例,均为 True 支持
您在数据库集群上将其设置为 False。 False 对于所有新实例和现有实例,均为 False 不支持

之前在数据库集群上将其设置为 True。

您至少在一个数据库实例上将其设置为 False。

更改为 False 对于一个或多个实例为 False 不支持

之前在数据库集群上将其设置为 False。

您至少对于一个数据库实例(但并非所有实例)将其设置为 True。

False 对于一个或多个实例(但并非所有实例)为 True 不支持

之前在数据库集群上将其设置为 False。

您在所有数据库实例上将其设置为 True。

更改为 True 对于所有实例为 True 支持

事先通过 Amazon RDS 数据库集群事件(类别为 maintenance,ID 为 RDS-EVENT-0156)与自动次要版本升级进行通信。有关更多信息,请参阅 Amazon RDS 事件类别和事件消息

自动升级在维护时段发生。如果数据库集群中的各个数据库实例的维护时段与集群维护时段不同,则集群维护时段优先。

有关 Aurora PostgreSQL 引擎更新的更多信息,请参阅Amazon Aurora PostgreSQL 更新

有关 Aurora MySQL 的自动次要版本升级设置的更多信息,请参阅 启用 Aurora MySQL 次要版本之间的自动升级。有关 Aurora MySQL 的引擎更新的一般信息,请参阅 Amazon Aurora MySQL 的数据库引擎更新

对 Aurora 数据库集群启用自动次要版本升级

按照使用控制台、CLI 和 API 修改数据库集群中的常规程序进行操作。

控制台

修改数据库集群页面的维护部分中,选中允许自动次要版本升级复选框。

AWS CLI

调用 modify-db-cluster AWS CLI 命令。为 --db-cluster-identifier 选项指定数据库集群的名称,并为 --auto-minor-version-upgrade 选项指定 true。(可选)指定 --apply-immediately 选项,立即为数据库集群启用此设置。

RDS API

调用 ModifyDBCluster API 操作,并为 DBClusterIdentifier 参数指定数据库集群的名称,为 AutoMinorVersionUpgrade 参数指定 true。(可选)将 ApplyImmediately 参数设置为 true,立即为数据库集群启用此设置。

为 Aurora 数据库集群中的单个数据库实例启用自动次要版本升级

按照修改数据库集群中的数据库实例中的常规程序进行操作。

控制台

修改数据库实例页面的维护部分中,选中允许自动次要版本升级复选框。

AWS CLI

调用 modify-db-instance AWS CLI 命令。为 --db-instance-identifier 选项指定数据库实例的名称,为 true 选项指定 --auto-minor-version-upgrade。(可选)指定 --apply-immediately 选项,立即为数据库实例启用此设置。为集群中的每个数据库实例运行单独的 modify-db-instance 命令。

RDS API

调用 ModifyDBInstance API 操作,并为 DBInstanceIdentifier 参数指定数据库集群的名称,为 AutoMinorVersionUpgrade 参数指定 true。(可选)将 ApplyImmediately 参数设置为 true,立即为数据库实例启用此设置。为集群中的每个数据库实例调用单独的 ModifyDBInstance 操作。

您可以使用如下 CLI 命令来检查 Aurora MySQL 集群中所有数据库实例的 AutoMinorVersionUpgrade 设置的状态。

aws rds describe-db-instances \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,DBInstanceIdentifier:DBInstanceIdentifier,AutoMinorVersionUpgrade:AutoMinorVersionUpgrade}'

该命令产生的输出类似于以下内容:

[ { "DBInstanceIdentifier": "db-writer-instance", "DBClusterIdentifier": "my-db-cluster-57", "AutoMinorVersionUpgrade": true }, { "DBInstanceIdentifier": "db-reader-instance1", "DBClusterIdentifier": "my-db-cluster-57", "AutoMinorVersionUpgrade": false }, { "DBInstanceIdentifier": "db-writer-instance2", "DBClusterIdentifier": "my-db-cluster-80", "AutoMinorVersionUpgrade": true }, ... output omitted ...

在此示例中,数据库集群 my-db-cluster-57允许自动次要版本升级处于关闭状态,因为对于集群中的其中一个数据库实例关闭了此功能。

选择 Aurora MySQL 维护更新的频率

您可以控制每个数据库集群是经常还是很少进行 Aurora MySQL 升级。最佳选择取决于 Aurora MySQL 使用情况以及在 Aurora 上运行的应用程序的优先级。有关不太需要频繁升级的 Aurora MySQL 长期稳定性 (LTS) 版本的信息,请参阅 Aurora MySQL 长期支持 (LTS) 版本

如果符合以下部分或全部条件,您可能会选择很少升级 Aurora MySQL 集群:

  • 对于 Aurora MySQL 数据库引擎的每次更新,应用程序的测试周期需要很长的时间。

  • 很多数据库集群或很多应用程序运行相同的 Aurora MySQL 版本。您希望同时升级所有数据库集群和关联的应用程序。

  • 您同时使用 Aurora MySQL 和 RDS for MySQL。您希望将 Aurora MySQL 集群和 RDS for MySQL 数据库实例与同一级别的 MySQL 保持兼容。

  • Aurora MySQL 应用程序位于生产环境中或在其他方面对业务至关重要。除了在极少数情况下应用关键补丁以外,您无法承受升级停机。

  • Aurora MySQL 应用程序不受在后续 Aurora MySQL 版本中解决的性能问题或功能差异的限制。

如果上述因素适用于您的情况,您可以限制 Aurora MySQL 数据库集群的强制升级次数。为此,您可以在创建或升级该数据库集群时选择称为“长期支持”(LTS) 版本的特定 Aurora MySQL 版本。这样做可以最大限度减少该数据库集群的升级周期数、测试周期数以及与升级相关的中断次数。

如果符合以下部分或全部条件,您可能会选择经常升级 Aurora MySQL 集群:

  • 应用程序的测试周期简单明了。

  • 应用程序仍处于开发阶段。

  • 数据库环境使用各种不同的 Aurora MySQL 版本或 Aurora MySQL 和 RDS for MySQL 版本。每个 Aurora MySQL 集群具有自己的升级周期。

  • 在增加 Aurora MySQL 使用量之前,您正在等待改进特定的性能或功能。

如果上述因素适用于您的情况,您可以使 Aurora 更频繁地应用重要升级。为此,将 Aurora MySQL 数据库集群升级到比 LTS 版本更高的 Aurora MySQL 版本。这样做可以使您更快地获得最新的性能增强、错误修复和功能。

使用操作系统更新

Aurora MySQL 和 Aurora PostgreSQL 数据库集群中的数据库实例偶尔需要操作系统更新。Amazon RDS 将操作系统升级到更新的版本,以提高数据库性能和客户的整体安保状况。通常而言,更新大约需要花费 10 分钟。操作系统更新不会更改数据库实例的数据库引擎版本或数据库实例类。

我们建议您先更新数据库集群中的读取器数据库实例,然后更新写入器数据库实例。我们不建议同时更新读取器实例和写入器实例,因为发生失效转移时可能会导致停机。

我们建议您使用 AWS JDBC 驱动程序来实现更快的数据库失效转移。有关更多信息,请参阅适用于 MySQL 的 AWS JDBC 驱动程序适用于 PostgreSQL 的 AWS JDBC 驱动程序

有两种类型的操作系统更新,可根据数据库实例上待维护操作中可见的描述进行区分:

  • 操作系统发行版升级 – 用于迁移到支持的最新 Amazon Linux 主要版本。它在待维护操作中的描述是 New Operating System upgrade is available

  • 操作系统补丁 - 用于应用各种安全修复,有时用于提高数据库性能。它在待维护操作中的描述是 New Operating System patch is available

操作系统更新可能是可选的,也可能是强制性的:

  • 可以随时应用可选更新。虽然这些更新是可选的,但我们建议您定期应用它们,以使 RDS 实例集保持最新状态。RDS 自动应用这些更新。

    要在新的可选操作系统补丁变为可用时收到通知,您可以订阅安全修补事件类别中的 RDS-EVENT-0230。有关订阅 RDS 事件的信息,请参阅 订阅 Amazon RDS 事件通知

    注意

    RDS-EVENT-0230 不适用于操作系统发行版升级。

    注意

    如果针对 RDS for SQL Server 数据库实例收到了 RDS-EVENT-0230,则无法通过 apply-pending-maintenance 操作应用操作系统更新。有关更多信息,请参阅 应用数据库集群的更新

  • 强制更新是必需的,我们会在强制更新之前发送通知。通知可能包含截止日期。请制定计划以安排在此截止日期之前更新。在指定的截止日期之后,Amazon RDS 会在指定的维护时段之一内,自动将数据库实例的操作系统升级到最新版本。

    操作系统发行版升级是强制性的。

注意

为了履行各种合规性义务,可能需要及时了解所有可选和强制性更新。我们建议您在维护时段内定期应用 RDS 提供的所有更新。

您可以使用 AWS Management Console或 AWS CLI 来获取有关操作系统升级类型的信息。

使用 AWS Management Console获取更新信息
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases(数据库),然后选择数据库实例。

  3. 选择 Maintenance(维护和备份)。

  4. 等待维护部分中,找到操作系统更新,然后检查说明值。

在 AWS Management Console中,操作系统发行版升级的描述设置为新操作系统升级可用,如下图所示。此升级是强制性的。

操作系统发行版升级。

操作系统补丁的描述设置为新操作系统补丁可用,如下图所示。

操作系统补丁。

要从 AWS CLI 中获取更新信息,请使用 describe-pending-maintenance-actions 命令。

aws rds describe-pending-maintenance-actions

以下输出显示了操作系统发行版升级。

{ "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:mydb1", "PendingMaintenanceActionDetails": [ { "Action": "system-update", "Description": "New Operating System upgrade is available" } ] }

以下输出显示了操作系统补丁。

{ "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:mydb2", "PendingMaintenanceActionDetails": [ { "Action": "system-update", "Description": "New Operating System patch is available" } ] }

操作系统更新的可用性

操作系统更新特定于数据库引擎版本和数据库实例类。因此,数据库实例在不同的时间接收或要求更新。当根据数据库实例的引擎版本和实例类,数据库实例有可用的操作系统更新时,更新将显示在控制台中。也可以通过运行 AWS CLI describe-pending-maintenance-actions 命令或通过调用 RDS DescribePendingMaintenanceActions API 操作来查看更新。如果您的实例有可用更新,则可以按照应用数据库集群的更新中的说明更新操作系统。