TiDB与PD交互?

最近在研究PD和TiDB,看了官网的这篇文章:

里面讲了很多关于TiKV和PD交互的过程。我想问的是TiDB会把自己的元信息存储到PD或者从PD获取相关信息吗?如果有,这部分代码是在哪里呢?(看了一部分store/helper/helper.go里的获取元信息的Function会被TiDB 其他部分调用)

比如 TiDB 中 DDL 的版本信息这些,就会以元信息的方式存在 PD 中。不仅如此,很多 Tools 也使用 PD 作为元信息存储。一般使用的方式就是引用 PD 并使用 pd client 来连接 PD,或者直接使用 etcd client 来连接。
你可以通过搜索如下关键字来找到使用它们的地方:

1赞

两个比较典型的场景。一个是 tableReader 算子中 coprocessor 通过 PD 得到 key 所在的 region 信息,参考代码:
https://github.com/pingcap/tidb/blob/809df2851296fe7c424c1d14c64b5864d2a2e021/store/tikv/region_cache.go#L931

另一个是 information_schema 通过 PD 获取集群信息,参考代码:

https://github.com/pingcap/tidb/blob/809df2851296fe7c424c1d14c64b5864d2a2e021/infoschema/tables.go#L1406

1赞