GCP克隆MySQL实例后Cloud Run连接报错:找不到Unix Socket
以下是几个可能的原因和对应的排查方向:
Cloud Run部署时的Cloud SQL实例参数未更新
如果你的Cloud Run服务是通过内置Cloud SQL代理连接数据库的,部署命令中必须通过--cloudsql-instances参数指定目标实例的完整连接名。如果你只修改了代码里的连接字符串,没更新这个部署参数,代理只会创建原实例的Unix Socket,自然找不到新实例的Socket路径。重新部署Cloud Run时,确保该参数指向新的[PROJECT_ID]:[REGION]:[INSTANCE_NAME-benchmark]。连接字符串中的UnixSocket参数未同步更新
当使用Unix Socket连接Cloud SQL时,连接字符串里的UnixSocket字段优先级高于Server字段。如果你的代码中显式指定了UnixSocket路径(比如/cloudsql/[旧实例连接名]),仅修改Server字段不会生效,必须把UnixSocket路径中的实例名替换为新的后缀带-benchmark的名称。Server字段的实例连接名格式错误
GCP Cloud SQL的实例连接名严格遵循[PROJECT_ID]:[REGION]:[INSTANCE_NAME]格式,检查你修改后的Server值是否完整包含了项目ID、区域和新实例名,有没有拼写错误(比如区域写错、实例名多打/漏打字符)。另外,当使用Unix Socket连接时,Server字段可以设置为localhost,此时真正生效的是UnixSocket路径,这种情况下更不容易出错。Cloud Run服务的VPC连接器权限验证
虽然你确认了SQL实例的权限配置,但要检查Cloud Run使用的VPC连接器是否拥有访问新实例所在子网的权限。克隆实例时如果子网配置有细微差异(比如不小心选了不同子网),会导致VPC连接器无法路由到新实例。可以在GCP控制台查看新实例的网络配置,确认和原实例在同一VPC和子网下,且VPC连接器的访问范围包含该子网。实例初始化未完成
即使GCP连接测试通过,克隆后的实例可能仍在后台完成一些初始化操作(比如同步数据、配置Socket)。等待1-2分钟后重新部署Cloud Run服务,再尝试连接。
内容的提问来源于stack exchange,提问作者russelrillema

