Percona 的「How to Deal with XA Transactions Recovery」這篇提到 MySQL 的 XA Transaction 的復原問題。
XA Transaction 主要拿來做分散式上的事物交易,在官方文件上就有提到對應的標準:
The MySQL XA implementation is based on the X/Open CAE document Distributed Transaction Processing: The XA Specification. This document is published by The Open Group and available at http://www.opengroup.org/public/pubs/catalog/c193.htm.
不過我覺得比較有趣的是這點,Percona 直接建議不要用 5.6 的 XA:
But there is a limitation in 5.6: you can only XA commit/rollback transactions that belong to your session. That means after a crash you are out of luck. To get rid of these you need to promote a slave or perform a logical dump and restore. The best plan is to avoid the use of XA transactions with 5.6.
不過翻了 bug report,Oracle 官方的 5.7 還是沒解決,看起來是 Percona 自己 patch 掉 XDDD