region 读写分离

请问下各位老师,平常默认读写都在region leader,什么时候,会在follower region上去读呢,类似于MySQL的读写分离?是需要额外的配置吗?

2 个赞

使用follower read功能

4 个赞

需要将变量 tidb_replica_read 的值设置为 followerleader-and-follower
参考这里
https://docs.pingcap.com/zh/tidb/stable/follower-read#follower-read

3 个赞

由系统变量 tidb_replica_read控制:
https://docs.pingcap.com/zh/tidb/dev/system-variables#tidb_replica_read-从-v40-版本开始引入

1 个赞
  • leader:只从 leader 节点读取
  • follower:只从 follower 节点读取
  • leader-and-follower:从 leader 或 follower 节点读取
1 个赞

设置系统变量 tidb_replica_read

1 个赞

对实时一致性要求不高,可以设置这个变量, tidb_replica_read

1 个赞

谢谢老师的指点

谢谢帮助

tidb是分布式数据库,分布式体现在region的分块分布式;
对于分布式数据库的region来说得花 如果以mysql的方式理解读写分离有些偏差。
一般情况下不需要考虑读写分离
如果要做数据的ap话或必须要读写分离,有2中方式
1、使用tiflash
2、设置 tidb_replica_read 的值设 followerleader-and-follower

那请问老师,tidb 会根据不同的sql语句(oltp和olap的语句),自动路由到tikv或者tiflash,这不需要额外的设置吧?谢谢

会智能选择访问tikv还是tiflash,不一定每次都对

1 个赞

默认是自动选择,也可以手动设置

2 个赞

好的,谢谢

1 个赞

谢谢老师

1 个赞

上面的一个老师说的很对,根据你的实际使用场景,进行选择,需求不是很大的情况下,就修改参数 不用额外增加机器,需求量大的情况,可以考虑
1、使用tiflash
2、设置 tidb_replica_read 的值设 followerleader-and-follower

1 个赞

我看上面回答好像没有提到follower read需要多一次raft交互。
https://docs.pingcap.com/zh/tidb/v5.2/follower-read#follower-强一致读

从这个看来,并不一定快,还多一次交互呢。
这个如果有用的话,就是region扫描的时候,如果coprocessor的任务比较重,多一次raft交互代价也不大,可以让follower去扫描。

不过呢,follower上面也有别的region的leader啊,只要让所有机器的性能都用上去就行了。与其选择follower read,不如把热点均衡一下。

1 个赞