mysql亿级大表 rename卡表 解决方法

背景

当初表结构设计不合理,表自增id达到2147483647,数据无法继续写入 ;重新设计新表将id int(10)更改为id bigint(20),后将原表改名。

06063.png

执行语句:

RENAME TABLE t_crowd_user TO t_crowd_user_old_0606, t_crowd_user_tmp TO t_crowd_user;

卡表,现象如下

06062.png

解决方案:

 1、 查询影响的事务 

    MySQL [db_ex_crowd]> select * from information_schema.innodb_trx;

06061.png

2、杀掉查询出的事务 

          kill 540619506;
          kill 540636346;
          kill 540609552;
          kill 540544135;

          kill 540578535;

3、再次执行语句,发现已执行成功

RENAME TABLE t_crowd_user TO t_crowd_user_old_0606, t_crowd_user_tmp TO t_crowd_user;


原因分析

   代码程序设计不合理,没有合理释放mysql会话,导致只能等待mysql wait_timeout超时释放

上一篇:在线修改大表结构pt-online-schema-change

下一篇:centos7环境下解决journal日志越来越大的问题