在"show engine innodb status“中,我得到了下面一行:
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,所以我甚至不能重新启动服务器
我们能做些什么?
发布于 2022-03-23 04:06:52
可能有点晚了,但这是我的解决办法。必须识别受影响的实际表;这是通过让MySQL操作,并从使用mysql的应用程序中调用,然后查看“显示完整处理列表”来查看查询排队的位置--我们的ncs.keywords表。
解决方案是删除该违规表,重新创建表结构,然后重新填充该表。
OS: Centos 7 .MySQL版本: 5.7
症状:在MySQL启动时,mysqld的CPU运行在100%;进程列表中没有。停止MySQL
#] systemctl stop mysqld不会“停止”,所以找到这个过程并手动终止
#] kill -9 12345编辑MySQL config /etc/my.cnf,添加行innodb_force_recovery =3,根据文档开始MySQL启动,CPU现在为0%。不发生回滚。
#] systemctl start mysqld删除受影响的表ncs.keywords我们不必尝试保存数据-我们通过代码重新填充数据
#] mysql -u root -p
> show create table ncs.keywords [keep this syntax]
> drop table ncs.keywords
> exit检查mysql;再次重新启动
#] 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%,而不是在恢复模式。
我们很好,因为不需要恢复数据。但是您可能需要先将数据从表中转储出来。
希望下次会有帮助!
https://stackoverflow.com/questions/24299975
复制相似问题