DBTool工具是GoldenDB系统提供给系统操作人员和运维人员的命令行工具。通过DBTool工具命令手册,可以帮助系统操作人员和运维人员快速对系统内部的检查运行状态、动态更改参数、问题定位和故障恢复等。
DBTool工具中命令的语法格式:
dbtool -ModuleName -ActionName [options]
ModuleName:操作的实施对象,支持全称和缩写,不同模块通过不同用户执行。
2.1 版本信息查看
dbtool -v

2.2 密码加密
dbtool -eaes string将字符串进行aes加密:
[ahmanager@gdb1 ~]$ dbtool -eaes Gdb@2023
The len of input stream is:8
The input stream is as follows:Gdb@2023
The len of output stream is:24
The output stream is as follows:1cz77XR3uZbs/2HMM+xOsA==
2.3 动态加载配置项
dbtool -ModuleName -load-config
如之前改DN节点主机密码执行dbtool -dbagent -lc使配置生效。
2.4 进程状态查看
dbtool -module -state


2.5 进程信息查看
dbtool -module -showmore

2.6 查看网元链路
查看与相关网元的链路,可以查看各个网元外部的链接端口和状态:
dbtool -ModuleName -l[ink]s[tate]
ModuleName包括mds,pm,cm,gtm,p,dbagent,loadserver

2.7 查看指定级别日志
dbtool -g[rep]l[og]l[evel] logfile loglevel
logfile:日志文件名,在log目录外执行需提供日志文件路径。
loglevel :日志级别{ERROR,WARN,INFO},默认ERROR。
Su - ahdb2
Cd log
dbtool -gll dbagent.log WARN

2.8 查看线程实时消息积压
dbtool -ModuleName -thdmsg


2.9 proxymanager重新获取全量元数据
因为网络异常原因导致ProxyManager与MetaDataServer中元数据不一致可以通过命令实时更新本地的元数据信息即可。
dbtool -pm -gm
(gm :getmetadata缩写,获取元数据)

2.10 异常CN活跃事务回滚
当某个CN异常无法恢复后,其上未完成的活跃事务需要回滚,可在ProxyManager上通过下述命令对该异常CN上的活跃事务进行回滚。
dbtool -p[roxy]m[anager] -recover-proxy proxyid

其中proxyid查询方法如下:
GTM节点su - ahgtm1
dbtool -gtm -sp

2.11 查看某个gtid是否活跃
dbtool -m[eta]d[ata]s[erver] -activetrans -c clusterId -gtid gtid

2.12 禁用指定集群上的库表
dbtool -m[eta]d[ata]s[erver] -set-table-status clustereid tablename 1
1表示禁用,2表示启用。


2.13 检车主备库数据是否一致
dbtool -c[luster]m[anager] -c[heck-]c[onsience] -c[luseterID]= -g[roupID]=
-c[heck-]d[atabases]= -i[ngore-]d[atabases]= -c[heck-]t[ables]= -i[gnore-]t[ables]= -chunk=
-c[heck-]d[atabases]=: 需要检测的库,可以省略;
-i[ngore-]d[atabases]=:不需要检测的库,可以省略;
-c[heck-]t[ables]=: 需要检测的表,可以省略;
-i[gnore-]t[ables]=:不需要检测的表,可以省略;
-chunk=:检测时需要的块大小,可以省略。

2.14 查询集群元数据信息
dbtool -cm -qc 1

2.15 查询集群有几个分片
dbtool -cm -qcg

2.16 CN相关命令(ahdbproxy1用户执行)
1)查看cn信息
dbtool -p -m -i

2)查看cn所在集群的信息
dbtool -p -m -ci

3)查看cn绑定服务端口信息
dbtool -p -m -conninfo

ConnID :服务端口ID。
ConnName :服务端口名称。
Port :服务端口监听端口。
ClusterID :服务端口所属集群ID。
MasterWeight:本地权重。
LocalWeight:同城权重。
IntraWeight:异地权重。
ReadRule :服务端口读写分离模式,"0"表示不开启,"1"表示本地同城查询,"2"表示异地查询。
MaxClient :服务端口客户端最大连接数。
DBPoolSize :当前服务端口与DN间最大空闲连接数。
Status :服务端口状态。
4)表解锁
dbtool -p[roxy] -m[anager] -u[nlock]t[able] clusterId databasename.tablename
如:
dbtool -p -m -ut 1 wsx.t1

5)查询客户端会话信息
dbtool -p[roxy] -[e]x[ec] -c[lient]

dialogid :CN的会话号,对应链路id。
client_host :客户端地址端口。
listen_port :CN监听端口号。
trx_active:当前活跃事务数。
sid :当前会话分配的事务id(session id)。
sidstage :当前会话的执行状态。
sqltype :当前会话处理的sql语句类型。
sendevent :当前会话最后发送的事件号。
recvevent :当前会话最后收到的事件号。
gtid :当前会话使用的gtid。
gtidstamp :当前会话使用的gtid创建时间。
6)查看当前正在处理的事务
dbtool -p[roxy] -[e]x[ec] -s[ession]

getnum :CN申请的总事务个数。
freenum :CN释放的总事务个数。
max reset get :申请事务计数器达到最大值后重置次数。
max reset free :释放事务计数器达到最大值后重置次数。
unfreed sid :当前正在使用的事务id。
7)查询执行时长超过指定时间的事务
dbtool -p[roxy] -[e]x[ec] -s[ession] [duration]
如:
dbtool -p -x -s 10

sid :事务id。 duration :事务持续时长。 sidstage :事务当前执行状态。 dlgid :会话号。 dlgsource :会话申请源。 coreid :链路id。 port :CN端口号。 sqltype :当前事务执行的sql语句类型。 gtid :当前事务申请的gitd。 sidstamp :当前事务创建时间。
8)查看超时会话
dbtool -p[roxy] -[e]x[ec] -d[elay] [1]
如:
dbtool -p -x -d 5
打印CN进程当前正在执行且执行时间超过指定时间阀值的会话和本会话的执行时间。单位秒。

9)输出执行时间超过10毫秒的sql会话
dbtool -p[roxy] -[e]x[ec] -[show]sq[l]i[nfo] duration
如:
dbtool -p -x -sqi 10

10)结束指定会话的sql
dbtool -p[roxy] -[e]x[ec] -t[erminate]s[ql] dialogid
dialogid:指定的会话id。
11)输出活跃时间超过10毫秒的事务
dbtool -p[roxy] -[e]x[ec] -s[how]a[ctive]t[rans] duration
查看超过duration毫秒还未执行结束的事务信息。
如:
dbtool -p -x -sat 10

12)根据dialogid杀掉事务
dbtool -p -x -kat DialogID

本文作者:事业二部(上海新炬中北团队)
本文来源:“IT那活儿”公众号





