当前位置: 首页 > news >正文

【赵渝强老师】国产数据库TiDB的代理路由:TiProxy

在这里插入图片描述

在TiDB数据库集群中,TiProxy是PingCAP的官方代理组件,它放置在客户端和TiDB server之间,为TiDB提供负载均衡、连接保持、服务发现等功能。

提示:TiProxy是可选组件,也可以使用第三方的代理组件,或者直接连接到TiDB Server。

下图展示了基于TiProxy的TiDB集群架构。
在这里插入图片描述

视频讲解如下

【赵渝强老师】TiDB的代理路由TiProxy

一、 TiProxy的功能特性

TiProxy提供连接迁移、故障转移、服务发现和一键部署的功能。

  • 连接迁移
    TiProxy在保持客户端连接不变的情况下,能将一台TiDB server上的连接迁移到另一台TiDB server。连接迁移通常发生在以下场景:
  1. 当TiDB server进行缩容、滚动升级、滚动重启操作时,TiProxy能把连接从即将下线的TiDB server迁移到其他TiDB server上,从而保持客户端连接不断开。
  2. 当TiDB server进行扩容操作时,TiProxy能将已有的部分连接迁移到新的TiDB server上,从而实现了实时的负载均衡,无需客户端重置连接池。

如上图所示,原先客户端通过TiProxy连接到TiDB 1上,连接迁移之后,客户端实际连接到TiDB 2上。在TiDB1即将下线或TiDB 1上的连接数比TiDB 2上的连接数超过设定阈值时,会触发连接迁移。连接迁移对客户端无感知。

  • 故障转移
    当一台TiDB server存在Out of Memory(OOM)风险、连接PD或TiKV失败时,TiProxy自动感知故障,并将连接迁移到其他TiDB server上,从而保持客户端连接不断开。

  • 服务发现
    当TiDB server进行扩容、缩容操作时,如果使用普通负载均衡器,则需要手动更新TiDB server列表,而TiProxy能自动发现TiDB server列表,无需人工介入。

  • 一键部署
    TiProxy集成到了TiUP、TiDB Operator、TiDB Dashboard和Grafana中,且内置虚拟IP管理,降低了部署和运维成本。

《TiDB数据库从零开始》

二、 【实战】TiProxy快速上手

使用TiIUP可以非常方便地快速部署一个包含TiProxy组件的TiDB数据库集群。集群部署完成后,可以通过一个简单的测试程序来测试TiProxy的流量分发功能。下面是具体的操作步骤。

(1)启动包含TiProxy节点的TiDB数据库集群。

tiup playground v8.5.1 \--db 2 --pd 1 --kv 2 \--tiproxy 2 \--tiflash 0 --without-monitor# 提示:这里的TiDB数据库集群中包含2个TiProxy实例,由选项--tiproxy指定。
# 输出信息如下:	 
TiDB Playground Cluster is started, enjoy!Connect TiDB:    mysql --comments --host 127.0.0.1 --port 4000 -u root
Connect TiDB:    mysql --comments --host 127.0.0.1 --port 4001 -u root
Connect TiProxy: mysql --comments --host 127.0.0.1 --port 6001 -u root
Connect TiProxy: mysql --comments --host 127.0.0.1 --port 6000 -u root
TiDB Dashboard:  http://127.0.0.1:2379/dashboard

(2)查看集群的节点信息。

tiup playground display# 输出的信息如下:
Pid   Role     Uptime
---   ----     ------
3496  pd       1m53.042378029s
3504  tikv     1m52.945817432s
3506  tikv     1m52.851553183s
3508  tidb     1m52.759561619s
3543  tidb     1m52.563103386s
3816  tiproxy  1m45.622938601s
3822  tiproxy  1m45.526132671s

(3)通过TiProxy连接TiDB数据库。

mysql --comments --host 127.0.0.1 --port 6000 -u roottidb> select version();
+--------------------+
| version()          |
+--------------------+
| 8.0.11-TiDB-v8.5.1 |
+--------------------+
1 row in set (0.001 sec)

(4)开发一段简单的程序测试TiProxy的流量分发。

for a in {1..10}do mysql --host 127.0.0.1 --port 6000 -u root \-e "show global variables like 'port';";sleep 1;done# 提示:这段测试程序将通过TiProxy连接TiDB Server,并输出当前TiDB Server的端口号信息。
# 输出的信息如下:
......
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 4001  |
+---------------+-------+
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 4000  |
+---------------+-------+
......

《TiDB数据库从零开始》

http://www.dtcms.com/a/276178.html

相关文章:

  • K3S滚动发布Jar
  • TCP详解——各标志位
  • 字母异位词分组
  • 闲庭信步使用图像验证平台加速FPGA的开发:第十一课——图像均值滤波的FPGA实现
  • 家用智能摄像机PRV文件删除的恢复方法
  • 牛客网50题
  • word转pdf、pdf转word在线工具分享
  • C#调用Matlab生成的DLL
  • C#枚举:从基础到高级的全方位解析
  • NLP分词notes
  • 用一张“冰裂纹”石墨烯薄膜,让被动散热也能做 AI 推理——基于亚波长裂纹等离激元的零功耗温度-逻辑门
  • 深度学习图像分类数据集—铜片划痕识别分类
  • 创客匠人:解析创始人 IP 打造对知识变现的深层赋能
  • position: fixed和sticky的区别
  • 子数组最大平均数 I
  • Dataset类代码实战
  • 【LeetCode 热题 100】25. K 个一组翻转链表——迭代+哨兵
  • Spring AOP 是如何生效的(入口源码级解析)?
  • SpringBootloggers未授权访问漏洞处理
  • Flink创建执行环境的三种方式,也是Flink搭建程序的第一步
  • [特殊字符] 实时数据洪流突围战:Flink+Paimon实现毫秒级分析的架构革命(附压测报告)——日均百亿级数据处理成本降低60%的工业级方案
  • Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
  • WebSocket:构建实时交互的 Web 应用
  • C# VB.NET多进程-管道通信,命名管道(Named Pipes)
  • C语言结构体
  • C++---<cctype>
  • 2025科大讯飞AI大赛<大模型技术方向>(Datawhale AI 夏令营)
  • 解决bash终端的路径名称乱码问题
  • Redis渗透思路总结
  • Theo Mandel的用户界面设计三大黄金规则