MySQL kill进程后出现killed

一.问题描述

拷贝一个大表的表数据的时候,等待时间太久,就在前台通过CTRL+C的方式停掉了

 

 

 通过show processlist查找到对应的进程,然后进行kill,结果kill完了,依旧在进程列表里,只是被标记为killed

 

 

 

二.解决方案

查看innodb的事务表,发现刚才kill的语句正在进行回滚操作。
trx_rows_modified 代表锁影响的行数,当数值为0时,锁将会释放

 

 

 最好的办法就是等待innodb自己将事务进行回滚,除此之外,也可以innodb_force_recovery=3不执行事务回滚操作 启动数据库 (慎用)

INNODB_TRX表列的备注:

 

 

 

三.额外的一个报错

在回滚的过程中,错误日志报错了:

 

 

 

 

 

 只能强制杀进程了

 

 

 我以为强制杀进程后,启动mysql就没问题了,结果登陆不上,错误日志报错如下:

 

 

 杀掉所有mysql相关的进程,然后启动mysql服务

 

 

 

四.启用innodb_force_recovery=3

通过第三步,我将mysql服务正常启动,但是依旧无法创建表

 

 

 此时查看进程,没发现异常

 

 

 然后查看innodb的事务表 innodb_trx:
连着查询了几次,trx_rows_modified的值没有发生变化,初步判断是上次mysql实例异常crash后出现了问题。
从performance_schema.data_locks中可以看到锁的都是系统的表。

 

 

 

 

 

 

 

 修改配置文件,然后重启mysqld服务

 

 

 

 

 

 

 相关:https://blog.csdn.net/u010520724/article/details/117559856

           https://blog.csdn.net/m0_37827567/article/details/82979767

           https://blog.csdn.net/zhang123456456/article/details/72854467

           

 

posted @ 2022-12-16 09:26  Harda  阅读(482)  评论(1编辑  收藏  举报