1问题描述
开发人员反馈通过客户端可以看到TDSQL数据库业务表,但是查询该业务表会出现表不存在错误,即“660-Proxy ERROR Table xxx does not exist”。

2处理过程
1、根据开发人员提供的数据库访问地址和端口信息,使用DBeaver客户端验证问题是否可以重现。登录数据库后,在客户端上点击该表的外键、引用等按键会弹出错误660。
2、在赤兔管理平台的“实例管理”列表中找到对应的实例,可以看到这是一个分布式实例,由4个set组成。
3、在“调度与管理系统“找到Zookeeper集群对应的服务器地址,并登录到Leader服务器。


4、登录zookeeper服务台,查看这个表对应的路由表信息。
cd data/application/zookeeper/bin./zkCli.sh -server 127.0.0.1:2181ls tdsqlzk/group_1720751957_78/routes/rtns@shardkeys/rt@pubserv_db需要将group_1720751957_78换成实际的实例group名称。
5、TDSQL架构图及各组件的关系说明

当业务访问时,首先通过负载均衡LVS转发流量,负载均衡是基于TCP/IP协议高性能的连接,然后通过SQL引擎解析路由信息,解析其中的SQL语句,读写分离判断,产生全局唯一值。SQL引擎通常设置3台,且没有主备之分全是对等的。解析完之后的SQL语句分发到对应的set上的MySQL底层,再由MySQL去执行。MySQL上有一个agent,通过agent与zookeeper关联。在部署的时候,agent和MySQL部署在一起。整个架构的核心是SQL引擎,MySQL存储引擎和zookeeper管理节点。
Zookeeper分布式调度系统管理维护整个集群元数据管理和通知作用。Hadoop负责备份,数据库的数据。Kafka主要是负责SQL的审计、多源同步。操作整个系统则是通过前台赤兔管理平台,通过赤兔平台设置任务,监控,采集,备份以完成日常基本的运维服务。
6、Zookeeper存储分片表对应的路由信息,但是却未查询到这个表对应的路由信息。
ls /tdsqlzk/group_1633417155_6280/routes/rtns@shardkeys/rt@pubserv_db.intf_call_log_hl_202407get /tdsqlzk/group_1633417155_6280/routes/rtns@shardkeys/rt@pubserv_db.intf_call_log_hl_202407查询记录为空
7、随机找一张分片表,并查看其路由信息
get /tdsqlzk/group_1633417155_6280/routes/rtns@shardkeys/rt@库名.表名

将{}中的字段复制出来并更改为异常表的相关内容。修改后的内容如下。
8、手动创建分片表对应的路由信息,即定义如何根据特定的分片键(Shard Key)将查询或数据操作路由到特定的分片(Shard)上。
create /tdsqlzk/group_1633417155_6280/routes/rtns@shardkeys/rt@pubserv_db.intf_call_log_hl_202407{"auto_inc":"","auto_inc_step":0,"auto_inc_type":0,"dbtable":"pubserv_db.intf_call_log_hl_202407","keytype":15,"shardkey":"ttp_intf_url"}
9、在zookeeper上创建这个分片表对应的路由信息后,再次使用客户端可以查询到对应的表数据。
3参考资料
1、TDSQL核心技术架构原理解析
https://www.bilibili.com/read/cv13146984/
2、TDSQL(MySQL)架构原理总结
https://blog.51cto.com/u_15721050/6038871
3、TDSQL产品架构
https://cloud.tencent.com/privatecloud/document/70392120434782208/70392134170079232
4、zookeeper故障恢复方案
https://cloud.tencent.com/privatecloud/document/78770101602512896/78770102719246336
5、https://blog.csdn.net/PWY13148/article/details/138133897
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
欢迎关注公众号!




