Proxy相关资料
Proxy日志文档
Proxy日志存储位置:/data/tdsql_run/端口/gateway/log/
proxy是tdsql的核心组件之一,主要提供了sql转写,sql分发,鉴权,结果聚合,结果过滤等功能。
常见的日志主要是inter_instance_xxx sql_instance_xxx slow_sql_instance_xxx() 等
1、Proxy日志内容介绍
a、接口日志interf_instance
接口日志主要存储了由客户端传输给服务器的原始信息,包括客户端,后端服务器等,日志格式以&和空格为分隔符。
[2021-08-12 15:55:58 386568] INFO topic=group_1623641961_38567&tid=57332&con=0x7ff118c3e000&
qid=4751805-1628054013-934461&splited=0&clientIP=10.129.213.233:14515&
proxyHost=10.129.213.17:15016&sql_size=166&sql_type=3&sub_sql_type=0&
sql=select name, sub_system_code, system_code from tsp_mutex where name%
3D'ksys_plrenw_health_check_mutex' and sub_system_code%3D'dept_bat'
and system_code%3D'dept' for update&db=core_acc&user=appuser&
10.129.213.20:4007=2&backend=10.129.213.20:4007&autocommit=0&
new_connnum=0&conn_tc=0&select_result_sum=1&affect_num=0&
hold_conns=1&resultcode=0&mc_request=0&timecost=0
[2021-08-12 15:55:58 386568] | 日志记录时间 |
INFO | 日志级别(INFO,WARING,ERROR) |
topic=group_1623641961_38567 | 对应的实例 |
tid=57332 | 线程id |
con=0x7ff118c3e000 | 对应的是proxy处理过程中连接对象的地址,和tid一起用于定位用户连接生命周期内的所有操作 |
qid=4751805-1628054013-934461 | proxy生成的事务id |
splited=0 | 0表示原始查询,1表示proxy改写后的查询 |
clientIP=10.129.213.233:14515 | 客户端proxy的ip和端口 |
proxyHost=10.129.213.17:15016 | 连接proxy的ip和端口 |
sql_size=166 | 传输的sql长度 |
sql_type=3 | 这个是用户在握手后发送的请求类型,常用的有3(COM_QUERY),22和23(对应PREPARE和EXECUTE) |
sub_sql_type=0 | 子查询类型,一般都是0(select) |
sql=select name, sub_system_code, system_code from tsp_mutex where name%3D'ksys_plrenw_health_check_mutex' and sub_system_code%3D'dept_bat' and system_code%3D'dept' for update | 执行的sql语句 |
db=core_acc | 数据库名称 |
user=appuser | 数据库用户 |
10.129.213.20:4007=2 | 数据库的ip和端口 |
backend=10.129.213.20:4007 | 后端数据库的ip和端口 |
autocommit=0 | 是否自动提交 |
new_connnum=0 | 新建连接的数量 |
conn_tc=0 | 新建连接的花费的时间 |
select_result_sum=1 | 查询得到的结果集数量 |
affect_num=0 | 操作影响的行数 |
hold_conns=1 | 请求结束后,任然占用的连接数量。非事物请求,应该是0 |
resultcode=0 | 错误码 |
mc_request=0 | 是否开启全局一致性读 |
timecost=0 | sql耗时 |
b、日常SQL日志sql_instance
sql通过proxy层改写。分发到各个db节点执行,并取出数据。sql日志中记录了在set中具体执行的sql。
日志以空格为分隔符,以:为赋值符号
[2021-08-11 23:59:59 661067] DEBUG tid:64744 con:0x7f8595b23800
qid:8624534-1628419255-1298688 user:ksrcbadmin C:132.7.112.100:59585
G:132.7.100.3:42978 S:132.7.100.12:4009 timecost:0.979(ms) inj_id:1
sql:3,387 "/*2:8624534-1628419255-1298688*/select name, sub_system_code,
system_code from tsp_mutex where name='ksys_plrenw_health_check_mutex'
and sub_system_code='dept_bat' and system_code='dept' for update"
[2021-08-11 23:59:59 661067] | 日志记录时间 |
DEBUG | 日志级别(DEBUG、WARNING、ERROR) |
tid:64744 | 线程id |
con:0x7f8595b23800 | 对应的是proxy处理过程中连接对象的地址,和tid一起用于定位用户连接生命周期内的所有操作 |
qid:8624534-1628419255-1298688 | proxy生成的事务id |
user:ksrcbadmin | 用户名 |
C:132.7.112.100:59585 | 客户端连接ip和端口 |
G:132.7.100.3:42978 | 网关连接ip和端口 |
S:132.7.100.12:4009 | 数据库服务器ip和端口 |
timecost:0.979(ms) | 语句耗时 |
inj_id:1 | 这个是proxy拆分sql语句之后,标记这个语句时属于原始语句生成的,还是proxy自己补充的(比如xastart) |
sql:3,387 "/2:8624534-1628419255-1298688/select name, sub_system_code, | 执行的sql语句 |
c、慢查询日志slow_log
慢查询日志主要存储了ddl语句及响应时间超过1s的dml语句
# Time: 210910 16:33:17 432697
# User@Host: mc_test[mc_test] @ [10.0.1.35:43532]
# Backend_host: 10.0.1.12:4001,10.0.1.12:4002
# Thread_id: 1 Schema: test QC_hit: DEBUG
# Query_time: 0.214000 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
/*4194305-1631262696-7*/create table t1(acct_id bigint(20) primary key, ammount bigint(20)) shardkey=acct_id;
Time: 210910 16:33:17 432697 | 时间戳,sql执行的时间 |
User@Host: mc_test[mc_test] @ [10.0.1.35:43532] | 用户名,mysql用户比较特殊,是用户+host来进行权限控制 |
Backend_host: 10.0.1.12:4001,10.0.1.12:4002 | 后台执行的db节点地址 |
Thread_id: 1 | 线程id |
Schema: test | 数据库名 |
QC_hit: DEBUG | 查询级别 |
Query_time: 0.214000 | sql执行消耗的时间 |
Lock_time: 0.000000 | sql执行过程中获取锁消耗的时间 |
Rows_sent: 0 | 推送数据行数 |
Rows_examined: 0 | 扫描数据行数 |
/4194305-1631262696-7/create table t1(acct_id bigint(20) primary key, ammount bigint(20)) | 具体执行的sql语句 |