将 TiDB 迁移至 Kubernetes

    • Kubernetes 集群外物理机或虚拟机节点必须与集群内 Pod 网络互通
    • Kubernetes 集群外物理机或虚拟机节点必须能够解析 Kubernetes 集群内部 Pod 域名(具体配置方法见第一步)
    • 待迁移集群没有开启组件间 TLS 加密通信

    第一步:在待迁移集群的所有节点中配置 DNS 服务

    1. 获取 Kubernetes 集群 CoreDNS 或 kube-dns 服务的 endpoints 的 Pod ip 地址列表:

    2. 测试解析 Kubernetes 集群内部域名是否成功:

    1. 通过 PD Control 获取待迁移集群 PD 节点地址及端口号:

      1. pd-ctl -u http://<address>:<port> member | jq '.members | .[] | .client_urls'
    2. 确认部署在 Kubernetes 内的 TiDB 集群与待迁移 TiDB 集群组成的新集群正常运行。

      • 获取新集群 store 个数、状态:

        1. # store 个数
        2. # store 状态
        3. pd-ctl -u http://<address>:<port> store | jq '.stores | .[] | .store.state_name'
      • 通过 MySQL 客户端。

    第三步:缩容待迁移集群 TiDB 节点

    将待迁移集群的 TiDB 节点缩容至 0 个:

    • 如果待迁移集群使用 TiUP 部署,参考一节。
    • 如果待迁移集群使用 TiDB Ansible 部署,参考缩容 TiDB 节点一节。

    将待迁移集群的 TiKV 节点缩容至 0 个:

    • 如果待迁移集群使用 TiUP 部署,参考一节。
    • 如果待迁移集群使用 TiDB Ansible 部署,参考缩容 TiKV 节点一节。

    注意:

    • 依次缩容待迁移集群的 TiKV 节点,等待上一个 TiKV 节点对应的 store 状态变为 “tombstone” 后,再执行下一个 TiKV 节点的缩容操作。
    • 可通过 PD Control 工具查看 store 状态。

    第五步:缩容待迁移集群 PD 节点

    将待迁移集群的 PD 节点缩容至 0 个:

    • 如果待迁移集群使用 TiUP 部署,参考缩容 TiDB/PD/TiKV 节点一节。
    • 如果待迁移集群使用 TiDB Ansible 部署,参考一节。