AWS MySQL RDS 实例变得无响应并自动重启

AWS MySQL RDS instance becomes unresponsive and getting restarted automatically

我们有一个 AWS MySQL RDS 实例,大小约为 1.7T。有时会无反应,无法进行任何操作

  1. CPU 利用率、写入 IOPS、读取 IOPS、队列深度、写入吞吐量、写入延迟和读取延迟降为零。
  2. 连接数堆积起来。
  3. "Show engine innodb status"挂起
  4. rdsadmin 的大量查询(每个大约 25 个)处于挂起状态。

    SELECT count(*) from mysql.rds_replication_status WHERE action = 'reset slave' and master_host is NULL and master_port is NULL GROUP BY action_timestamp,called_by_user,action,mysql_version,master_host,master_port ORDER BY action_timestamp LIMIT 1;
    
    SELECT NAME, VALUE FROM mysql.rds_configuration; 
    
  5. 一段时间后,实例会自动重启并出现以下错误。

    MySQL 重新启动以解决 MySQL 引起的日志备份问题。请注意,作为此解决方案的一部分,将在 MySQL 完成重启后执行数据库快照。

可能是什么问题?这种情况经常发生。有时,令我们惊讶的是,这种情况也会发生在非高峰时段。

检查你的数据库维护 window 时间我的意思是你的计划维护发生的时间,并注意这个问题发生的时间是定期发生还是随机发生。

同时检查 mysql 错误日志和慢速查询日志。

如果可能,请在此处粘贴疑似问题

我遇到了同样的问题并向 AWS Support 提出了问题。得到如下解释:


RDS 监控服务发现有关备份数据库二进制日志的问题,这对时间点还原 (PITR) 功能至关重要。为了缓解此问题并避免数据损坏,RDS 监控重新启动了 RDS 实例,因此自动触发了重新启动。为了确保没有数据丢失,它拍摄了数据库实例的快照。

尽管 RDS 实例是多可用区,但由于以下原因,它没有进行故障转移:

多可用区有 2 个条件: 1- 单机体验,这意味着客户即使在故障转移后也总能找到他的数据。 2- 比单个 AZ 更高的可用性。

因此,当 AWS 监控服务做出故障转移到备用实例的决定时,这两个条件都必须存在,但在您的情况下,AWS 监控服务注意到一些可能导致故障转移后数据丢失的风险,这就是它采取的原因决定重新启动而不是故障转移。


希望这对您有所帮助。虽然这在过去一周内发生在我身上 3 次。

我们可以通过将实例升级到 5.6.34 来解决这个问题。