AWS MySQL 连接经常超时

AWS MySQL connection frequently times out

我在 AWS (RDS) 中有一个 MySQL 数据库,我通过以下命令从命令行连接到它:

mysql -u _usernme_ -p_mypassword_ -h  _aws_mysql_host_ _dbname_

它连接正常,问题是,如果它保持空闲 1-2 分钟,连接就会断开,后续命令就会挂起。我必须终止进程并启动一个新进程。

我需要做哪些配置更改,在哪里更改,以便它永远保持活动状态,就像 localhost,直到我明确终止连接?

您可以通过以下方式找到相关的超时值:

SHOW VARIABLES LIKE '%_timeout';

您可能需要检查以确保 wait_timeout and interactive_timeout 设置正确。两者都默认为 28800(即 8 小时):

SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;

当尝试从本地计算机连接到 RDS 并且安全组只允许从 VPC 内连接时会发生此错误。

要解决此问题,请转到您的 RDS 安全组并允许特定 IP 或任何人都可以使用密码和安全规则中的 user_name 进行连接。

下面可以连接任何人

尽管尝试连接 RDS 并跟踪问题并不好

转到 RDS 实例

select RDS 实例并检查安全组的描述

select安全组

select 入站规则

编辑安全规则

允许您的 IP 访问它或公开访问它

或者如果你认为这个错误发生在 RDS 中,你可以简单地查看 RDS 的日志

如果上述设置看起来不错,那么 AWS 会说

从 Amazon EC2 外部连接 — 防火墙超时问题

Example issue:

当 运行 长查询(例如 COPY 命令)时,您的客户端与数据库的连接似乎挂起或超时。在这种情况下,您可能会观察到 Amazon Redshift 控制台显示查询已完成,但客户端工具本身似乎仍然是 运行 查询。查询结果可能丢失或不完整,具体取决于连接停止的时间。

当您从 Amazon EC2 实例以外的计算机连接到 Amazon Redshift 时会发生这种情况,并且空闲连接在一段时间不活动后被中间网络组件(例如防火墙)终止。当您从虚拟专用网络 (VPN) 或您的本地网络登录时,这种行为很典型。

为避免这些超时,我们建议进行以下更改:

  • 增加处理 TCP/IP 超时的客户端系统值。你 应该在您用来连接的计算机上进行这些更改 你的集群。应为您的客户调整超时期限 和网络。请参阅更改 TCP/IP 超时设置。
  • 可选地,在 DSN 级别设置 keep-alive 行为。请参阅更改 DSN 超时设置。

要进行这些更改,请检查 link

AWS:connecting-firewall-guidance.html

让我们查看下面的屏幕截图,了解修复的详细信息。

连接时请确保您的数据库的入站和出站规则都MYSQL/AURORA到任何地方和自定义 TCP