
在TiDB数据库集群中,TiProxy是PingCAP的官方代理组件,它放置在客户端和TiDB server之间,为TiDB提供负载均衡、连接保持、服务发现等功能。
提示:TiProxy是可选组件,也可以使用第三方的代理组件,或者直接连接到TiDB Server。
下图展示了基于TiProxy的TiDB集群架构。

视频讲解如下:
TiProxy提供连接迁移、故障转移、服务发现和一键部署的功能。
如上图所示,原先客户端通过TiProxy连接到TiDB 1上,连接迁移之后,客户端实际连接到TiDB 2上。在TiDB1即将下线或TiDB 1上的连接数比TiDB 2上的连接数超过设定阈值时,会触发连接迁移。连接迁移对客户端无感知。
使用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 root
tidb> 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 |
+---------------+-------+
......原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。