rds proxy 故障诊断

您可在下列内容中找到某些常见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 内的ReasonDescription和 TargetHealth 栏位,以检查代理是否能与基础资料库执行个体进行通讯。

  • State的 AVAILABLE 值表示代理可连线至资料库执行个体。

  • State的 UNAVAILABLE 值表示暂时或永久的连线问题。在这种情况下,请检查 Reason 和 Description 栏位。例如,如果 Reason 具有 PENDING_PROXY_CAPACITY 的值,请在代理完成其扩展操作后尝试再次连线。如果 Reason 具有UNREACHABLECONNECTION_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 时可能遇到的某些常见问题的可能原因和解决方案,请参阅下列内容。

建立新代理或连线至代理时,可能会遇到下列问题。

错误原因或因应措施

403: The security token included in the request is invalid

选取现有的IAM 角色,而不是选择建立新的IAM 角色。

连线到MySQL 代理时可能会遇到下列问题。

错误原因或因应措施
ERROR 1040 (HY000): Connections rate limit exceeded (limit_value)从用户端到代理的连线要求速率已超过限制。
ERROR 1040 (HY000): IAM authentication rate limit exceeded从用户端到代理器的IAM 身分验证同时请求数目已超过限制。
ERROR 1040 (HY000): Number simultaneous connections exceeded (limit_value)从用户端到代理的同时连线要求数目超过限制。

ERROR 1045 (28000): Access denied for user 'DB_USER'@'%' (using password: YES)

一些可能的原因包括:

  • 代理使用的Secrets Manager 私密不符合现有资料库使用者的使用者名称和密码。更新Secrets Manager 私密中的登入资料,或确认资料库使用者存在,且具有与私密中相同的密码。

ERROR 1105 (HY000): Unknown error发生未知的错误。
ERROR 1231 (42000): Variable ''character_set_client'' can't be set to the value of value

为 character_set_client 参数设定的值无效。例如,值 ucs2 是无效的,因为它可能会让MySQL 伺服器当机。

ERROR 3159 (HY000): This RDS Proxy requires TLS connections.

您已在代理中启用需要Transport Layer Security设定,但您的连线已在MySQL 用户端中包含参数ssl-mode=DISABLED。执行下列任何一项:

  • 为代理停用需要Transport Layer Security设定。

  • 使用MySQL 用户端中 ssl-mode=REQUIRED 的最小设定来连线至资料库。

ERROR 2026 (HY000): SSL connection error: Internal Server Error

TLS 与代理的交握失败。一些可能的原因包括:

  • SSL 是必要的,但伺服器不支援它。

  • 发生内部伺服器错误。

  • 发生错误的交握。

ERROR 9501 (HY000): Timed-out waiting to acquire database connection

代理等候取得资料库连线逾时。一些可能的原因包括:

  • 代理无法建立资料库连线,因为已达到最大连线数

  • 代理无法建立资料库连线,因为资料库无法使用。

连线到PostgreSQL 代理时可能会遇到下列问题。

错误原因解决方案

IAM authentication is allowed only with SSL connections.

使用者尝试使用PostgreSQL 用户端中的 sslmode=disable 设定,透过IAM 身分验证连线至资料库。

使用者需要使用PostgreSQL 用户端中 sslmode=require 的最小设定连接到资料库。如需详细资讯,请参阅PostgreSQL SSL 支援文件。

This RDS Proxy requires TLS connections.

使用者启用需要Transport Layer Security选项,但尝试使用PostgreSQL 用户端中的 sslmode=disable 连线。

若要修正此错误,请执行下列其中一项操作:

  • 停用代理的需要Transport Layer Security选项。

  • 使用PostgreSQL 用户端中 sslmode=allow 的最小设定连线至资料库。

IAM authentication failed for user user_name. Check the IAM token for this user and try again.

此错误可能由下列原因造成:

  • 用户端提供了不正确的IAM 使用者名称。

  • 用户端为使用者提供了不正确的IAM 授权字符。

  • 用户端使用的IAM 政策没有必要许可。

  • 用户端为使用者提供了过期的IAM 授权字符。

若要修正此错误,请执行下列动作:

  1. 确认提供的IAM 使用者存在。

  2. 确认IAM 授权字符属于所提供的IAM 使用者。

  3. 确认IAM 政策具有适当的RDS 许可。

  4. 检查所使用之IAM 授权字符的有效性。

This RDS proxy has no credentials for the role role_name. Check the credentials for this role and try again.

这个角色没有Secrets Manager 秘密

新增此角色的Secrets Manager 秘密。

RDS supports only IAM or MD5 authentication.

用来连线到代理伺服器的资料库用户端正在使用代理伺服器目前不支援的验证机制,例如SCRAM-SHA-256。

如果您未使用IAM 身分验证,请仅使用MD5 密码身分验证。

A user name is missing from the connection startup packet. Provide a user name for this connection.

尝试建立连线时,用来连线至Proxy 的资料库用户端并未传送使用者名称。

使用您选择的PostgreSQL 用户端设定与代理连线时,请务必定义使用者名称。

Feature not supported: RDS Proxy supports only version 3.0 of the PostgreSQL messaging protocol.

用于连线到代理的PostgreSQL 用户端使用的通讯协定早于3.0。

使用支援3.0 讯息通讯协定的较新PostgreSQL 用户端。如果您使用的是PostgreSQL psqlCLI,请使用大于或等于7.4 的版本。

Feature not supported: RDS Proxy currently doesn't support streaming replication mode.

用来连线至Proxy 的PostgreSQL 用户端正在尝试使用串流复写模式,而RDS Proxy 目前不支援这种模式。

关闭用于连线的PostgreSQL 用户端中的串流复写模式。

Feature not supported: RDS Proxy currently doesn't support the option option_name.

透过启动讯息,用来连线至Proxy 的PostgreSQL 用户端正在要求RDS Proxy 目前不支援的选项。

在用于连线的PostgreSQL 用户端中,关闭上述讯息中显示为不支援的选项。

The IAM authentication failed because of too many competing requests.

从用户端到代理器的IAM 身分验证同时请求数目已超过限制。

降低使用PostgreSQL 用户端的IAM 验证建立连线的速率。

The maximum number of client connections to the proxy exceeded number_value.

从用户端到代理的同时连线要求数目超过限制。

减少从PostgreSQL 用户端到此RDS Proxy 的作用中连线数目。

Rate of connection to proxy exceeded number_value.

从用户端到代理的连线要求速率已超过限制。

降低从PostgreSQL 用户端建立连线的速率。

The password that was provided for the role role_name is wrong.

此角色的密码与Secrets Manager 密码不符。

在Secrets Manager 检查此角色的密码,以查看密码是否与PostgreSQL 用户端中使用的密码相同。

The IAM authentication failed for the role role_name. Check the IAM token for this role and try again.

用于IAM 验证的IAM 符记发生问题。

产生一个新的身分验证符记,并在新的连线中加以使用。

IAM is allowed only with SSL connections.

用户端尝试使用IAM 验证进行连线,但未启用SSL。

在用户端中启用SSL。

Unknown error.

发生未知的错误。

联络AWS Support,以便调查问题。

Timed-out waiting to acquire database connection.

代理等候取得资料库连线逾时。一些可能的原因包括:

  • 代理无法建立资料库连线,因为已达到最大连线数

  • 代理无法建立资料库连线,因为资料库无法使用。

可能的解决方案如下:

  • 检查RDS 资料库执行个体或Aurora 资料库丛集状态的目标,以查看它是否无法使用。

  • 检查是否有长时间执行和/或查询正在执行的交易。他们可以使用来自连线集区的资料库连线很长一段时间。

Request returned an error: database_error.

从Proxy 建立的资料库连线传回错误。

解决方案取决于特定的资料库错误。其中一个范例为Request returned an error: database "your-database-name" does not exist。这表示指定的资料库名称不存在于资料库伺服器上。或者,它表示用作资料库名称的使用者名称(如果未指定资料库名称) 不存在于伺服器上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值