一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【问题复现路径】DDL操作无响应,查看admin show ddl jobs后用ADMIN CANCEL DDL JOBS 86307终止DDL,状态一直cancelling卡死,集群3个tidbserver尝试重启其中两个,最后一个生产环境比较重要不支持重启,OWNER在重启tidbserver后会跳到另一个tidbserver,导致关于这张表的所有DDL操作无法进行
表数据不多,70多条
一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【问题复现路径】DDL操作无响应,查看admin show ddl jobs后用ADMIN CANCEL DDL JOBS 86307终止DDL,状态一直cancelling卡死,集群3个tidbserver尝试重启其中两个,最后一个生产环境比较重要不支持重启,OWNER在重启tidbserver后会跳到另一个tidbserver,导致关于这张表的所有DDL操作无法进行
表数据不多,70多条
手头上有机器不
先扩2个 TiDB 节点
没,生产环境的没有额外机器了
你把部署情况说一下,多少台机器,布了多少个tidb pd tikv
看一下数据库的日志,有没有报错信息
全部重启才行
先确认 DDL 卡在哪个阶段
先查 job 详细信息:
ADMIN SHOW DDL JOBS 10;
重点看:
STATE
SCHEMA_STATE
TYPE
QUERY
DDL Owner 节点切换后,原僵死 Job 的元数据未正常清理,导致新 Owner 无法接管该表的 DDL 锁
试试如下两个方法:
方法1、数据库客户端执行如下sql:
UPDATE mysql.tidb_ddl_job
SET state = ‘cancelled’
WHERE job_id = 86307;
方法2、执行如下命令:
ADMIN CANCEL DDL JOB 86307 FORCE;
先看看是不是元数据锁阻塞了 DDL 执行,https://docs.pingcap.com/zh/tidb/stable/metadata-lock/#元数据锁的可观测性
使用 ADMIN RESUME DDL OWNER 重新选举 Owner
数据量这么少,重建表不就可以了吗
新的 Owner 节点可能无法正确接管或清理那个 卡死 的取消任务
这么小的表,应该还是锁的问题,应该先把锁处理了,ddl语句就过去了
处理掉锁之后可以过了吗