首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql解锁事务运行了许多天

问mysql解锁事务运行了许多天
EN

Stack Overflow用户
提问于 2014-06-19 06:21:14
回答 1查看 242关注 0票数 2

在"show engine innodb status“中,我得到了下面一行:

代码语言:javascript
复制
MySQL thread id 1, OS thread handle 0x2b0a8fef1700, query id 860436 localhost 127.0.0.1 rdsadmin cleaning up
---TRANSACTION 334275772, ACTIVE 1403158714 sec recovered trx
ROLLING BACK 2 lock struct(s), heap size 376, 1 row lock(s), undo log entries 399300

它锁定了一个不能修改或删除的行,并且不知道该做什么。由于我使用的是aws rds,所以我甚至不能重新启动服务器

我们能做些什么?

EN

回答 1

Stack Overflow用户

发布于 2022-03-23 04:06:52

可能有点晚了,但这是我的解决办法。必须识别受影响的实际表;这是通过让MySQL操作,并从使用mysql的应用程序中调用,然后查看“显示完整处理列表”来查看查询排队的位置--我们的ncs.keywords表。

解决方案是删除该违规表,重新创建表结构,然后重新填充该表。

OS: Centos 7 .MySQL版本: 5.7

症状:在MySQL启动时,mysqld的CPU运行在100%;进程列表中没有。停止MySQL

代码语言:javascript
复制
 #] systemctl stop mysqld

不会“停止”,所以找到这个过程并手动终止

代码语言:javascript
复制
 #] kill -9 12345

编辑MySQL config /etc/my.cnf,添加行innodb_force_recovery =3,根据文档开始MySQL启动,CPU现在为0%。不发生回滚。

代码语言:javascript
复制
 #] systemctl start mysqld

删除受影响的表ncs.keywords我们不必尝试保存数据-我们通过代码重新填充数据

代码语言:javascript
复制
 #] mysql -u root -p
   > show create table ncs.keywords  [keep this syntax]
   > drop table ncs.keywords
   > exit

检查mysql;再次重新启动

代码语言:javascript
复制
  #] systemctl restart mysqld
  #] mysql -u root -p
     > [paste the 'show create' syntax to create the fresh table again]
  #] exit

从/etc/my.cnf中删除innodb_force_recovery =3,并再次重新启动MySQL。CPU现在在0%,而不是在恢复模式。

我们很好,因为不需要恢复数据。但是您可能需要先将数据从表中转储出来。

希望下次会有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24299975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档