原本,我有三台tikv,后面进行扩容了三台tikv,我想知道当我客户端调用写入数据至tikv时,是写入至哪个节点中,这个需要如何进行查看,客户端通过pd发现tikv集群节点时是否会选择最优路径进行写入数据,以及是否会选择最优路径节点进行获取数据
有人知道,这个客户端连接pd写入和查询数据时是走的哪个tikv节点嘛?
最优路径写入和读取?应该只有一个路径读写吧,都是读写leader。
raw kv 写入吗?可以通过 pd 获取 region 相关信息,看 region 范围判断写入位置
建议你看看101课程。这里表述的不太对。
我简单描述下:
客户端连的是tidb节点而不是pd节点,tikv会向pd询问tikv上数据分布,数据按连续主键分成region,默认3副本,1 leader 2个follower,tidb请求会发到1 leader所在的tikv上。
所以不存在所谓最有写入路径,写入的就是保存数据所属的region leader的tikv上
那我客户端写入数据到tikv总得选择一个tikv的节点吧,我想知道这个节点是哪个
是只有一个,但我想知道每次写入数据或者读取数据的时候,这个leader的节点是哪一个
tidb设计上对客户端来说是无感知的,自动化分region了,如果你一定要查清楚也是可以查的,只是意义不大
这样才能知道每次写入数据和读取数据是从哪个tikv节点进出的,我现在有六个tikv节点,就想知道不通区域的服务端走的tikv进出数据是不是会是最优的那个,还是通过pd选择的tikv最优的那个节点
这么看意义不大,region的leader会变化的,现在看到访问哪个tikv不代表过一会儿就是那个。
简单的想看看可以查表如下:给定表看看数据在那个store_id上,对应tikv在INFORMATION_SCHEMA.TIKV_STORE_STATUS表里面查看
select s.REGION_ID,p.STORE_ID
from information_schema.TIKV_REGION_STATUS s,information_schema.TIKV_REGION_PEERS p
where s.REGION_ID=p.REGION_ID
and p.is_leader=1
and s.TABLE_NAME=‘t1’
and s.DB_NAME=‘test’
没,我就是想看变化,我打算客户端一直写入数据,然后观测写入数据的tikv leader是哪个
如果你需要一个表数据在特定一些tikv上,需要手工配置Placement Rules,参考文档
Placement Rules 使用文档 | TiDB 文档中心
rust的客户端可以看到,go语言的就找不到
有人知道怎么打印出来不,找半天没找到具体走的哪个tikv节点
这种只能从leader看吧
那个storeid就是tikv吧
leader节点自主选择的
嗯,这个我知道,我看rust会返回出来,go的话只能通过region_id才能知道写入的tikv节点是哪一个,还得去日志里查