linux

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

发布时间:5年前热度: 6241 ℃评论数:

背景

当初表结构设计不合理,表自增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超时释放

error

手机扫码访问