我想解决 Amazon Relational Database Service (Amazon RDS) for MySQL 错误日志中的“Name or service not known”(名称或服务未知)错误。
简短描述
在进行客户端身份验证时,Amazon RDS for MySQL 会对尝试连接的客户端主机名执行反向 DNS 查询。RDS for MySQL 将检查该主机名是否存在于主机缓存中。如果不存在,则服务器会将 IP 地址解析为主机名,然后将该主机名解析回 IP 地址。如果 RDS for MySQL 无法执行 DNS 查询,则它会记录以下错误消息之一并继续客户端身份验证过程:
"Host name could not be resolved: Name or service not known"
"IP address xxx.xxx.xxx.xxx/n could not be resolved: Name or service not known"
对于给定主机,RDS for MySQL 仅会尝试对来自该主机的第一个连接执行反向 DNS 查询。您不会看到有关来自该主机的后续用户连接的错误消息。请注意,Amazon RDS 会故意限制对虚拟私有云 (VPC) 网络内的 MySQL 客户端连接执行反向 DNS 解析。
**注意:**大多数情况下,可以忽略上述错误消息。但是,反向 DNS 查询过程可能会导致大量性能开销并减慢尝试连接的速度。
解决方法
要解决这些错误消息,请在自定义 RDS for MySQL 参数组中启用 skip_name_resolve 参数。
完成以下步骤:
- 在 RDS for MySQL 中创建自定义参数组。
- 将 skip_name_resolve 参数设置为 1。
- 将自定义参数组与 RDS for MySQL 实例相关联。
- 重启实例以应用该自定义参数组。
**注意:**当启用 skip_name_resolve 参数时,该参数会关闭反向 DNS 查询。
有关详细信息,请参阅 Amazon RDS 数据库实例的数据库参数组。
相关信息
MySQL 网站上的 DNS lookups and the host cache