使用 xa 进行测试时, 对 MySQL 进行了一些 xa 各阶段锁定试验, 后来出现卡死情况就杀掉了线程, 重启了 MySQL 服务. 重启后发现插入, 修改数据都正常, 但无法修改表结构, 修改表结构就处于卡死状态, 过一分多钟报超时错误.
查询 innodb_trx 表, 发现有两个事务处于运行中, 网上资料都是说按照 trx_mysql_thread_id 找到对应进程杀掉, 但我这里是 0, 没有进程 id, 没法杀, 而且它是重启 MySQL 服务后自动就运行的两个事务.
还有资料说, 通过 xa recover 看当前 xa 事务, 然后回滚或提交, 但我这里通过 xa recover 查到的结果是空的. 所以也不能解决.
大概推断应该跟 redo undo 有关系, xa 事务异常后, MySQL 服务重启检测到了这两个事务就自动运行了, 这是我的猜测, 不知道对不对.
但我现在不知道怎么解决点这两个运行中的事务, 求助各位大神, 给点建议.
图片发自简书 App
来源: http://www.jianshu.com/p/b38f9001b3c1