目前想用TiCDC来完成TiDB - kafka - Elasticsearch数据同步,TIDB的所有组件都是在K8S中运行,但是TiCDC启动之后,日志显示如下:
原因是:在我K8S里的pd的名字叫
请问在哪里可以配置TiCDC连接的PD url呢?
目前想用TiCDC来完成TiDB - kafka - Elasticsearch数据同步,TIDB的所有组件都是在K8S中运行,但是TiCDC启动之后,日志显示如下:
可以尝试找到 basic-pd-0 这个实例的 IP 地址,另外需要 ticdc 的pod 能够访问这个 IP地址
basic-pd-0的K8S IP是这个
我进入TiCDC的一个节点,ping basic-pd-0 也能访问的通
运行 capture list 也是报的 [pd] failed to get cluster id
这是pd cluster_id信息:
我目前猜测是 TiCDC 连接的 PD URL不对。可是在哪里能修改呢?
发一下 cdc 启动时的完整日志,看看 cdc server 的配置,是不是一直有 warn 报错
改成 capture list --pd=http://basic-pd:2379 或者 --pd=http://basic-pd-0:2379 试试呢
capture list --pd=http://basic-pd:2379 运行结果:
capture list --pd=http://basic-pd-0:2379 运行结果:
将basic-pd-0换为K8S POD的ip capture list --pd=http://10.30.101.5:2379 运行结果:
TiCDC操作步骤:
编辑yaml:
kubectl edit tc basic -n tidb-cluster
加入TiCDC配置:
spec:
ticdc:
baseImage: pingcap/ticdc
replicas: 3
保存:wq
检查下 service ip, kubectl get svc -n ${namespace} | grep “-pd”,如果 service ip 没问题,看看是不是网络方面的原因
https://docs.pingcap.com/zh/tidb-in-kubernetes/dev/network-issues/#pod-之间网络不通
设置了kube-proxy之后,TiKV, TiPD等pod都能ping servicename了。但是TiCDC使用servicename的方式会出现 bad address ‘xxx’, 这是为什么呢?直接ping basic-pd 的 cluser ip可以ping通。因为TiCDC没法直接ping basic-od,所以启动还是会出现上面的问题。
如图:TiCDC ping serviceName 以及直接 ping cluster ip:
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。