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 @   Harda  阅读(638)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示