AWS MySQL RDS 实例变得无响应并自动重启
AWS MySQL RDS instance becomes unresponsive and getting restarted automatically
我们有一个 AWS MySQL RDS 实例,大小约为 1.7T。有时会无反应,无法进行任何操作
- CPU 利用率、写入 IOPS、读取 IOPS、队列深度、写入吞吐量、写入延迟和读取延迟降为零。
- 连接数堆积起来。
- "Show engine innodb status"挂起
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;
一段时间后,实例会自动重启并出现以下错误。
MySQL 重新启动以解决 MySQL 引起的日志备份问题。请注意,作为此解决方案的一部分,将在 MySQL 完成重启后执行数据库快照。
可能是什么问题?这种情况经常发生。有时,令我们惊讶的是,这种情况也会发生在非高峰时段。
检查你的数据库维护 window 时间我的意思是你的计划维护发生的时间,并注意这个问题发生的时间是定期发生还是随机发生。
同时检查 mysql 错误日志和慢速查询日志。
如果可能,请在此处粘贴疑似问题
我遇到了同样的问题并向 AWS Support 提出了问题。得到如下解释:
RDS 监控服务发现有关备份数据库二进制日志的问题,这对时间点还原 (PITR) 功能至关重要。为了缓解此问题并避免数据损坏,RDS 监控重新启动了 RDS 实例,因此自动触发了重新启动。为了确保没有数据丢失,它拍摄了数据库实例的快照。
尽管 RDS 实例是多可用区,但由于以下原因,它没有进行故障转移:
多可用区有 2 个条件:
1- 单机体验,这意味着客户即使在故障转移后也总能找到他的数据。
2- 比单个 AZ 更高的可用性。
因此,当 AWS 监控服务做出故障转移到备用实例的决定时,这两个条件都必须存在,但在您的情况下,AWS 监控服务注意到一些可能导致故障转移后数据丢失的风险,这就是它采取的原因决定重新启动而不是故障转移。
希望这对您有所帮助。虽然这在过去一周内发生在我身上 3 次。
我们可以通过将实例升级到 5.6.34 来解决这个问题。
我们有一个 AWS MySQL RDS 实例,大小约为 1.7T。有时会无反应,无法进行任何操作
- CPU 利用率、写入 IOPS、读取 IOPS、队列深度、写入吞吐量、写入延迟和读取延迟降为零。
- 连接数堆积起来。
- "Show engine innodb status"挂起
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;
一段时间后,实例会自动重启并出现以下错误。
MySQL 重新启动以解决 MySQL 引起的日志备份问题。请注意,作为此解决方案的一部分,将在 MySQL 完成重启后执行数据库快照。
可能是什么问题?这种情况经常发生。有时,令我们惊讶的是,这种情况也会发生在非高峰时段。
检查你的数据库维护 window 时间我的意思是你的计划维护发生的时间,并注意这个问题发生的时间是定期发生还是随机发生。
同时检查 mysql 错误日志和慢速查询日志。
如果可能,请在此处粘贴疑似问题
我遇到了同样的问题并向 AWS Support 提出了问题。得到如下解释:
RDS 监控服务发现有关备份数据库二进制日志的问题,这对时间点还原 (PITR) 功能至关重要。为了缓解此问题并避免数据损坏,RDS 监控重新启动了 RDS 实例,因此自动触发了重新启动。为了确保没有数据丢失,它拍摄了数据库实例的快照。
尽管 RDS 实例是多可用区,但由于以下原因,它没有进行故障转移:
多可用区有 2 个条件: 1- 单机体验,这意味着客户即使在故障转移后也总能找到他的数据。 2- 比单个 AZ 更高的可用性。
因此,当 AWS 监控服务做出故障转移到备用实例的决定时,这两个条件都必须存在,但在您的情况下,AWS 监控服务注意到一些可能导致故障转移后数据丢失的风险,这就是它采取的原因决定重新启动而不是故障转移。
希望这对您有所帮助。虽然这在过去一周内发生在我身上 3 次。
我们可以通过将实例升级到 5.6.34 来解决这个问题。