为什么 Amazon RDS 数据库实例会重启、恢复或失效转移?
我想知道 Amazon Relational Database Service (Amazon RDS) 数据库实例发生重启、恢复或失效转移的根本原因。
简短描述
在以下情况下,Amazon RDS 数据库实例会自动执行重启:
- 由于性能瓶颈和资源争用,会出现主可用区中的可用性丢失或工作负载过多。
- 主实例存在底层架构问题,例如丢失与主实例的网络连接、主实例上的计算单位问题或存储问题。
- 数据库实例类的类型将作为数据库实例垂直扩展活动的一部分进行更改。
- RDS 数据库实例的底层主机会在特定的维护时段期间进行软件修补。有关更多信息,请参阅维护数据库实例和升级数据库实例引擎版本。
- 您使用了 Reboot(重启)或 Reboot with failover(通过失效转移重启)选项启动了数据库实例手动重启。
当数据库实例显示潜在问题且未能响应 RDS 运行状况检查时,RDS 会自动为单可用区部署启动单可用区恢复,为多可用区部署启动多可用区失效转移。然后,数据库实例会重新启动,以便尽快恢复数据库操作而无需管理干预。
解决方法
要确定中断原因,请检查 RDS 数据库实例的以下日志和指标。
Amazon RDS 事件
要确定实例意外中断的根本原因,请查看过去 24 小时内的所有 Amazon RDS 事件。默认情况下,所有事件都在 UTC/GMT 时间内注册。要更长时间存储事件,请将 Amazon RDS 事件发送到 Amazon CloudWatch Events。有关更多信息,请参阅创建对 Amazon RDS 事件触发的规则。当您的实例重启时,您会在 RDS 事件通知中看到以下消息之一:
-
**客户修改了 RDS 实例:**此 RDS 事件消息表示失效转移是由 RDS 实例修改启动的。
-
**应用对数据库实例类的修改:**此 RDS 事件消息表示数据库实例类的类型已更改。
- 在此扩展操作期间,单可用区部署会出现在几分钟内不可用的情况。
- 在实例进行失效转移期间,多可用区部署不可用。此持续时间通常约为 60 秒。这是因为备用数据库在调整大小后的数据库发生失效转移之前进行了升级。然后,数据库重新启动,引擎执行恢复,以确保数据库保持一致状态。
-
用户请求对数据库实例进行失效转移:此消息表示您使用重启或通过失效转移重启选项启动了数据库实例手动重启。
-
**RDS 多可用区实例的主机运行不正常:**此原因表示存在短暂的底层硬件问题,导致与主实例的通信丢失。此问题可能导致实例运行状况不正常,因为 RDS 监控系统无法与 RDS 实例通信以执行运行状况检查。
-
**由于网络连接丢失,RDS 多可用区实例的主机无法访问:**此原因表示多可用区失效转移和数据库实例重启是由影响多可用区部署主机的暂时性网络问题引起的。内部监控系统检测到此问题并启动了失效转移。
-
**RDS 多可用区主实例繁忙且无响应,多可用区实例激活已启动或多可用区实例激活已完成:**事件日志在以下情况中显示这些消息:
- 主数据库实例没有响应。
- 过多内存消耗导致数据库中的内存资源紧张,从而使 RDS 监控系统无法与底层主机联系。因此,作为一项主动措施,监控系统重新启动数据库。
- 数据库实例在底层主机上遇到间歇性的网络问题。
- 该实例经历了数据库负载。在这种情况下,您可能注意到以下 CloudWatch 指标出现激增:CPUUtilization、DatabaseConnections、IOPS metrics(IOPS 指标)和Throughput details(吞吐量详细信息)。您还可能注意到 Freeablememory 耗尽。
-
数据库实例已修补:此消息表示数据库实例在维护时段期间进行了次要版本升级,因为实例上已启用次要版本自动升级设置。
CloudWatch 指标
查看 Amazon RDS 实例的 CloudWatch 指标,以检查数据库负载问题是否引发了中断。有关更多信息,请参阅使用 Amazon CloudWatch 监控 Amazon RDS 指标。检查以下关键指标(这些指标表示 RDS 实例的可用性和运行状况)的峰值:
- DatabaseConnections
- CPUUtilization
- FreeableMemory
- WriteIOPS
- ReadIOPS
- ReadThroughput
- WriteThroughput
- DiskQueueDepth
增强监控
Amazon RDS 将增强监控中的指标传输到您的 Amazon CloudWatch Logs 账户中。这将实时提供关于运行数据库实例的操作系统的指标。您可以在控制台上查看数据库实例的所有系统指标和进程信息。
您可以将增强监控功能的粒度设置为 1、5、10、15、30 或 60。
要为 Amazon RDS 实例启用增强监控,请参阅设置和启用增强监控。
Performance Insights
Performance Insights 控制面板包含与数据库性能相关的信息,可帮助您分析性能问题并对这些问题进行故障排除。您还可以确定在数据库实例上消耗过多资源的查询和等待事件。Performance Insights 采集数据库级别的数据,并在 Performance Insights 控制面板中显示数据。有关更多信息,请参阅使用 Amazon RDS 上的 Performance Insights 监控数据库负载。当应用程序端出现资源消耗增加时,请使用 Performance Insights 控制面板中的支持 SQL ID 并将其与相应的查询进行匹配。最佳实践是在 DBA 的指导下,使用这些信息来调整查询性能并优化工作负载:
- 打开 Amazon RDS console(Amazon RDS 控制台)。
- 在导航窗格中,选择 Performance Insights(性能详情)。
- 在 Performance Insights 页面上,选择您的数据库实例。您可以查看此数据库实例的 Performance Insights 控制面板。
- 选择发生问题的时间范围。
- 选择 Top SQL(首要 SQL)选项卡。
- 选择 settings(设置)图标,然后打开 Support ID(支持 ID)。
- 选择 Save(保存)。
RDS 数据库日志
要对 Amazon RDS 数据库实例的中断原因进行故障排除,您可以使用 Amazon RDS 控制台或 Amazon RDS API 操作查看、下载或监控数据库日志文件。您还可以查询加载到数据库表中的数据库日志文件。有关更多信息,请参阅监控 Amazon RDS 日志文件。
处理 RDS 实例中断时,请记住以下最佳实践:
- 在您的实例上启用多可用区部署,以减少中断期间的停机时间。借助多可用区部署,RDS 会自动在不同可用区或两个可读备用实例中预置和维护一个同步备用副本。有关更多信息,请参阅 Amazon RDS Multi-AZ 定价。
- 根据您的首选项调整数据库实例维护时段。仅在应用系统更改(例如数据库实例类更改)并需要中断时,数据库实例才会在此期间不可用,并且仅在进行必要更改所需的最短时间内不可用。有关更多信息,请参阅维护数据库实例。如果您不想要实例自动进行次要版本升级,则可以关闭此选项。有关更多信息,请参阅自动升级次要引擎版本。
- 确保为数据库分配了足够的资源来运行查询。使用 Amazon RDS 时,分配的资源量取决于实例类型。此外,某些查询(例如存储的过程)可能会占用无限量的内存。因此,如果实例由于资源不足而频繁重启,则可以考虑扩展数据库实例类,以满足应用程序不断增长的需求。
- 为了避免实例节流,请对表示 RDS 实例的可用性和运行状况的关键指标配置 Amazon CloudWatch 警报。例如,您可以对 FreeableMemory 指标设置 CloudWatch 警报,以便在可用内存达到 95% 时收到通知。最佳实践是保持至少 5% 的可用实例内存。有关更多信息,请参阅如何筛选增强监控 CloudWatch 日志以为 Amazon RDS 生成自动执行的自定义指标?
- 要在 RDS 实例发生失效转移时随时收到通知,请订阅 Amazon RDS 事件通知。有关更多信息,请参阅如何创建 Amazon RDS 事件订阅?
- 要优化数据库性能,请确保正确调整了查询。否则,您可能会遇到性能问题并延长等待时间。
- 要对 CPU、内存或任何其他资源紧张方面的任何负载进行故障排除,请参阅如何对 Amazon RDS 或 Amazon Aurora PostgreSQL 的 CPU 利用率较高问题进行故障排除?
相关信息
哪些因素会影响 Amazon RDS 中的停机时间或数据库性能?
如何在所需的 Amazon RDS 维护期间最大程度地缩短停机时间?
如何检查 Amazon RDS 或 Amazon Aurora PostgreSQL 兼容版数据库实例正在运行的查询并诊断资源消耗问题?
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 个月前
- AWS 官方已更新 1 年前