排查 Private Service Connect 错误
无法连接到目标数据库:EOF
运行连接测试会返回 [DATABASE] unable to connect to the destination database: EOF
错误消息。
可能原因:服务连接配置不正确。
可尝试的操作:确保在服务附件 Terraform 配置文件中将 enable_proxy_protocol
设置为 false
。只有 NGINX 和 Apache 等 HTTP 服务器支持代理协议。
使用 gcloud
创建 Private Service Connect 设置时,代理协议默认处于停用状态。
连接超时,连接被拒绝
运行连接测试失败或超时。这很可能是由于 Private Service Connect 设置中的路由配置错误所致。造成这种情况的原因有多种。
可能的原因:缺少一条防火墙规则,该规则允许 Private Service Connect NAT CIDR 范围访问堡垒所在的 Private Service Connect 子网,尤其是堡垒虚拟机 nic0
接口。
可尝试的做法:确保您的组织政策不会限制内部防火墙规则,例如在设置 Private Service Connect 提供方的示例 Terraform 脚本中定义的 psc_sp_in_fw
防火墙规则。
可能的原因:代理服务器已关闭。所提供的端口上没有监听器,因此连接会挂起。
可尝试的操作:您可以尝试与堡垒虚拟机建立 SSH 连接,然后使用以下命令搜索代理:
netstat -tunalp | grep PORT
分析对该命令的响应:
如果您收到空响应,则表示代理服务器已关闭。请尝试运行以下命令:
sudo su; cd /
,然后运行sudo dpkg -s dante-server
检查 Dante 服务器是否已安装:如果代理已安装,您会收到以下消息:
Status: install ok installed
如果未安装代理,可能是因为缺少路由器。添加路由器,然后检查您是否可以通过运行
apt-get install dante-server
下载代理。
如果代理正在运行并监听所提供的端口,请尝试执行以下操作以建立与该代理的连接:
安装 PostgreSQL 客户端:
sudo apt-get install postgresql-client
。连接到 PostgreSQL 数据库:
psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W
(系统会提示您输入密码)。替换以下内容:
PORT
:数据库端口号。DBUSERNAME
:用于连接到 PostgreSQL 数据库的用户名。
安装 telnet 客户端:
sudo apt-get install telnet
连接到 telnet 客户端:
telnet 127.0.0.1 PORT
将
PORT
替换为数据库端口号。
根据命令的结果:
如果命令无法打开连接,请尝试查看代理日志以查找根本原因。根本原因可能因 Cloud SQL 实例设置而异。
如果使用 telnet 打开连接,但在原生客户端中挂起,可能存在的问题是堡垒 IP 地址路由。在虚拟机的终端中,输入
ip route
。看看您能否找到使用辅助nic
(nic1
,即DB_SUBNETWORK_GATEWAY
IP 地址)将连接路由到 Cloud SQL 实例专用 IP 地址的路由规则。
可能的原因:服务附件不接受来自 Database Migration Service 的端点连接。服务关联包含已接受的项目列表,其中不包含 Database Migration Service 项目。
可尝试的操作:如需解决此问题,请尝试以下任一操作:
在 Google Cloud 控制台中,前往 Private Service Connect。
在已发布的服务标签页中,接受 Database Migration Service 针对您的服务附件(如果处于待处理状态)发来的连接请求。
将发出请求的项目添加到服务连接的许可名单项目中(如果被拒绝)。
如需详细了解如何在 Terraform 中添加许可名单中的项目,请参阅 Terraform 文档。
如需详细了解如何在
gcloud
中添加许可名单中的项目,请参阅 gcloud 参考文档。
如果这不能解决问题,请重新创建连接个人资料。
删除与 Private Service Connect 连接相关联的连接配置文件,然后重新创建该连接配置文件。
排查 Oracle SCAN 错误
本部分介绍了使用单个客户端访问名称 (SCAN) 功能从 Oracle Real Application Clusters (RAC) 源迁移时可能会遇到的潜在问题。
无法与 Oracle SCAN 数据库建立连接
运行连接测试失败或超时。
可能原因:您可能尝试直接与 Oracle SCAN 源数据库建立连接。Database Migration Service 不支持在 Oracle RAC 环境中使用 SCAN 功能直接连接到数据库。
可尝试的操作:如需解决此问题,请尝试以下任一操作:
- 直接连接到其中一个节点。
- 使用 Oracle 连接管理器。
- 使用 HAProxy 等反向代理解决方案创建专用连接配置。