本文介绍一种不借助备份恢复工具将部署在物理机或虚拟机中的 TiDB 迁移至 Kubernetes 中的方法。
获取 Kubernetes 集群 CoreDNS 或 kube-dns 服务的 endpoints 的 Pod ip 地址列表:
kubectl describe svc/kube-dns -n kube-system
修改待迁移集群节点 /etc/resolv.conf 配置,向该配置文件中添加如下内容:
search default.svc.cluster.local svc.cluster.local cluster.local nameserver
测试解析 Kubernetes 集群内部域名是否成功:
$ ping basic-pd-2.basic-pd-peer.blade.svc PING basic-pd-2.basic-pd-peer.blade.svc (10.24.66.178) 56(84) bytes of data. 64 bytes from basic-pd-2.basic-pd-peer.blade.svc (10.24.66.178): icmp_seq=1 ttl=61 time=0.213 ms 64 bytes from basic-pd-2.basic-pd-peer.blade.svc (10.24.66.178): icmp_seq=2 ttl=61 time=0.175 ms 64 bytes from basic-pd-2.basic-pd-peer.blade.svc (10.24.66.178): icmp_seq=3 ttl=61 time=0.188 ms 64 bytes from basic-pd-2.basic-pd-peer.blade.svc (10.24.66.178): icmp_seq=4 ttl=61 time=0.157 ms
通过 PD Control 获取待迁移集群 PD 节点地址及端口号:
pd-ctl -u http://:
在 Kubernetes 中创建目标 TiDB 集群(TiKV 节点个数不少于 3 个),并在 spec.pdAddresses 字段中指定待迁移 TiDB 集群的 PD 节点地址(以 http:// 开头):
spec ... pdAddresses: - http://pd1_addr:port - http://pd2_addr:port - http://pd3_addr:port
确认部署在 Kubernetes 内的 TiDB 集群与待迁移 TiDB 集群组成的新集群正常运行。
获取新集群 store 个数、状态:
# store 个数 pd-ctl -u http://:
通过 MySQL 客户端访问 Kubernetes 上的 TiDB 集群。
将待迁移集群的 TiDB 节点缩容至 0 个:
注意
若通过负载均衡或数据库访问层中间件的方式接入待迁移 TiDB 集群,则先修改配置,将业务流量迁移至目标 TiDB 集群,避免影响业务。
将待迁移集群的 TiKV 节点缩容至 0 个:
注意
将待迁移集群的 PD 节点缩容至 0 个:
spec.pdAddresses 字段为避免后续对集群进行操作时产生困惑,迁移成功后,建议将新集群的 manifest 中的 spec.pdAddresses 字段删除。