请问下各位老师,平常默认读写都在region leader,什么时候,会在follower region上去读呢,类似于MySQL的读写分离?是需要额外的配置吗?
使用follower read功能
需要将变量 tidb_replica_read
的值设置为 follower
或 leader-and-follower
参考这里
https://docs.pingcap.com/zh/tidb/stable/follower-read#follower-read
由系统变量 tidb_replica_read
控制:
https://docs.pingcap.com/zh/tidb/dev/system-variables#tidb_replica_read-从-v40-版本开始引入
- leader:只从 leader 节点读取
- follower:只从 follower 节点读取
- leader-and-follower:从 leader 或 follower 节点读取
设置系统变量 tidb_replica_read
对实时一致性要求不高,可以设置这个变量, tidb_replica_read
谢谢老师的指点
谢谢帮助
tidb是分布式数据库,分布式体现在region的分块分布式;
对于分布式数据库的region来说得花 如果以mysql的方式理解读写分离有些偏差。
一般情况下不需要考虑读写分离
如果要做数据的ap话或必须要读写分离,有2中方式
1、使用tiflash
2、设置 tidb_replica_read
的值设 follower
或 leader-and-follower
那请问老师,tidb 会根据不同的sql语句(oltp和olap的语句),自动路由到tikv或者tiflash,这不需要额外的设置吧?谢谢
会智能选择访问tikv还是tiflash,不一定每次都对
默认是自动选择,也可以手动设置
好的,谢谢
谢谢老师
上面的一个老师说的很对,根据你的实际使用场景,进行选择,需求不是很大的情况下,就修改参数 不用额外增加机器,需求量大的情况,可以考虑
1、使用tiflash
2、设置 tidb_replica_read
的值设 follower
或 leader-and-follower
我看上面回答好像没有提到follower read需要多一次raft交互。
https://docs.pingcap.com/zh/tidb/v5.2/follower-read#follower-强一致读
从这个看来,并不一定快,还多一次交互呢。
这个如果有用的话,就是region扫描的时候,如果coprocessor的任务比较重,多一次raft交互代价也不大,可以让follower去扫描。
不过呢,follower上面也有别的region的leader啊,只要让所有机器的性能都用上去就行了。与其选择follower read,不如把热点均衡一下。