通过obproxy连接oceanbase集群管理连接
一、连接映射关系
当客户端通过 OBProxy 与 OBServer 建立连接时,你的客户端与 OBProxy 之间存在一个物理连接,OBProxy 与 OBServer 可能存在1-N(N是observer数量)物理连接。 其中 Client 与 OBProxy 的连接称为客户端连接或前端连接,OBProxy 与 OBServer 之间的连接称之为服务端连接或后端连接。
二、几个id总结
cs id:obproxy 内部标记每个 client 端会话( client Session)的 id 号
ss id:obproxy 内部标记每个 Server 端会话( Server Session)的 id 号
connection_id:整个 OceanBase 集群内部标记的每个 Client 的 id 号
proxy_sessid:整个 OceanBase 集群内部标记的每个 obproxy 的 ID 号。
关系如下图所示:
三、kill 会话
点击查看代码
show processlist;
# 这个命令输出结果字段介绍:
id:就是 cs id
trans_count:传输的事务数量
svr_session_count:obproxy到observer的会话数量
show proxysession;
# 这个命令输出结果字段介绍:
proxy_sessid:就是上面介绍的proxy_sessid
id:也是 cs id
trans_count:传输的事务数量
svr_session_count:obproxy到observer的会话数量
show full processlist;
# 这个命令输出结果字段介绍:
id:就是connection id
host:obproxy所在节点的ip
ip:observer所在节点的ip
show processlist 和 show proxysession 看到的是当前客户端到当前obproxy的连接,
show full processlist 看到的是所有客户端到OB集群的连接,
要想kill 会话,则执行以下命令:
点击查看代码
show full processlist;# 找到id
kill id; # kill会话和sql
kill query id; # 只kill sql,不kill会话
注意,kill 会话可能会遇到下面的报错:
root@sys(st1-ob01) [oceanbase]> kill 3221986204;
ERROR 1094 (HY000): Unknown thread id: 3221986204
这个报错是因为 要kill 的 会话不在当前的obproxy 中,是在别的obproxy中(一般OB集群都会有多个obproxy,多个obproxy上面还有haproxy),所以要到 指定的obproxy 中 kill 该会话,查看会话在哪个obproxy中见下方sql:
点击查看代码
# 查询该 会话在哪个obproxy中:
show full processlist; # 有 id
select ID,PROXY_SESSID,USER,TENANT,SVR_IP,HOST,USER_CLIENT_IP from oceanbase.gv$ob_processlist where id= 3222514519;
host 字段值 即是 obproxy 的ip,然后到 该 obproxy 上面执行 kill 3221986204 即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix