维护数据库实例
Amazon RDS 会定期对 Amazon RDS 资源执行维护。
数据库实例维护更新概述
维护通常涉及对数据库实例中以下资源的更新:
-
底层硬件
-
底层操作系统(OS)
-
数据库引擎版本
针对操作系统的更新最常见的原因是安全问题。我们建议您尽快进行更新。有关操作系统更新的更多信息,请参阅应用数据库实例的更新。
维护更新期间的离线资源
一些维护项目要求 Amazon RDS 使您的数据库实例脱机一小段时间。要求资源脱机的维护项目包括必需的操作系统或数据库修补。仅对与安全性和实例可靠性相关的修补程序自动安排必需的修补。此类补丁很少发生,通常每隔几个月发生一次。它所需要的维护时间很少超过维护窗口的一小部分。
推迟的数据库实例修改
您已选择不立即应用的延迟的数据库实例修改会在维护时段内应用。例如,您可以选择在维护时段内更改数据库实例类或参数组。您使用等待重启设置指定的此类修改不会显示在等待维护列表中。有关修改 数据库实例的信息,请参阅修改 Amazon RDS 数据库实例。
要查看下一个维护时段待处理的修改,请使用 describe-db-instancesPendingModifiedValues
字段。
DescribePendingMaintenanceActions API 的最终一致性
Amazon RDS DescribePendingMaintenanceActions
API 采用最终一致性模型。这意味着,DescribePendingMaintenanceActions
命令的结果可能不会立即对所有后续 RDS 命令可见。当您使用之前的 API 命令后立即使用 DescribePendingMaintenanceActions
时,请记住这一点。
最终一致性可能会影响您管理维护更新的方式。例如,如果您运行 ApplyPendingMaintenanceActions
命令来更新数据库实例的数据库引擎版本,则该版本最终将对 DescribePendingMaintenanceActions
可见。在这种情况下,DescribePendingMaintenanceActions
可能表明维护操作未被应用,即使已应用也是如此。
要管理最终一致性,您可以执行以下操作:
-
请先确认数据库实例的状态,然后运行命令来对其进行修改。使用指数回退算法运行相应的
DescribePendingMaintenanceActions
命令,来确保有足够的时间让前一个命令传播遍整个系统。为此,请重复运行DescribePendingMaintenanceActions
命令,以几秒钟的等待时间开始,然后逐渐增加达到五分钟的等待时间。 -
增加后续命令之间的等待时间,即使
DescribePendingMaintenanceActions
命令返回准确的响应,也是如此。应用指数回退算法,以几秒钟的等待时间开始,然后逐渐增加达到大约五分钟的等待时间。
查看待处理维护更新
通过使用 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 通过执行以下步骤来应用操作系统更新:
-
执行备用实例的维护。
-
将备用实例提升为主实例。
-
执行原主实例的维护,该实例将变成新的备用实例。
如果您在多可用区部署中为数据库实例升级数据库引擎,Amazon RDS 会同时修改主数据库实例和辅助数据库实例。在这种情况下,多可用区部署中的主数据库实例和辅助数据库实例在升级过程中都不可用。此操作会导致停机,直至升级完成。停机持续时间因数据库实例的大小而异。
如果需要应用底层操作系统补丁,则需要短暂的多可用区故障转移,才能将补丁应用于主数据库实例。这种故障转移通常持续不到一分钟。
如果您的数据库实例运行 RDS for MySQL、RDS for PostgreSQL 或 RDS for MariaDB,您可以使用蓝绿部署,最大限度地减少升级所需的停机时间。有关更多信息,请参阅 使用 Amazon RDS 蓝绿部署进行数据库更新。如果您在多可用区部署中升级 RDS for SQL Server 或 RDS Custom for SQL Server 数据库实例,则 Amazon RDS 会执行滚动升级,因此只会在故障转移期间出现中断。有关更多信息,请参阅 多可用区和内存优化注意事项。
如果您的数据库实例在多可用区部署中运行 RDS for SQL Server,则可以使用以下方法之一对底层操作系统应用更新:
将数据库实例类修改为不同的大小,然后将其修改回原始大小。
纵向扩展数据库实例的大小,然后缩减到原始大小。
将数据库实例从多可用区修改为单可用区,停止和启动数据库实例,然后将实例更改回多可用区。
有关多可用区部署的更多信息,请参阅配置和管理多可用区部署。
Amazon RDS 维护时段
维护时段是每周时间间隔,在此期间会应用任何系统更改。每个数据库实例都具有每周维护时段。可以利用维护时段来控制何时进行修改和软件修补。有关调整维护时段的更多信息,请参阅调整首选数据库实例维护时段。
在应用维护时,RDS 会使用您的数据库实例上的一些资源。您可观察到对性能的影响甚微。对于数据库实例来说,在极少数情况下,可能需要多可用区故障转移才能完成维护更新。
如果在给定的周内安排了维护事件,则将在您确定的 30 分钟维护时段内启动维护。大部分维护事件也将在 30 分钟的维护时段内完成,但较大的维护事件可能需要 30 分钟以上的时间才能完成。数据库实例停止后,维护时段将暂停。
这个 30 分钟维护时段是随机从每个地区的 8 小时时间段中选择出来的。如果在创建数据库实例时未指定维护时段,则 RDS 在该星期内随机选择的某一天中分配 30 分钟的维护时段。
在下面可以找到为每个区域分配默认维护时段的时间段。
区域名称 | 区域 | 时间段 |
---|---|---|
美国东部(弗吉尼亚州北部) | us-east-1 | 03:00–11:00 UTC |
美国东部(俄亥俄州) | us-east-2 | 03:00–11:00 UTC |
美国西部(加利福尼亚北部) | us-west-1 | 06:00–14:00 UTC |
美国西部(俄勒冈州) | us-west-2 | 06:00–14:00 UTC |
非洲(开普敦) | af-south-1 | 03:00–11:00 UTC |
亚太地区(香港) | 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-5 | 09:00–17: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 |
中国(宁夏) | 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 |