当前位置: 首页 > 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.xdnf.cn/news/1109395.html

相关文章:

  • 服务器怎么跑Python项目?
  • 【代码随想录】刷题笔记——哈希表篇
  • MySQL 中图标字符存储问题探究:使用外挂法,毕业论文——仙盟创梦IDE
  • shiro550反序列化漏洞复现(附带docker源)
  • 【Docker基础】Dockerfile指令速览:基础常用指令详解
  • Leetcode百题斩-二分搜索
  • 使用langgraph 构建RAG 智能问答代理
  • springboot AOP面向切面编程
  • 连接池深度解析:原理、实现与最佳实践
  • Hap包引用的Hsp报签名错误怎么解决
  • 使用ESM3蛋白质语言模型进行快速大规模结构预测
  • 每日一SQL 【销售分析 III】
  • Python问题记录`No module named ‘matplotlib‘` 问题解决方案
  • 基于SEP3203微处理器的嵌入式最小硬件系统设计
  • 基于 Python 的数据分析技术综述
  • 剑指offer56_数组中唯一只出现一次的数字
  • 【MogDB】一种基于ctid分片并发查询以提升大表查询性能的方式
  • 【go】gopath、GO111MODULE=on作用
  • Javaweb- 11 MVC架构模式
  • JDK官方文档下载教程
  • 计算机视觉 之 经典模型汇总
  • 快速排序递归和非递归方法的简单介绍
  • 牛客:HJ19 简单错误记录[华为机考][字符串]
  • phpstudy搭建pikachu靶场
  • CCS-MSPM0G3507-2-定时器中断
  • SpringAI实现保存聊天记录到redis中
  • C++单元测试gtest技术
  • RHCSA(2)
  • 云端docker小知识
  • sqli-labs靶场通关笔记:第7-8关 布尔盲注