如何访问TDH中Inceptor 底层的元数据库TxSQL
1 Inceptor概述
在大数据生态系统中,HIVE是离线数据仓库事实上的标准,绝大多数的大数据分析型系统或数据仓库系统,都是基于HIVE来构建的。
在星环的大数据平台TDH中,在功能上对应开源HIVE的服务是Inceptor,Inceptor底层是基于开源的HIVE和Spark 整合开发而来的,其中:
- Inceptor Server 对应 HIVE 的查询引擎 HS2;
- Inceptor Metastore 对应HIVE的元数据引擎 HMS;
- Inceptor Executor 对应 spark executor;
2 TxSql概述
- HIVE的元数据引擎 HMS在底层依赖一个RDBMS元数据库进行元数据的存储查询和管理,该RDBMS常用的有mysql/pg/oracle等,在实践中我们一般使用Mysql;
- Inceptor 的元数据引擎 Inceptor Metastore 在底层同样依赖一个RDBMS元数据库进行元数据的存储查询和管理,TDH中这个RDBMS使用的是TxSQL:
查看星环官方文档可知,TxSQL基于开源的PhxSQL项目开发,是一个强一致、高可用的分布式数据库系统,它建立在MySQL基础上,并对其传统的主从复制方案作出了改进,将传统的主从复制机制和Paxos协议结合起来,从而更好的实现了高可用。
PhxSQL官方网址是https://github.com/Tencent/phxsql,查看PhxSQL官方文档可知,PhxSQL is a high-availability and strong-consistency MySQL cluster built on Paxos and Percona,其架构图如下:
PhxSQL集群是三层架构,对于集群中的每一个节点,部署3个模块(PhxSQLProxy,MySQL,PhxBinlogSvr):
- PhxSQLProxy负责请求的透传;
- 多个节点上的PhxBinlogSvr组成一个可靠的日志存储集群和可靠的Master信息存储集群,PhxBinlogSvr同时承担Agent的责任;
- Master结点上的PhxSync负责将MySQL的Binlog发送到PhxBinlogSvr;
查看TxSQL的底层进程,可见其跟PhxSQL的三次架构是一致的:
3 如何访问TDH中Inceptor 底层的元数据库TxSQL
有时候我们需要对元数据库TxSQL做一些运维操作,比如备份和恢复,此时如何登录进而访问TDH中Inceptor 底层的元数据库TxSQL呢?
大体上来讲,由于TDH中TxSQL是以Docker容器的形式来运行和管理的,我们需要使用 k8s/docker相关命令获取 TxSQL的端口用户名和密码,并通过TxSQL的相关命令获取master 节点地址,然后通过mysql命令登录该master节点进而通过sql查询和操作数据。
3.1 获取 TxSQL的端口,用户名和密码
3.2 获取 master 节点地址
注:这里显示的端口好17000,是TxSQL各个节点内部通信用的,通过客户端命令如Mysql等登录TxSQL时不能使用该端口,否则会报错“ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0”,如下图所示:
3.3 通过mysql命令登录该master节点进而通过sql查询和操作数据
4 相关命令汇总
kubectl get pods |grep -i txsql
kubectl exec txsql-server-txsql1-86c458896b-9777m -it bash
/usr/bin/txsql/tools/txsql.sh list
grep -i port /etc/txsql1/conf/my.cnf
cat /etc/txsql1/conf/db.properties
mysql -h 10.20.159.114 -P 13306 -uroot -pxxx
ss -anp|egrep '3316|13306|17000'
ps -ef|egrep 5407|5523|5588