写点什么

TIDB 利用 follower 角色实现读写分离

  • 2024-11-29
    北京
  • 本文字数:952 字

    阅读完需:约 3 分钟

作者: watermelon_cn 原文来源:https://tidb.net/blog/b12b575b


[]() 背景


系统部署 架构:TiDB 6.5.11 版本,共使用 6 台服务器,数据使用 5+1 副本,使用 DR AUTO-SYNC 方式部署,同城中心的 TiKV 节点的角色是 Follower 和 Learner ,平常不参与 SQL 执行过程,仅与主中心保持同步。
复制代码


为提升同城中心的 TiKV 节点的资源利用,减少位于同城中心的 DataX 节点在数据抽取过程中占用大量双中心间的网络带宽,计划启用 Follower read 功能从同城中心的 TiDB 节点抽取时使用同城中心的 TiKV 节点上的数据副本。


系统拓扑如下:



会话中配置 tidb_replica_read=‘closest-replicas‌’ 后,会自动从同 zone 的 tikv 节点的 follower 角色副本上读取,同时因为同城中心只有 follower 节点,所以实现节点角色读写分离和同城中心网络流量的自包含。


[]() 配置过程


•          节点配置


Follower read 功能固定使用节点的 zone 标签,同时也为两中心切换角色对调做准备,在集群中所有的 TiDB 节点和 TiKV 节点统一加上 zone 标签。


使用 tiup cluster edit-config 配置节点的 zone 标签,需要注意的是 tidb 使用 label 小节,tikv 使用 serverlabel 小节。zone 序号和 dc 序号保持一致。因为 tidb 其他标签没有使用,所以只配置 zone 的值。



使用 pd-ctl 配置并查看



•          DR AUTO-SYNC 专属配置


保存 DR AUTO-SYNC 配置 JSON



编辑节点的标签层次



导入 DR AUTO-SYNC 配置 JSON



•          核对配置


○        使用 dashboard


 查看 dashboard 的存储拓扑,查看标签是否正确。


○        使用 showconfig 查看配置


SQL> show config where name like “%label%”


[]() 只读业务使用方法


•          ETL 在会话中增加会话变量,会话启动后预先执行



也可以考虑配置在 jdbc url 中, 添加  &sessionVariables=tidb_replica_read=‘closest-replicas‌’


后期可考虑使用的读写分离场景。


•          逻辑备份 dumpling 工具,使用 –params 参数添加变量。


•          工作人员的业务后台查询平台。


需要注意的是 follower read 的读取配置和 MySQL 读取从库的区别,并不限制应用只能是只读的应用,只是要求读取时使用 follower。如果需要完全的只读要求,需要配合限制用户的权限为 select。


发布于: 刚刚阅读数: 4
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TIDB  利用follower 角色实现读写分离_TiDB 社区干货传送门_InfoQ写作社区