AWS Aurora自动缩放会导致mysqld_stmt_execute的参数错误

时间:2019-07-09 06:46:15

标签: mysql amazon-web-services amazon-rds autoscaling amazon-rds-aurora

我们正在生产环境中运行AWS Aurora(无服务器RDS)。它必须在2个容量单位(4GB RAM)和8个容量单位(16GB RAM)之间缩放。

在过去的两个月中,我们的数据库从未自动缩放,它以最小容量单位运行。在过去的一周中,由于系统使用率的增加,自动缩放开始每隔几分钟触发一次。白天,它的容量在4到8个容量单位之间。

自上周以来,当我们的应用程序触发对数据库的SQL查询时,我们遇到的问题(不是每次都出现,而是每隔几分钟), mysqld_stmt_execute的参数不正确。读写操作都会发生此错误。

因此,我们怀疑可能是自动缩放的原因,因此我们对min(8)和max(8)保留了相同的容量单位,以避免缩放。因此,扩展没有发生,我们也没有再得到该错误。因此,我们确认该错误是由自动缩放引起的。实际上,自动缩放可以帮助我们降低成本,但不幸的是会导致错误。

我们不明白为什么在缩放过程中会发生此错误。有人可以解释为什么缩放会导致此问题以及如何避免这种情况吗?

还是与连接池问题有关?我也已经在连接池项目中提出了它。

https://github.com/brettwooldridge/HikariCP/issues/1407

1 个答案:

答案 0 :(得分:0)

这是缓存准备好的语句的问题。当配置新服务器以进行扩展时,并且在新服务器上触发了缓存的准备好的语句时,MySQL会抛出此错误。因此,我们禁用了预准备语句缓存,并且我们不再收到错误。

尽管有效,但我们无法缓存可能会导致性能下降的预准备语句。截至目前,还可以,因为我们没有注意到延迟。