维护数据库实例
Amazon RDS 会定期对 Amazon RDS 资源执行维护。维护通常涉及对数据库实例中以下资源的更新:
-
底层硬件
-
底层操作系统(OS)
-
数据库引擎版本
针对操作系统的更新最常见的原因是安全问题。您应该尽快进行更新。
一些维护项目要求 Amazon RDS 使您的数据库实例脱机一小段时间。要求资源脱机的维护项目包括必需的操作系统或数据库修补。仅对与安全性和实例可靠性相关的修补程序自动安排必需的修补。此类补丁很少发生,通常每隔几个月发生一次。它所需要的维护时间很少超过维护窗口的一小部分。
您已选择不立即应用的延迟数据库实例修改也会在维护时段内应用。例如,您可以选择在维护时段内更改数据库实例类或参数组。您使用等待重启设置指定的此类修改不会显示在等待维护列表中。有关修改 数据库实例的信息,请参阅修改 Amazon RDS 数据库实例。
要查看下一个维护时段待处理的修改,请使用 describe-db-instancesPendingModifiedValues
字段。
查看待处理维护
通过使用 RDS 控制台、AWS CLI 或 RDS API 来查看维护更新是否可用于数据库实例。如果某个更新可用,则将在 Amazon RDS 控制台上的数据库实例的维护列中指示它,如下所示。
如果没有维护更新可用于数据库实例,则它的列值为无。
如果有维护更新可用于数据库实例,则可能为以下列值:
-
必需 – 维护操作将应用于资源且不能无限期推迟。
-
available (可用) – 维护操作可用,但不会自动应用于资源。您可以手动应用它。
-
下一个窗口 – 维护操作将在下一个维护窗口期间应用于资源。
-
In progress (正在进行) – 维护操作正在应用于资源。
如果更新可用,则可执行这些操作之一:
-
如果维护值为 next window (下一时段),请通过从 Actions (操作) 中选择 Defer upgrade (推迟升级) 来推迟维护项目。如果维护操作已经启动,则无法推迟该操作。
-
立即应用维护项目。
-
计划下一个维护时段内要开始的维护项目。
-
不执行任何操作。
要采取操作,请选择数据库实例以显示其详细信息,然后选择 Maintenance & backups (维护和备份)。将显示待处理维护项目。
维护时段确定待处理的操作何时开始,但不限制这些操作的总运行时间。维护操作不保证在维护时段结束前完成,可以在超出指定的结束时间后继续。有关更多信息,请参阅“Amazon RDS 维护时段”。
您可以通过运行 describe-pending-maintenance-actions
AWS CLI 命令来查看维护更新是否可用于数据库实例。
应用数据库实例的更新
通过 Amazon RDS,您可以选择何时应用维护操作。您可通过使用 RDS 控制台、AWS Command Line Interface(AWS CLI)或 RDS API 来决定 Amazon RDS 何时应用更新。
注意
对于 RDS for SQL Server,可以停止和启动数据库实例,或者纵向扩展数据库实例类后再次缩减数据库实例类,以此来应用对底层操作系统的更新。
管理数据库实例的更新
登录 AWS 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 AWS 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 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-instance1
和 sample-instance2
数据库实例的待处理维护操作。
例
对于 Linux、macOS 或 Unix:
aws rds describe-pending-maintenance-actions \ --filters Name=db-instance-id,Values=sample-instance1,sample-instance2
对于 Windows:
aws rds describe-pending-maintenance-actions ^ --filters Name=db-instance-id,Values=sample-instance1,sample-instance2
要将更新应用于数据库实例,请调用 Amazon RDS API ApplyPendingMaintenanceAction
操作。
要返回具有至少一个待处理更新的资源的列表,请调用 Amazon RDS API DescribePendingMaintenanceActions
操作。
多可用区部署的维护
采用多可用区部署的方式运行数据库实例可进一步降低维护事件的影响。此结果是因为 Amazon RDS 通过执行以下步骤来应用操作系统更新:
-
执行备用实例的维护。
-
将备用实例提升为主实例。
-
执行原主实例的维护,该实例将变成新的备用实例。
如果您在多可用区部署中为数据库实例升级数据库引擎,Amazon RDS 会同时修改主数据库实例和辅助数据库实例。在这种情况下,多可用区部署中的主数据库实例和辅助数据库实例在升级过程中都不可用。此操作会导致停机,直至升级完成。停机持续时间因数据库实例的大小而异。
如果需要应用底层操作系统补丁,则需要短暂的多可用区失效转移,才能将补丁应用于主数据库实例。这种失效转移通常持续不到一分钟。
如果您的数据库实例运行 RDS for MySQL、RDS for PostgreSQL 或 RDS for MariaDB,您可以使用蓝绿部署,最大限度地减少升级所需的停机时间。有关更多信息,请参阅 使用 Amazon RDS 蓝绿部署进行数据库更新。如果您在多可用区部署中升级 RDS for SQL Server 数据库实例,则 Amazon RDS 会执行滚动升级,因此只会在失效转移期间出现中断。有关更多信息,请参阅 多可用区和内存优化注意事项。
如果您的数据库实例在多可用区部署中运行 RDS for SQL Server,则可以使用以下方法之一对底层操作系统应用更新:
将数据库实例类修改为不同的大小,然后将其修改回原始大小。
纵向扩展数据库实例的大小,然后缩减到原始大小。
将数据库实例从多可用区修改为单可用区,停止和启动数据库实例,然后将实例更改回多可用区。
有关多可用区部署的更多信息,请参阅配置和管理多可用区部署。
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 |
调整首选数据库实例维护时段
维护时段应当选在使用量最小的时段上,因而可能必须不时予以修改。数据库实例只会在应用系统更改(例如,数据库实例类中的更改)而需要中断的期间内不可用。数据库实例仅在进行必要更改所需的最短时间内不可用。
在以下示例中,将调整数据库实例的首选维护时段。
对于此示例,我们假设存在名为 mydbinstance 的数据库实例,它首选的维护时段为 UTC 时间“Sun:05:00–Sun:06:00”。
调整首选维护时段
登录AWS Management Console并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择数据库,然后选择您希望修改的数据库实例。
-
选择修改。将显示修改数据库实例页面。
-
在维护部分中,更新维护时段。
注意
数据库实例的维护时段不能与备份时段重叠。如果向与备份时段重叠的维护时段内输入值,会显示一条错误消息。
-
选择 Continue (继续)。
在确认页面上,检查您的更改。
-
要立即应用对维护时段的更改,请选择立即应用。
-
选择修改数据库实例以保存更改。
或者,选择 Back 编辑您的更改,或者选择 Cancel 取消更改。
要调整首选维护时段,请使用带下列参数的 AWS CLI modify-db-instance
命令:
-
--db-instance-identifier
-
--preferred-maintenance-window
例
以下代码示例将维护时段设置为周二的凌晨 4:00-4:30 (UTC)。
对于 Linux、macOS 或 Unix:
aws rds modify-db-instance \ --db-instance-identifier
mydbinstance
\ --preferred-maintenance-windowTue:04:00-Tue:04:30
对于 Windows:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --preferred-maintenance-windowTue:04:00-Tue:04:30
要调整首选维护时段,请使用具有以下参数的 Amazon RDS API ModifyDBInstance
操作:
-
DBInstanceIdentifier
-
PreferredMaintenanceWindow
使用操作系统更新
RDS for Db2、RDS for MariaDB、RDS for MySQL、RDS for PostgreSQL 和 RDS for Oracle 数据库实例有时需要操作系统更新。Amazon RDS 将操作系统升级到更新的版本,以提高数据库性能和客户的整体安保状况。通常而言,更新大约需要花费 10 分钟。操作系统更新不会更改数据库实例的数据库引擎版本或数据库实例类。
操作系统更新可能是可选的,也可能是强制性的:
-
可以随时应用可选更新。虽然这些更新是可选的,但我们建议您定期应用它们,以使 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获取更新信息
登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/
。 -
在导航窗格中,选择 Databases(数据库),然后选择数据库实例。
-
选择 Maintenance & backups(维护和备份)。
-
在等待维护部分中,找到操作系统更新,然后检查状态值。
在 AWS Management Console中,可选的更新将其维护 Status(状态)设置为 available(可用)并且没有 Apply date(应用日期),如下图所示。
强制性更新将其维护 Status(状态)设置为 required(必需)并且有 Apply date(应用日期),如下图所示。
要从 AWS CLI 中获取更新信息,请使用 describe-pending-maintenance-actions 命令。
aws rds describe-pending-maintenance-actions
强制性操作系统更新包括 AutoAppliedAfterDate
值和 CurrentApplyDate
值。可选的操作系统更新不包含这些值。
以下输出显示强制性操作系统更新。
{ "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:mydb1", "PendingMaintenanceActionDetails": [ { "Action": "system-update", "AutoAppliedAfterDate": "2022-08-31T00:00:00+00:00", "CurrentApplyDate": "2022-08-31T00:00:00+00:00", "Description": "New Operating System update is available" } ] }
以下输出显示可选的操作系统更新。
{ "ResourceIdentifier": "arn:aws:rds:us-east-1:123456789012:db:mydb2", "PendingMaintenanceActionDetails": [ { "Action": "system-update", "Description": "New Operating System update is available" } ] }
操作系统更新的可用性
操作系统更新特定于数据库引擎版本和数据库实例类。因此,数据库实例在不同的时间接收或要求更新。当根据数据库实例的引擎版本和实例类,数据库实例有可用的操作系统更新时,更新将显示在控制台中。也可以通过运行 AWS CLI describe-pending-maintenance-actions 命令或通过调用 RDS DescribePendingMaintenanceActions API 操作来查看更新。如果您的实例有可用更新,则可以按照应用数据库实例的更新中的说明更新操作系统。
强制性操作系统更新时间表
我们计划使用以下时间表进行强制性操作系统更新。应用日期是指 Amazon RDS 开始应用强制性更新的时间。对于表格中的每个日期,开始时间均为 00:00 通用协调时间 (UTC)。
数据库引擎 | 应用日期 |
---|---|
RDS for MySQL |
2023 年 1 月 30 日 |
RDS for MariaDB |
2023 年 1 月 30 日 |
RDS for PostgreSQL |
2023 年 3 月 31 日 |
注意
表中的日期适用于 2022 年未经历强制性操作系统更新的客户。要确认 2023 年的强制性操作系统更新是否会影响您,请查看控制台中的待维护部分以了解操作系统更新。有关更多信息,请参阅使用操作系统更新下的控制台部分。
在应用日期之后,Amazon RDS 会在后续维护时段中自动将数据库实例的操作系统升级到最新版本。为避免自动升级,我们建议您安排在应用日期之前进行更新。