调试连接

排查 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 下载代理。

  • 如果代理正在运行并监听所提供的端口,请尝试执行以下操作以建立与该代理的连接:

    1. 安装 PostgreSQL 客户端:

      sudo apt-get install postgresql-client

    2. 连接到 PostgreSQL 数据库:

      psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W(系统会提示您输入密码)。

      替换以下内容:

      • PORT:数据库端口号。
      • DBUSERNAME:用于连接到 PostgreSQL 数据库的用户名。
    3. 安装 telnet 客户端:

      sudo apt-get install telnet

    4. 连接到 telnet 客户端:

      telnet 127.0.0.1 PORT

      PORT 替换为数据库端口号。

    根据命令的结果:

    • 如果命令无法打开连接,请尝试查看代理日志以查找根本原因。根本原因可能因 Cloud SQL 实例设置而异。

    • 如果使用 telnet 打开连接,但在原生客户端中挂起,可能存在的问题是堡垒 IP 地址路由。在虚拟机的终端中,输入 ip route。看看您能否找到使用辅助 nicnic1,即 DB_SUBNETWORK_GATEWAY IP 地址)将连接路由到 Cloud SQL 实例专用 IP 地址的路由规则。

可能的原因:服务附件不接受来自 Database Migration Service 的端点连接。服务关联包含已接受的项目列表,其中不包含 Database Migration Service 项目。

可尝试的操作:如需解决此问题,请尝试以下任一操作:

  • 在 Google Cloud 控制台中,前往 Private Service Connect

    转到 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 等反向代理解决方案创建专用连接配置。