MySQL xa事务问题说明

    MySQL主库已接受到xa commit通知,xa commit未完成前,kill -9 杀掉MySQL主库,再启动MySQL主库,主库出现悬挂事务,而从库该分布式事务已提交。主库此时需要执行xa commit语句,提交分布式事务,这个操作同步到从库后,会导致从库sql应用进程报错,提示找不到该分布式事务。

    2、只有从库出现悬挂事务

    以上两种情况,主库的xa事务状态,跟binlog记录的事务状态不一致。在MySQL官方文档找到解释,MySQL异常关闭,有可能导致数据库状态和binlog不一致。这些bug,在非正常关闭MySQL时才出现,正常关闭mysql不会出现这个问题。如果出现xa事务悬挂,可以用自动处理。

    我们对MySQL 5.7.21 XA bug的详细验证主要包括从外部看到的现象和代码层分析两部分:

    MySQL 5.7.21 XA bug 代码层分析