DDL操作无法执行和取消

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】v6.5.1
【遇到的问题:问题现象及影响】

表数据量大概1500条左右,执行alter操作修改表字段类型,一直卡主;
ALTER TABLE xxxx MODIFY COLUMN cost decimal(10,2) DEFAULT 0.00 NOT NULL;

很长时间没有执行完,就执行了 admin cancel ddl jobs 78841;取消ddl任务,返回结果是成功
mysql> admin cancel ddl jobs 78841;
±-------±-----------+
| JOB_ID | RESULT |
±-------±-----------+
| 78841 | successful |
±-------±-----------+
1 row in set (0.00 sec)

ddl job状态变成了cancelling

执行ddl操作的session的线程也无法kill

kill tidb 4565996912247287715;

【附件:截图/日志/监控】

大概率还是metalock导致的卡住,过段时间就好了,我之前遇到过一次,等了3、4个小时状态正常了。不过好在不影响DML的写入和读取

1 个赞

重启所有tidb server组件就行

简单你每台tidb上去重启一下tidb server service tidb stop service tidb start

建议6.5还是把tidb_enable_metadata_lock设置为OFF

1、 检查mysql.tidb_mdl_view kill阻塞进程
2、 关闭所有tidb server , 然后再启动

1 个赞

最近看到好多ddl阻塞的 全部都是重启tidb搞定的

查看mysql.tidb_mdl_view,没有看到有阻塞的线程

目前查看mysql.tidb_mdl_view这个表,没有阻塞的线程

需要关闭多有的tidb server,然后在重启?可以每一个tidb server进行restart吗?

关闭所有的,一个个关闭一般解决不了

有简单的重启办法
tiup cluster restart 集群名 -R tidb

好的,多谢

tidb server重启一下

大家都出的大招,重启

请问重启大法有用了不

有用的,但是需要全部关闭后重启

1 个赞

了解了,多谢

万能的重启大法