比如我有九台不同区域的服务器,每三台服务器作为一个组的话:
global:
user: “root”
ssh_port: 22
deploy_dir: “/tikv-deploy”
data_dir: “/tikv-data”
log_dir: “/tikv-log”
pd_servers:
- host: 11.0.0.1
- host: 11.0.0.2
- host: 11.0.0.3
tikv_servers:
- host: 10.0.0.1
- host: 10.0.0.2
- host: 10.0.0.3
- host: 10.0.0.4
- host: 10.0.0.5
- host: 10.0.0.6
- host: 10.0.0.7
- host: 10.0.0.8
- host: 10.0.0.9
我想知道这个是如何再多个pb进行通信的,然后写入和查询数据是从哪个tikv进行操作数据的,如何进行指定写入某个节点,还是说九个节点都会进行同步数据
啦啦啦啦啦
2
只有PD leader是干活的,TiDB 在选择 TiKV 节点进行数据写入和查询时,主要依赖于 PD的调度和 Region 的分布策略。假如TIKV每三台服务器作为一个组的话,想让3副本分布在不同的组,可以在PD 设置中添加 TiKV label 的等级配置,并且在TIKV上设置 Label 信息就可以。
参考下这里https://docs.pingcap.com/zh/tidb/stable/three-data-centers-in-two-cities-deployment#labels-设计
1 个赞
tikv之间是不通信的,主要是pd和tikv之间进行通信,同时pd之间进行通信,然后3个pd有一个是leader,用来承载业务,其他的主要就是备份,主leader故障会自动切换到其他pd。写入都是有pd决定的(分布情况pd有记录,查询数据时pd发现数据在哪个节点上,就会负载到哪个节点上),一般不设置label的话,就会平均写入到9个tikv中,如果设置了label,就会按照label规则来写入。
另外tikv时按region存放的,可以设置副本,例如你的副本数是3,那每个region会存放3份,可能放到任意3个tikv上(不设置label的情况),其中一般主要是region leader工作,其他做备份,也可以设置follower 读,这时副本也可以被读取。
小学童啊
7
tikv之间应该是有通信的吧,rocksraft写日志之后,还要将这个日志同步到其他tikv节点的rocks raft实例,其他节点还要回复他们已经写入成功,多数回复之后才能写入rocksdb,才算持久化,这个过程tikv是互相通信的吧
2 个赞
舞动梦灵
(Ti D Ber Nckmz Hmh)
8
其他节点还要回复他们已经写入成功。 这句话回复他们写入成功,是回复谁,PDleader吧
我意思是我数据写入的时候,我如何指定region,而不是让他再九个tikv中随机选择三个
例如我有不同地区的tikv,如果是使用pd进行通信的话,然后pb都是leader进行数据操作的,如何才能实现从美国来的请求走美国的tikv存储,法国走法国的,例如最优连接选择
那光tikv打label不够,直接用两地三中心类似的部署方式吧。。。
跨数据中心部署拓扑 | TiDB 文档中心