如何利用备节点读取数据

看资料上介绍可以利用备节点进行读取数据,也需要与主节点对比CommitIndex保证数据的一致性读取。如何配置?在生产环境中的应用效果如何?

2 个赞

开启可以看这个文档:https://docs.pingcap.com/zh/tidb/v7.5/dev-guide-use-follower-read/#开启-follower-read

3 个赞

一般意义不大,因为数据默认就是分散在所有tikv机器的,每个节点都是既有 leader,既有follower的
只有在那种多中心部署架构,然后某中心又全是follower的时候,这种情况可以读取本中心的follower副本数据,避免产生大量的跨中心流量

4 个赞

tidb_replica_read
– 读取 Follower 或 Leader (默认行为)
SET tidb_replica_read = ‘leader’;

– 仅读取 Follower (不读 Leader)
SET tidb_replica_read = ‘follower’;

– 读取 Follower (如果 Follower 不可用,会 fallback 到 Leader)
SET tidb_replica_read = ‘closest-replica’;

3 个赞

通过配置Follower Read实现,TiDB会选择合适的副本读取数据,保证读取数据的时效性。

2 个赞

:thinking:备节点是 主从备份节点里的从节点,还是主从副本里的从副本?看下面回复的都是从副本的读取。

2 个赞

先要通过 placement 控制数据分布,主/从分开,默认是混布
然后就可以用tidb_replica_read控制读取的节点

2 个赞

TiDB 集群中,TiKV 采用 Raft 共识算法管理副本:

  1. 每个 Region 有 1 个主副本(Leader)和多个备副本(Follower)。
  2. 主副本处理写请求,写入后向备副本同步日志,当 多数副本(≥ (副本数 + 1)/2) 确认收到日志后,主副本将日志标记为 已提交,并更新 CommitIndex(已提交日志的最大索引)。
  3. 备节点读取时,必须等待自身的日志同步到主节点的 CommitIndex,才能返回一致的数据,避免读取到未提交的脏数据。
2 个赞

一种方法是配置参数,另外一种是直接调用备用的IP

2 个赞

用处不大,压测效果不明显

2 个赞

通过设置 tidb_replica_read 参数开启 Follower Read,备节点同步主节点 CommitIndex 保障一致性。

1 个赞

使用label特性铆定写入节点,然后设置select的路由单独进入其他节点

有这样使用的吗?期待答案!