纠正自己对mysql的一个误解,mysql从5.0开始支持XA DataSource。Connector/J 版本要使用5.0版本,5.0以下的不支持。
Mysql Connector/J 文档中提到:
1 Connector/J 5.0 provides support for all the functionality offered by Connector/J 3.1 and includes distributed transaction (XA) support.
2 You can also use the MysqlDataSource or MysqlConnectionPoolDataSource classes in the
com.mysql.jdbc.jdbc2.optional
package, if your J2EE application server supports or requires them. Starting with Connector/J 5.0.0, the
javax.sql.XADataSource
interface is implemented via the
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
class, which supports XA distributed transactions when used in combination with MySQL server version 5.0.
mysql文档中提到
I.5. 对XA事务的限制
XA事务支持限于InnoDB存储引擎。
MySQL XA实施是针对外部XA的,其中,MySQL服务器作为资源管理器,而客户端程序作为事务管理器。未实施“内部XA”。这样,就允许MySQL服务器内的单独存储引擎作为RM(资源管理器),而服务器本身作为TM(事务管理器)。处理包含1个以上存储引擎的XA事务时,需要内部XA。内部XA的实施是不完整的,这是因为,它要求存储引擎在表处理程序层面上支持两阶段提交,目前仅对InnoDB实现了该特性。
对于XA START,不支持JOIN和RESUME子句。
对于XA END,不支持SUSPEND [FOR MIGRATE]子句。
在全局事务内,对于每个XA事务,xid值的bqual部分应是不同的,该要求是对当前MySQL XA实施的限制。它不是XA规范的组成部分。
如果XA事务达到PREPARED状态而且MySQL服务器宕机,当服务器重启后,能够继续处理事务。就像原本应当的那样。但是,如果客户端连接中止而服务器继续运行,服务器将回滚任何未完成的XA事务,即使该事务已达到PREPARED状态也同样。它应能提交或回滚PREPARED XA事务,但在不更改二进制日志机制的情况下不能这样。
分享到:
相关推荐
除了通过标准的XA接口实现分布式事务外,MySQL还提供了内部的XA支持,这意味着开发者可以直接在MySQL服务器内部使用XA功能,而无需依赖外部的事务管理器。 #### 九、总结 本文详细介绍了MySQL如何通过XA协议实现...
标题《MySQL 外部XA及其在分布式事务中的应用分析》指出了文章的核心议题,即分析MySQL数据库管理系统中外部XA事务的实现机制以及它在分布式事务环境中的应用。本文将深入讨论与理解分布式事务处理原理,MySQL XA...
在分布式系统中,MySQL支持通过X/Open XA协议实现的分布式事务,这允许跨越多个资源管理器(如不同的数据库实例)的事务一致性。分布式事务的处理分为两个主要阶段: 1. **预提交阶段(Prepare Phase)**:在这一...
本文将详细讲解如何利用Spring Boot、Atomikos、JPA(Java Persistence API)以及MySQL来实现JTA(Java Transaction API)分布式事务。 首先,Spring Boot是一个轻量级的框架,它简化了基于Spring的应用程序开发...
MySQL作为广泛使用的SQL数据库,虽然默认不支持分布式事务,但可以通过InnoDB存储引擎启用行级锁和事务支持。在SpringBoot中配置MySQL事务管理,我们通常会使用DataSourceTransactionManager,它适用于单数据库事务...
### 掌握分布式事务的艺术:深入 MySQL XA 事务处理 #### 1. 分布式事务与 XA 事务概述 ##### 1.1 分布式事务定义 分布式事务是指那些跨越多个数据库实例或者服务的事务。这类事务的管理比单一数据库上的事务更加...
1. XA协议:MySQL遵循XA分布式事务协议,这是一个两阶段提交(2PC)的扩展,分为准备阶段和提交阶段。但在高并发场景下,2PC可能导致阻塞和数据不一致。 2. InnoDB存储引擎:提供了对分布式事务的支持,通过事务...
MySQL从5.x版本开始支持XA规范,Connector/J 5.0.0也提供了XA支持。 Saga是指分布式事务处理的长事务模型, Saga事务由多个小事务组成,每个小事务都可以回滚。如果 Saga事务中的任何一个小事务失败,整个Saga事务...
在分布式事务中,MySQL需要支持XA协议,以便参与全局事务的协调。 5. **Atomikos**: Atomikos是一个开源的JTA(Java Transaction API)实现,它为分布式事务提供了强大的支持。Atomikos可以管理多个数据库和消息...
MySQL作为一个流行的开源数据库管理系统,其对分布式事务的支持始于5.0.3版本,并且仅限于InnoDB存储引擎。 分布式事务由多个事务参与者、资源管理器和事务管理器组成,这些组件分布于不同的网络节点上,相互协作...
分布式事务的解决方案包括Seata、TCC、SAGA、X/Open XA等。 分布式事务的产生是由于业务的不断扩大,用户数的增加,导致单个库或表无法存储所有数据,需要将数据分布在多个库或表中,从而引发跨数据库的事务操作...
MySQL通过支持XA接口标准来实现分布式事务处理。XA接口是X/Open组织定义的一个标准,用于在分布式环境下协调不同的资源管理器。通过XA接口,MySQL可以参与到更高级别的事务管理器中去,从而实现跨数据库系统的事务...
- **XA分布式事务协议**:定义了资源管理器(如数据库)与事务管理器之间的接口标准。MySQL 5.0.3及以上版本支持XA事务,InnoDB存储引擎提供支持。 - **Atomikos**:这是一个开源的Java事务管理器,支持JTA(Java ...
- 某些数据库如MySQL支持XA协议,可以通过中间件如Atomikos、Bitronix等实现分布式事务管理。 4. **自定义补偿逻辑** - 对于某些特定场景,也可以通过编写自定义的补偿逻辑来处理分布式事务。 #### 五、总结 ...
介绍分布式事务的定义、原则和实现原则,介绍使用Spring框架实现分布式事务的几种方式,包括使用JTA、Spring事务同步、链式事务等,并通过实战介绍其实现。除此以外还介绍了一些分布式事务相关的技术,如幂等性、...
7. **数据库支持**:许多现代数据库如MySQL、MongoDB等提供了对分布式事务的支持,例如MySQL的InnoDB存储引擎支持行级锁定,而MongoDB的多文档事务则提供了跨集合的事务处理。 8. **幂等性**:在分布式事务中,幂等...
4. XA两阶段提交:遵循ACID(原子性、一致性、隔离性和持久性)原则的传统分布式事务模型。Seata也支持这种模式,但在高并发场景下可能存在性能瓶颈。 Seata的设计理念是轻量级和自治,这意味着它尽可能减少对业务...
7. [支持子服务嵌套分布式事务(全球首创)](#支持子服务嵌套分布式事务(全球首创))。 8. 支持服务,本地事务和分布式事务混合嵌套(全球首创) 9. 支持超时3次重试,重复请求保证幂等性 10. 支持go,java语言...