TIDB 利用 follower 角色实现读写分离
作者: watermelon_cn 原文来源:https://tidb.net/blog/b12b575b
[一]() 背景
为提升同城中心的 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。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/0625ef92d184c9ad07451c08c】。文章转载请联系作者。
评论