You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YugabyteDB Voyager导入数据域名解析失败,Schema导入正常的原因

问题分析:YugabyteDB Voyager导入数据失败但Schema导入正常的原因

问题现象

在WSL2 Ubuntu 22.04环境下,通过Docker Desktop部署的Kubernetes集群运行YugabyteDB,使用yb-voyager迁移PostgreSQL数据时:

  • 导入Schema操作正常完成,pgAdmin也能正常连接YugabyteDB,说明数据库基础连通性没问题
  • 执行数据导入时触发DNS解析错误:

import of data in "postgres" database started
Target YugabyteDB version: 11.2-YB-2.15.2.1-b0
Error Resolving name=yb-tserver-1.yb-tservers.yb-demo.svc.cluster.local: lookup yb-tserver-1.yb-tservers.yb-demo.svc.cluster.local: no such host

执行命令对比

正常的Schema导入命令

yb-voyager import schema --export-dir ${EXPORT_DIR} --target-db-host ${TARGET_DB_HOST} --target-db-user ${TARGET_DB_USER} --target-db-password ${TARGET_DB_PASSWORD} --target-db-name ${TARGET_DB_NAME}

失败的数据导入命令

yb-voyager import data --export-dir ${EXPORT_DIR} --target-db-host ${TARGET_DB_HOST} --target-db-user ${TARGET_DB_USER} --target-db-password ${TARGET_DB_PASSWORD} --target-db-name ${TARGET_DB_NAME}

环境变量配置

EXPORT_DIR=/home/abc/db-export
TARGET_DB_HOST=127.0.0.1
TARGET_DB_USER=ybvoyager
TARGET_DB_PASSWORD=password
TARGET_DB_NAME=postgres

核心原因

  1. Schema与数据导入的访问逻辑差异

    • 导入Schema时,yb-voyager仅通过指定的TARGET_DB_HOST(127.0.0.1)连接YugabyteDB的master节点完成元数据操作,不需要直接访问各个tserver节点。
    • 导入数据时,yb-voyager会从YugabyteDB获取所有tserver节点的Kubernetes内部域名(如yb-tserver-1.yb-tservers.yb-demo.svc.cluster.local),并尝试直接连接这些节点做并行数据加载。但WSL2环境无法解析K8s集群内部的Service域名,导致DNS查询失败。
  2. WSL2与K8s网络的隔离性
    Docker Desktop的K8s集群内部域名仅能在集群内部解析,WSL2作为独立虚拟机环境,默认无法直接识别这些内部域名。即便TARGET_DB_HOST用127.0.0.1做了端口映射,也只能访问暴露到宿主机的服务,无法直接访问集群内的tserver节点域名。

解决办法

  • 添加hosts映射:在WSL2的/etc/hosts文件中,将所有tserver节点的内部域名映射到127.0.0.1(K8s已将tserver端口暴露到宿主机)。示例:

    echo "127.0.0.1 yb-tserver-1.yb-tservers.yb-demo.svc.cluster.local" | sudo tee -a /etc/hosts
    echo "127.0.0.1 yb-tserver-0.yb-tservers.yb-demo.svc.cluster.local" | sudo tee -a /etc/hosts
    

    需先通过kubectl get pods -n yb-demo获取所有tserver节点名称,确保映射完整。

  • 修改YugabyteDB tserver广告地址:部署YugabyteDB时,将tserver的--tserver-advertised-address设置为宿主机IP或127.0.0.1,让yb-voyager获取到可直接访问的节点地址,而非K8s内部域名。

内容的提问来源于stack exchange,提问作者hawky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:01:01