为什么我的 Amazon RDS 数据库实例发生重启、恢复或失效转移?
我想知道我的 Amazon Relational Database Service (Amazon RDS) 数据库实例发生重启、恢复或失效转移的根本原因。
简短描述
在以下条件下,Amazon RDS 数据库实例会自动执行重启:
- 由于性能瓶颈和资源争用,会出现主可用区中的可用性丢失和工作负载过多。
- 主实例存在底层基础设施问题,例如丢失与主实例的网络连接、主实例上的计算单位问题或存储问题。
- 数据库实例类类型作为数据库实例垂直扩缩活动的一部分进行更改。
- 在特定的维护时段内,数据库实例的底层主机正在进行操作系统修补。有关更多信息,请参阅维护数据库实例和升级数据库实例引擎版本。
- 您使用了 Reboot(重启)或 Reboot with failover(通过失效转移重启)选项对数据库实例发起手动重启。
当数据库实例显示潜在问题且无法响应 Amazon RDS 运行状况检查时,Amazon RDS 会自动执行以下操作之一:
- 对于单可用区部署,Amazon RDS 会启动单可用区恢复。
- 对于多可用区部署,Amazon RDS 会为多可用区部署启动多可用区失效转移。
然后,Amazon RDS 会重启数据库实例,这样您就可以在没有管理干预的情况下尽快恢复数据库操作。
解决方法
要确定中断的原因,请检查数据库实例的以下日志和指标。另外,请务必遵循最佳实践。
Amazon RDS 事件消息
要确定实例意外中断的根本原因,请查看过去 24 小时内的所有 Amazon RDS 事件。默认情况下,Amazon RDS 以 UTC/GMT 时间注册所有事件。要将事件存储更长时间,请将 Amazon RDS 事件发送到 Amazon CloudWatch Events。当您的实例重启时,您会在 Amazon RDS 事件通知中看到以下消息之一。
客户修改了 RDS 实例
此 RDS 事件消息表示 RDS 实例修改启动了失效转移。
对数据库实例类应用修改
此 RDS 事件消息表示数据库实例类类型根据部署类型发生变化:
- 在此扩缩操作期间,单可用区部署在几分钟内不可用。
- 在实例进行失效转移所需的时间内,多可用区部署不可用。此持续时间通常约为 60 秒。之所以出现这种延迟,是因为备用数据库在新调整大小后的数据库发生失效转移之前进行了升级。然后,您的数据库重启,引擎执行恢复操作以确保您的数据库保持一致状态。
用户请求对数据库实例进行失效转移
此消息表示用户使用了 Reboot(重启)或 Reboot with failover(通过失效转移重启)选项对数据库实例发起手动重启。
RDS 多可用区实例的主主机运行状况不佳
这个原因表明,短暂的底层硬件问题导致与主实例的通信中断。此问题可能会导致实例运行状况不佳,因为 RDS 监控系统无法与 RDS 实例通信以执行运行状况检查。
由于网络连接中断,RDS 多可用区实例的主主机无法访问
此原因表明,影响多可用区部署的主主机的短暂网络问题导致了多可用区失效转移和数据库实例重启。内部监控系统检测到此问题并启动了失效转移。
RDS 多可用区主实例繁忙且无响应、多可用区实例激活已开始或多可用区实例激活已完成
事件日志在以下情况下显示这些消息:
- 主数据库实例无响应。
- 过多内存消耗导致数据库中的内存资源紧张,导致 RDS 监控系统无法联系底层主机。作为一项主动措施,监控系统会重启数据库。
- 数据库实例在底层主机上遇到了间歇性的网络问题。
- 该实例经历了数据库负载。在这种情况下,您可能会注意到 CloudWatch 指标达到峰值:CPUUtilization、DatabaseConnections、IOPS 指标和吞吐量详细信息。您可能还会注意到 Freeablememory 耗尽。
数据库实例已修补
此消息表示数据库实例在维护时段内进行了次要版本升级。之所以出现此消息,是因为实例的次要版本自动升级设置已启用。
CloudWatch 指标
要检查数据库负载问题是否导致了中断,请查看 Amazon RDS 实例的 CloudWatch 指标。以下关键指标达到峰值可能表明 RDS 实例的可用性和运行状况存在问题:
- DatabaseConnections
- CPUUtilization
- FreeableMemory
- WriteIOPS
- ReadIOPS
- ReadThroughput
- WriteThroughput
- DiskQueueDepth
增强监控
Amazon RDS 将增强监控中的指标传送到您的 Amazon CloudWatch Logs 账户中。此功能为运行数据库实例的操作系统提供实时指标。您可以在控制台上查看数据库实例的所有系统指标和进程信息。
数据库洞察
CloudWatch Database Insights 控制面板包含与您的数据库性能相关的信息,您可以使用这些信息来分析和排查性能问题。使用 Database Insights 控制面板分析查询的统计信息。最佳做法是使用此控制面板上的信息来调整查询性能并优化工作负载。有关详细信息,请参阅查看数据库实例控制面板以获取 CloudWatch Database Insights。
**注意:**为了减少问题,最佳做法是与数据库管理员合作进行这些更改。
RDS 数据库日志
要对数据库实例的中断原因进行故障排除,您可以使用 Amazon Aurora 和 RDS 控制台或 Amazon RDS API 操作查看、下载或监控数据库日志文件。您还可以查询加载到数据库表中的数据库日志文件。有关详细信息,请参阅监控 Amazon RDS 日志文件。
处理 RDS 实例中断时,请记住以下最佳实践:
- 要减少中断期间的停机时间,请为您的实例开启多可用区部署。
- 调整数据库实例维护时段。如果 RDS 需要应用系统更改,数据库实例仅在进行必要更改所需的最短时间内不可用。如果您不希望实例进行次要版本自动升级,请关闭此选项。
- 为您的数据库分配足够的资源来运行查询。对于 Amazon RDS,分配的资源数量取决于实例类型。此外,特定查询(例如存储过程)可能会占用前所未有的大量内存。如果实例由于缺乏资源而频繁地重启,请纵向扩展您的数据库实例类,以满足您的应用程序需求。
- 为避免实例节流,请在表示 RDS 实例可用性和运行状况的关键 Amazon RDS 指标上配置 Amazon CloudWatch 警报。例如,您可以在 FreeableMemory 指标上设置 CloudWatch 警报,这样当可用内存已经使用了 95% 时,您就会收到通知。有关详细信息,请参阅如何筛选增强型监控 CloudWatch Logs,以便为 Amazon RDS 生成自动自定义指标?
- 要让 Amazon RDS 在 RDS 实例发生失效转移时通知您,请订阅 Amazon RDS 事件通知。
- 要优化数据库性能,请确保您的查询已针对 PostgreSQL 和 MySQL 进行适当的优化。否则,您可能会遇到性能问题和等待时间延长。
- 要对 CPU、内存或其他资源紧缩方面的负载进行故障排除,请参阅如何排查 Amazon RDS for PostgreSQL 或 Amazon Aurora PostgreSQL 兼容版实例中 CPU 使用率高的问题?另请参阅如何排查并解决 Amazon RDS for MySQL 或 Aurora MySQL 兼容版数据库实例上的高 CPU 使用率问题?
相关信息
哪些因素会影响 Amazon RDS 中的停机时间或数据库性能?
如何在必要的 Amazon RDS 维护期间最大限度减少停机时间?
如何检查我的 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 数据库实例正在运行的查询并诊断资源消耗问题?
相关内容
AWS 官方已更新 1 年前