维护 Amazon Aurora 数据库集群
Amazon RDS 会定期对 Amazon RDS 资源执行维护。维护通常涉及对数据库集群中以下资源的更新:
-
底层硬件
-
底层操作系统(OS)
-
数据库引擎版本
针对操作系统的更新最常见的原因是安全问题。您应该尽快进行更新。
一些维护项目要求 Amazon RDS 使您的数据库集群脱机一小段时间。要求资源脱机的维护项目包括必需的操作系统或数据库修补。仅对与安全性和实例可靠性相关的修补程序自动安排必需的修补。此类补丁很少发生,通常每隔几个月发生一次。它所需要的维护时间很少超过维护窗口的一小部分。
您已选择不立即应用的延迟数据库集群和实例修改会在维护时段内应用。例如,您可以选择在维护时段内更改数据库实例类或集群或数据库参数组。您使用等待重启设置指定的此类修改不会显示在等待维护列表中。有关修改数据库集群的信息,请参阅修改 Amazon Aurora 数据库集群。
要查看下一个维护时段待处理的修改,请使用 describe-db-clustersPendingModifiedValues
字段。
主题
查看待处理维护
通过使用 RDS 控制台、Amazon 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
Amazon CLI 命令来查看维护更新是否可用于数据库集群。
应用数据库集群的更新
通过 Amazon RDS,您可以选择何时应用维护操作。您可通过使用 RDS 控制台、Amazon Command Line Interface(Amazon CLI)或 RDS API 来决定 Amazon RDS 何时应用更新。
注意
对于 RDS for SQL Server,可以停止和启动数据库实例,或者纵向扩展数据库实例类后再次缩减数据库实例类,以此来应用对底层操作系统的更新。
管理数据库集群的更新
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases (数据库)。
-
选择具有必需更新的数据库集群。
-
对于操作,请选择下列选项之一:
-
立即升级
-
在下一个窗口升级
注意
如果您选择 Upgrade at next window (在下一个窗口升级),并且以后希望延迟更新,可以选择 Defer upgrade (推迟升级)。如果维护操作已经启动,则无法推迟该操作。
要取消维护操作,请修改数据库实例并禁用 Auto minor version upgrade (自动次要版本升级)。
-
要将待处理的更新应用于数据库集群,请使用 apply-pending-maintenance-action Amazon CLI 命令。
例
对于 Linux、macOS 或 Unix:
aws rds apply-pending-maintenance-action \ --resource-identifier
arn:aws:rds:us-west-2:001234567890:db:mysql-db
\ --apply-actionsystem-update
\ --opt-in-typeimmediate
对于 Windows:
aws rds apply-pending-maintenance-action ^ --resource-identifier
arn:aws:rds:us-west-2:001234567890:db:mysql-db
^ --apply-actionsystem-update
^ --opt-in-typeimmediate
注意
要推迟维护操作,请为 undo-opt-in
指定 --opt-in-type
。如果维护操作已启动,则无法为 undo-opt-in
指定 --opt-in-type
。
要取消维护操作,请运行 modify-db-instance Amazon CLI 命令并指定 --no-auto-minor-version-upgrade
。
要返回具有至少一个待处理更新的资源的列表,请使用 describe-pending-maintenance-actions Amazon 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
Amazon 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-cluster1
和 sample-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 |
Amazon GovCloud(美国东部) | us-gov-east-1 | 17:00–01:00 UTC |
Amazon GovCloud(美国西部) | us-gov-west-1 | 06:00–14:00 UTC |
调整首选数据库集群维护时段
Aurora 数据库集群维护时段应当选在使用量最小的时段上,因而可能必须不时予以修改。仅当正在应用的更新需要中断时,您的数据库集群才会在这段时间内不可用。执行必要更新所需的中断持续时间会非常短。
调整首选数据库集群维护时段
-
登录Amazon Web Services Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases (数据库)。
-
选择要更改维护时段的数据库集群。
-
选择修改。
-
在维护部分中,更新维护时段。
-
选择 Continue (继续)。
在确认页面上,检查您的更改。
-
要立即将更改应用于维护时段,请在修改计划部分中选择立即。
-
选择修改集群以保存更改。
或者,选择 Back 编辑您的更改,或者选择 Cancel 取消更改。
要调整首选数据库集群维护时段,请使用具有以下参数的 Amazon 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-windowTue:04:00-Tue:04:30
对于 Windows:
aws rds modify-db-cluster ^ --db-cluster-identifier
my-cluster
^ --preferred-maintenance-windowTue: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 修改数据库集群中的常规程序进行操作。
- 控制台
-
在修改数据库集群页面的维护部分中,选中允许自动次要版本升级复选框。
- Amazon CLI
-
调用 modify-db-cluster Amazon CLI 命令。为
--db-cluster-identifier
选项指定数据库集群的名称,并为--auto-minor-version-upgrade
选项指定true
。(可选)指定--apply-immediately
选项,立即为数据库集群启用此设置。 - RDS API
-
调用 ModifyDBCluster API 操作,并为
DBClusterIdentifier
参数指定数据库集群的名称,为AutoMinorVersionUpgrade
参数指定true
。(可选)将ApplyImmediately
参数设置为true
,立即为数据库集群启用此设置。
为 Aurora 数据库集群中的单个数据库实例启用自动次要版本升级
按照修改数据库集群中的数据库实例中的常规程序进行操作。
- 控制台
-
在修改数据库实例页面的维护部分中,选中允许自动次要版本升级复选框。
- Amazon CLI
-
调用 modify-db-instance Amazon 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 分钟。操作系统更新不会更改数据库实例的数据库引擎版本或数据库实例类。
我们建议您先更新数据库集群中的读取器数据库实例,然后更新写入器数据库实例。我们不建议同时更新读取器实例和写入器实例,因为发生失效转移时可能会导致停机。
我们建议您使用 Amazon JDBC 驱动程序来实现更快的数据库失效转移。有关更多信息,请参阅适用于 MySQL 的 Amazon 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 提供的所有更新。
您可以使用 Amazon Web Services Management Console或 Amazon CLI 来获取有关操作系统升级类型的信息。
使用 Amazon Web Services Management Console获取更新信息
登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases(数据库),然后选择数据库实例。
-
选择 Maintenance(维护和备份)。
-
在等待维护部分中,找到操作系统更新,然后检查说明值。
在 Amazon Web Services Management Console中,操作系统发行版升级的描述设置为新操作系统升级可用,如下图所示。此升级是强制性的。
操作系统补丁的描述设置为新操作系统补丁可用,如下图所示。
要从 Amazon 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" } ] }
操作系统更新的可用性
操作系统更新特定于数据库引擎版本和数据库实例类。因此,数据库实例在不同的时间接收或要求更新。当根据数据库实例的引擎版本和实例类,数据库实例有可用的操作系统更新时,更新将显示在控制台中。也可以通过运行 Amazon CLI describe-pending-maintenance-actions 命令或通过调用 RDS DescribePendingMaintenanceActions API 操作来查看更新。如果您的实例有可用更新,则可以按照应用数据库集群的更新中的说明更新操作系统。