故障案例--DDL中断后,再次执行失败

来源:互联网 发布:网络教研平台 编辑:程序博客网 时间:2024/05/20 21:46

现象

第一次执行ddl操作时由于oom导致中断,再次执行这个ddl报错

ALTER TABLE `Db_Order4` ADD `trackNumber1` VARCHAR(45) DEFAULT NULL COMMENT '内部单号' AFTER `trackNumber`;

ERROR 1050 (42S01): Table 'mabang_order/#sql-ib9302' already exists

处理方法

1 create table tmp like table_name;
2 alter table tmp ADD `trackNumber1` VARCHAR(45) DEFAULT NULL COMMENT '内部单号' AFTER `trackNumber`;
3 cp tmp.frm "#sql-ib9302.frm"
4 改权限为mysql chown mysql:mysql "#sql-ib8665.frm"
5 drop table `#mysql50##sql-ib9302`
6 检查下主从状态,跳过错误

7 再次执行ALTER TABLE `Db_Order4`  ADD `trackNumber1` VARCHAR(45) DEFAULT NULL COMMENT '内部单号' AFTER `trackNumber`;


故障原因

应该是ddl时由于db宕机等非正常关闭导致无法全部回滚,残留了一些临时文件,具体是个什么流程未知

0 0
原创粉丝点击