tidb v3.0 kill 和mysql 兼容问题

这种设计思路

TiDB 从 v6.1.0 起新增 Global Kill 功能(由 enable-global-kill 配置项控制,默认启用)。启用 Global Kill 功能时,KILL 语句和 KILL TIDB 语句均能跨节点终止查询或连接,且无需担心错误地终止其他查询或连接。当你使用客户端连接到任何一个 TiDB 节点执行 KILL 语句或 KILL TIDB 语句时,该语句会被转发给对应的 TiDB 节点。当客户端和 TiDB 中间有代理时,KILL 及 KILL TIDB 语句也会被转发给对应的 TiDB 节点执行。

对于 TiDB v6.1.0 之前的版本,或未启用 Global Kill 功能时:

KILL 语句与 MySQL 不兼容,负载均衡器后面通常放有多个 TiDB 服务器,这种不兼容有助于防止在错误的 TiDB 服务器上终止连接。你需要显式地增加 TIDB 后缀,通过执行 KILL TIDB 语句来终止当前连接的 TiDB 实例上的其他连接。
强烈不建议在配置文件里设置 compatible-kill-query = true,除非你确定客户端将始终连接到同一个 TiDB 节点。这是因为当你在默认的 MySQL 客户端按下 ctrl+c 时,客户端会开启一个新连接,并在这个新连接中执行 KILL 语句。此时,如果客户端和 TiDB 中间有代理,新连接可能会被路由到其他的 TiDB 节点,从而错误地终止其他会话。
KILL TIDB 语句是 TiDB 的扩展语法,其功能与 MySQL 命令 KILL [CONNECTION|QUERY] 和 MySQL 命令行 ctrl+c 相同。在同一个 TiDB 节点上,你可以安全地使用 KILL TIDB 语句。

描述

  1. kill query 和 kill [connection] 不生效 请使用kill tidb
  2. 如果你的tidb 版本较低,你show processlist 和 kill tidb +pid 只能 对当前这个server生效,其余server 的connect 信息你查不到 更杀不了
posted @ 2023-01-10 21:02  萱乐庆foreverlove  阅读(95)  评论(0编辑  收藏  举报