tikv可以创建副本吗

我的想法是:比如tikv有两台,分别是5.1和5.2 一次写请求将123写入到了5.1,另一次写请求将456写入到了5.2 那么读123的请求每次就会到5.1上读取,我想5.1这台tikv扩展副本来到达负载的目的,另外如果可以这么做,能不能指定读副本(比如5.1扩展了一个副本在5.5这台机器,每次读123都指定去5.5读)

没有很理解你的意思。
tidb集群默认就是负载的,比如集群5.1、5.2、5.3三台服务器,副本3,写入123后,会在5.1里写入leader副本,5.2、5.3里自动写入follow副本。读取的时候默认是从leader副本读取的,同时leader是动态切换的,不一定一直在5.1上。

1 个赞

你说的5.1,5.2,5.3是三台kv吗

是的,是三个tikv节点

你说的写入123后,5.1kv本身存了123,然后5.1还创建了一个leader副本存123。还是5.1只有leader。我想表达的是5.1上有两个还是一个存储,我的语境里两个代表5.1本身加leader、一个存储就是leader

5.1存了123,5.2、5.3里也异步存了123,取数的时候,如果5.1是leader,就从5.1取,如果5.2是leader,就从5.2取。
这样说是否理解?

理解。那leader是动态的这个怎么进一步理解

可以参考一下这个
https://docs.pingcap.com/zh/tidb/dev/tidb-storage#raft-协议

好的。我现在有这么个场景,就是like查询,tidb我不太了解,比如MySQL双%会造成全表扫描,如果like时同时又有写入,可能会造成死锁。tidb会吗

不会,因为采用了mvcc控制
https://docs.pingcap.com/zh/tidb/dev/tidb-storage#mvcc

这个MySQL也不会吖,怎么会锁呢

好的。那tidb的like双%%会造成全表扫描吗,like的性能怎么样

必然会造成全表扫描,不建议使用

你是想做读写分离吗?
tidb 目前没有完全的读写分离技术,只有大标签,但都是系统慢时 follower 才会读

我的想法是当我like的时候去读副本,这样就不会影响写入,tidb可以实现吗

当我like的时候去读副本,这样就不会影响写入,tidb可以实现吗

tidb 目前还没有这样的功能

读本来就不会影响写入

读写分离的话,你从leader读也没影响呀。 如果说的是全表扫描,从哪个副本读都是有影响的。

搞分区,将你要分散的字段用分区打散。
但是解决不了like 全表扫描的。左边不是%那就可以走索引了。