您可在下列内容中找到某些常见RDS Proxy 问题的故障诊断想法,以及RDS Proxy 的CloudWatch 日志的相关资讯。
在RDS Proxy 日志中,每个项目均会以关联的代理端点名称作为前缀。此名称可以是您针对使用者定义端点所指定的名称。也可以是使用预设代理端点之读取/写入请求的特殊名称default
。如需代理端点的详细资讯,请参阅使用Amazon RDS Proxy 端点.
验证代理的连线能力
您可以使用下列命令确认连线机制的所有元件都可以与其他元件通讯。
使用describe-db-proxies命令检查代理本身。也请使用describe-db-proxy-target-groups命令检查相关联的目标群组。检查目标的详细资讯是否符合您打算与代理相关联的RDS 资料库执行个体或Aurora 资料库丛集。使用如下命令。
aws rds describe-db-proxies --db-proxy-name $DB_PROXY_NAME aws rds describe-db-proxy-target-groups --db-proxy-name $DB_PROXY_NAME
若要确认代理可连线至基础资料库,请使用describe-db-proxy-targets命令检查目标群组中指定的目标。使用如下命令。
aws rds describe-db-proxy-targets --db-proxy-name $DB_PROXY_NAME
describe-db-proxy-targets命令的输出包含 TargetHealth
栏位。您可以检查 State
内的Reason
、Description
和 TargetHealth
栏位,以检查代理是否能与基础资料库执行个体进行通讯。
-
State
的AVAILABLE
值表示代理可连线至资料库执行个体。 -
State
的UNAVAILABLE
值表示暂时或永久的连线问题。在这种情况下,请检查Reason
和Description
栏位。例如,如果Reason
具有PENDING_PROXY_CAPACITY
的值,请在代理完成其扩展操作后尝试再次连线。如果Reason
具有UNREACHABLE
、CONNECTION_FAILED
或AUTH_FAILURE
的值,请使用来自Description
栏位的解说,协助您诊断此问题。 -
State
栏位在变更为REGISTERING
或AVAILABLE
前,可能短暂具有UNAVAILABLE
的值。
如果下列Netcat 命令( nc
) 成功,您可以从EC2 执行个体或登入的其他系统存取代理端点。如果您与代理和关联的资料库不在同一VPC 中,则此命令会回报失败。您可能可以直接登入资料库,而不需要在同一个VPC 中。然而除非您位于同一个VPC 中,否则无法登入代理。
nc -zx MySQL_proxy_endpoint
3306 nc -zx PostgreSQL_proxy_endpoint
5432
您可以使用下列命令确定您的EC2 执行个体具有需要的属性。特别是,EC2 执行个体的VPC 必须与代理连线的RDS 资料库执行个体或Aurora 资料库丛集的VPC 相同。
aws ec2 describe-instances --instance-ids your_ec2_instance_id
检查用于代理的Secrets Manager 秘密。
aws secretsmanager list-secrets aws secretsmanager get-secret-value --secret-id your_secret_id
请确定 SecretString
所显示的 get-secret-value
栏位已编码为包含 username
和 password
栏位的JSON 字串。下列范例显示 SecretString
栏位的格式。
{ "ARN": "some_arn
", "Name": "some_name
", "VersionId": "some_version_id", "SecretString": '{"username":"some_username","password":"some_password
"}', "VersionStages": [ "some_stage
" ], "CreatedDate": some_timestamp
}
常见问题与解决方案
如需您在使用RDS Proxy 时可能遇到的某些常见问题的可能原因和解决方案,请参阅下列内容。
建立新代理或连线至代理时,可能会遇到下列问题。
错误 | 原因或因应措施 |
---|---|
| 选取现有的IAM 角色,而不是选择建立新的IAM 角色。 |
连线到MySQL 代理时可能会遇到下列问题。
错误 | 原因或因应措施 |
---|---|
ERROR 1040 (HY000): Connections rate limit exceeded ( | 从用户端到代理的连线要求速率已超过限制。 |
ERROR 1040 (HY000): IAM authentication rate limit exceeded | 从用户端到代理器的IAM 身分验证同时请求数目已超过限制。 |
ERROR 1040 (HY000): Number simultaneous connections exceeded ( | 从用户端到代理的同时连线要求数目超过限制。 |
| 一些可能的原因包括:
|
ERROR 1105 (HY000): Unknown error | 发生未知的错误。 |
ERROR 1231 (42000): Variable ''character_set_client'' can't be set to the value of | 为 |
ERROR 3159 (HY000): This RDS Proxy requires TLS connections. | 您已在代理中启用需要Transport Layer Security设定,但您的连线已在MySQL 用户端中包含参数
|
ERROR 2026 (HY000): SSL connection error: Internal Server | TLS 与代理的交握失败。一些可能的原因包括:
|
ERROR 9501 (HY000): Timed-out waiting to acquire database connection | 代理等候取得资料库连线逾时。一些可能的原因包括:
|
连线到PostgreSQL 代理时可能会遇到下列问题。
错误 | 原因 | 解决方案 |
---|---|---|
| 使用者尝试使用PostgreSQL 用户端中的 | 使用者需要使用PostgreSQL 用户端中 |
| 使用者启用需要Transport Layer Security选项,但尝试使用PostgreSQL 用户端中的 | 若要修正此错误,请执行下列其中一项操作:
|
| 此错误可能由下列原因造成:
| 若要修正此错误,请执行下列动作:
|
| 这个角色没有Secrets Manager 秘密 | 新增此角色的Secrets Manager 秘密。 |
| 用来连线到代理伺服器的资料库用户端正在使用代理伺服器目前不支援的验证机制,例如SCRAM-SHA-256。 | 如果您未使用IAM 身分验证,请仅使用MD5 密码身分验证。 |
| 尝试建立连线时,用来连线至Proxy 的资料库用户端并未传送使用者名称。 | 使用您选择的PostgreSQL 用户端设定与代理连线时,请务必定义使用者名称。 |
| 用于连线到代理的PostgreSQL 用户端使用的通讯协定早于3.0。 | 使用支援3.0 讯息通讯协定的较新PostgreSQL 用户端。如果您使用的是PostgreSQL |
| 用来连线至Proxy 的PostgreSQL 用户端正在尝试使用串流复写模式,而RDS Proxy 目前不支援这种模式。 | 关闭用于连线的PostgreSQL 用户端中的串流复写模式。 |
| 透过启动讯息,用来连线至Proxy 的PostgreSQL 用户端正在要求RDS Proxy 目前不支援的选项。 | 在用于连线的PostgreSQL 用户端中,关闭上述讯息中显示为不支援的选项。 |
| 从用户端到代理器的IAM 身分验证同时请求数目已超过限制。 | 降低使用PostgreSQL 用户端的IAM 验证建立连线的速率。 |
| 从用户端到代理的同时连线要求数目超过限制。 | 减少从PostgreSQL 用户端到此RDS Proxy 的作用中连线数目。 |
| 从用户端到代理的连线要求速率已超过限制。 | 降低从PostgreSQL 用户端建立连线的速率。 |
| 此角色的密码与Secrets Manager 密码不符。 | 在Secrets Manager 检查此角色的密码,以查看密码是否与PostgreSQL 用户端中使用的密码相同。 |
| 用于IAM 验证的IAM 符记发生问题。 | 产生一个新的身分验证符记,并在新的连线中加以使用。 |
| 用户端尝试使用IAM 验证进行连线,但未启用SSL。 | 在用户端中启用SSL。 |
| 发生未知的错误。 | 联络AWS Support,以便调查问题。 |
| 代理等候取得资料库连线逾时。一些可能的原因包括:
| 可能的解决方案如下:
|
| 从Proxy 建立的资料库连线传回错误。 | 解决方案取决于特定的资料库错误。其中一个范例为 |