config:
server.labels:
zone: eu
不管是proxy 还是tidb还是tikv都配置了这个标签,tikv配置这个标签的作用能否实现我从欧洲proxy节点的请求到tidb欧洲节点的请求,然后tidb会不会tikv欧洲的节点中进行存储数据呢,而不会跨在我tikv的亚洲节点中,tikv我有六台,三台亚洲 三台欧洲
如何知道当前写入的数据是存储到了哪个tikv中,还是说不管从哪个proxy和tidb进来的请求都是根据key的region_id在六台中选一台作为主的进行读写
看这个图,貌似六台都是一样的,根据key随机选的tikv节点:
在 TiDB 集群中配置 zone 标签主要用于实现数据的就近访问和容灾策略
but
仅仅配置 zone 标签并不能自动实现"欧洲请求必须存储在欧洲 TiKV 节点"这样的强制路由
如果想要实现跨地域数据分布的控制可以试试:
- 使用 Placement Rules 功能来精确控制数据分布
- 配置 Region 的放置规则,指定某些数据必须存放在特定标签的节点上
Kongdom
(Kongdom)
4
placement-rule in sql可以实现
1 个赞
乡在人间
(Ti D Ber Ki Nyc B Fs)
6
placement-rule + label标签,应该可以满足你的需求
1 个赞
我定义了标签,pd没有需要定义标签嘛?
server_configs—-pd配置文件截图:
pd_servers截图:
tidb_servers截图:
tikv_servers截图:
tikv总的六个节点,三个亚洲三个欧洲
Kongdom
(Kongdom)
9
应该没有,因为3个PD,只有1个Leader在工作,另外两个实际是待命状态。tidb和tikv是3个节点都在工作。
可实际我对tidb和tikv定义了标签,当我打亚洲tidb的请求时,数据还是从欧洲的tikv进行读写了,并没有根据我定义的标签进行写入数据,是我tidb或者tikv的标签哪里有问题吗?
Kongdom
(Kongdom)
11
是我误解了你的意思,这个方案应该满足不了你。这个方案的本意是为了高可用。即两个区域,其中一个主区域,一个副区域,副区域的选举认为添加延迟。控制leader只在主区域,降低主区域的读写延迟。
有能够指定tikv的存储方案吗,不然我亚洲过来的tidb,要把数据存到欧洲的tikv的话延迟反而还高,读可以接受跨区域读
Kongdom
(Kongdom)
13
同一张表,欧洲写一条数据,存储在欧洲tikv,亚洲写一条数据,存储在亚洲tikv?我感觉是不行的,读取的时候,还是要从亚洲和欧洲tikv都读取一遍,然后才返回,不能只读亚洲tikv,没有就返回空吧。
Kongdom
(Kongdom)
15
tiproxy和tidb通过标签进行打请求,我tidb和tikv都是一个区域的都是欧洲德国的,为什么延迟会这么高,tidb和tikv机器之间相互看延迟又是才不到1毫秒的延迟,但查数据却七八百的延迟:
和我pd机器有关系吗,我pd机器都是亚洲的机器,但pd不是做调度作用应该不涉及tidb和tikv之间通信的延迟吧