问题描述;
    研发同事反应MySQL数据库有锁,检查innodb_trx时,发现有很多长时间未结束的空事务。
    这些事务的trx_mysql_thread_id都为0,因此不能通过kill   id 的方式强制关闭这些长时间未结束的僵尸事务。

SELECT
        trx_mysql_thread_id, trx_id, trx_started, sysdate(), trx_state,  trx_query
        FROM information_schema.innodb_trx t
        WHERE  (UNIX_TIMESTAMP(sysdate()) - UNIX_TIMESTAMP(t.trx_started)) > 10;

问题分析
    从trx_state 列的信息来看,这些事务都在Running 状态,但trx_query 为null。直观上无法分析出这些事务对应的SQL.

在information_schema中的PROCESSLIST, INNODB_LOCKS,INNODB_LOCK_WAITS 这几张表中也没分析出有价值的信息。

通过show engine innodb status\G  确实发现有很多Active的事务

---TRANSACTION 328393988035152, not started
    0 lock struct(s), heap size 1136, 0 row lock(s)
    ---TRANSACTION 16946872173, ACTIVE (PREPARED) 1648933 sec recovered trx
    1 lock struct(s), heap size 1136, 0 row lock(s), undo log entries 1
    ---TRANSACTION 16944705639, ACTIVE (PREPARED) 1708259 sec recovered trx
    4 lock struct(s), heap size 1136, 2 row lock(s), undo log entries 1
    ---TRANSACTION 16944693889, ACTIVE (PREPARED) 1708524 sec recovered trx
    2 lock struct(s), heap size 1136, 1 row lock(s), undo log entries 1
    ---TRANSACTION 16944693748, ACTIVE (PREPARED) 1708549 sec recovered trx
    1 lock struct(s), heap size 1136, 0 row lock(s), undo log entries 1
    正常的事务不应该执行这么长时间,而不被发现。有没有可能是XA事务呢?
    通过xa recover;  检查 , 果然发现很多XA事务。

XA RECOVER;
        +----------+--------------+--------------+------------------------------------------------------+
        | formatID | gtrid_length | bqual_length | data                                                 |
        +----------+--------------+--------------+------------------------------------------------------+
        |        1 |           32 |            8 | 5685c69b0df34ccc94e9da437c399344xdb1_002             |
        |        1 |           32 |           10 | 84e2f7d6fd674f5592f135415e9c0ad4idcent_002           |
        |        1 |           32 |            9 | f0eedc6c38894e88837771f019ddc090imail_002            |
        |        1 |           32 |           10 | 6677f0102a6c4a0aab2c4696bd20d690idcent_002           |
        +----------+--------------+--------------+------------------------------------------------------+

如何释放这些长时间未提交的XA事务呢?

通过MySQL官方文档,最终决定采用rollback的方式,回滚掉这些XA事务。

xa rollback '5685c69b0df34ccc94e9da437c399344','xdb1_002',1;

Query OK, 0 rows affected (0.00 sec)

依次回滚这些长时间未结束的XA事务, 再次检查innodb_trx 未发现相关的事务信息。
---------------------
作者:lwei_998
来源:CSDN
原文:https://blog.csdn.net/lwei_998/article/details/83149231
版权声明:本文为博主原创文章,转载请附上博文链接!

MySQL 空事务的更多相关文章

  1. MySQL使用空事务解决slave从库errant问题

    MySQL集群一般部署为主从架构,主库专门用于写入数据,从库用于读数据. 异常情况下,在从库上写入数据,就会出现主从数据不一致问题,称为errant. 如果从库上的这些数据主库上已经有了,或者主库不需 ...

  2. MySQL数据库事务剖析

    MySQL数据库事务剖析 事务就是一组原子性的SQL查询,是一个独立的执行单元.事务内的语句,要么全部执行成功,要么全部执行失败. 1.事务的标准特征 一个运行良好的事务处理系统,必须具备原子性.一致 ...

  3. mysql 函数 事务

    mysql 中提供了许多内置函数 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符. 对于一个包含五个二字节字符集, LENGTH()返回 ...

  4. MySQL的事务和锁

    MySQL的事务和锁   阅读目录 什么是事务 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再 ...

  5. 一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...

  6. 12、mysql的事务日志

    mysql的事务日志 事务有4种特性:原子性.一致性.隔离性和持久性.那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由锁机制实现. 事务的原子性.一致性和持久性由事务的redo日志和und ...

  7. MySQL 数据库事务与复制

    好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ...

  8. Mysql分布式事务

    关于Mysql分布式事务介绍,可参考:http://blog.csdn.net/luckyjiuyi/article/details/46955337 分为两个阶段:准备和执行阶段.有两个角色:事务的 ...

  9. mysql的事务和select...for update

    一.mysql的事务mysql的事务有两种方式:1.SET AUTOCOMMIT=0;也就是关闭了自动提交,那么任何commit或rollback语句都可以触发事务提交;如果SET AUTOCOMMI ...

随机推荐

  1. Node.js+Express框架+Mongo学习(一)第一个node.js实例

    1.在桌面新建一个空的文件夹,比如叫node,当然也可以在其它地方新建. 2.命令行进入到所新建的文件夹的目录,下载Express框架,再在这个文件夹里新建一个叫final的项目 3.在项目(fina ...

  2. 第07组 Beta冲刺(4/4)

    队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:学习了很多东西 Github签入记录 接下来的计划:继续学习 还剩下哪些任务:后端部分 燃尽图 遇到的困难:自己太菜了 收获和疑问: ...

  3. 【LeetCode】寻找两个有序数组的中位数【性质分析+二分】

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...

  4. linux根据进程名终止进程

    2017年09月25日 19:44:32 aladdin_sun 阅读数 5235   linux根据进程名终止进程 实验环境 操作系统:CentOS Linux release 7.3.1611 ( ...

  5. 【NOIP2017】宝藏 题解(状压DP)

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nnn 个深埋在地下的宝藏屋, 也给出了这 nnn 个宝藏屋之间可供开发的m mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中 ...

  6. SAS学习笔记59 OPTIONS系统选项

    带VALUE选项的OPTIONS过程将指定选项的值.范围及该值如何设置的信息打印到日志窗口 在日志窗口打印的输出如下图所示 将GETOPTION函数作为%SYSFUNC宏函数的参数,从而获取系统选项设 ...

  7. Mybatis @ResultMap复用@Result

    @ResultMap复用@Result: 可以简写成:@ResultMap("userMap")

  8. INNODB 统计信息采集

    SHOW GLOBAL VARIABLES LIKE 'INNODB_STATS_PERSISTENT_SAMPLE_PAGES'; ALTER TABLE TABLE_NAME STATS_SAMP ...

  9. System.ComponentModel.Win32Exception (0x80004005): 无效的窗口句柄。

    原文:System.ComponentModel.Win32Exception (0x80004005): 无效的窗口句柄. 在 WPF 获取鼠标当前坐标的时候,可能会得到一个异常:System.Co ...

  10. OO第四单元(UML)单元总结

    OO第四单元(UML)单元总结 这是OO课程的第四个单元,也是最后一个单元.这个单元只有两次作业,相比前三个单元少一次作业.而且从内容上讲这个单元的作业目的以了解UML为主,所以相对前三个单元比较简单 ...