| <?xml version="1.0" encoding="utf-8" standalone="yes"?> |
| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> |
| <channel> |
| <title>分布式事务 on ShardingSphere</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/</link> |
| <description>Recent content in 分布式事务 on ShardingSphere</description> |
| <generator>Hugo -- gohugo.io</generator> |
| <language>en-us</language> |
| |
| <atom:link href="https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/index.xml" rel="self" type="application/rss+xml" /> |
| |
| |
| <item> |
| <title>使用 Java API</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/java-api/</link> |
| <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> |
| |
| <guid>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/java-api/</guid> |
| <description>背景信息 使用 ShardingSphere-JDBC 时,可以通过 API 的方式使用 XA 和 BASE 模式的事务。 |
| 前提条件 引入 Maven 依赖 |
| &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-jdbc-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 的 Narayana模式时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-narayana&lt;/artifactId&gt; &lt;version&gt;${project.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 BASE 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-base-seata-at&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; 操作步骤 设置事务类型 执行业务逻辑 配置示例 TransactionTypeHolder.set(TransactionType.XA); // 支持 TransactionType.LOCAL, TransactionType.XA, TransactionType.BASE try (Connection conn = dataSource.getConnection()) { // 使用 ShardingSphereDataSource conn.</description> |
| </item> |
| |
| <item> |
| <title>使用 Spring Boot Starter</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/spring-boot-starter/</link> |
| <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> |
| |
| <guid>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/spring-boot-starter/</guid> |
| <description>背景信息 使用 ShardingSphere-JDBC 时,可以通过 spring boot starter 的方式使用。 |
| 前提条件 引入 Maven 依赖 |
| &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-jdbc-core-spring-boot-starter&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 的 Narayana模式时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-narayana&lt;/artifactId&gt; &lt;version&gt;${project.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 BASE 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-base-seata-at&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; 操作步骤 配置事务类型 使用分布式事务 配置示例 配置事务类型 @Configuration @EnableTransactionManagement public class TransactionConfiguration { @Bean public PlatformTransactionManager txManager(final DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean public JdbcTemplate jdbcTemplate(final DataSource dataSource) { return new JdbcTemplate(dataSource); } } 使用分布式事务 @Transactional @ShardingSphereTransactionType(TransactionType.</description> |
| </item> |
| |
| <item> |
| <title>使用 Spring 命名空间</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/spring-namespace/</link> |
| <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> |
| |
| <guid>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/spring-namespace/</guid> |
| <description>背景信息 使用 ShardingSphere-JDBC 时,可以通过 spring namespace 的方式使用。 |
| 前提条件 引入 Maven 依赖 |
| &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-jdbc-core-spring-namespace&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 的 Narayana模式时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-narayana&lt;/artifactId&gt; &lt;version&gt;${project.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 BASE 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-base-seata-at&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; 操作步骤 配置事务管理器 使用分布式事务 配置示例 配置事务管理器 &lt;!-- ShardingDataSource 的相关配置 --&gt; &lt;!-- ... --&gt; &lt;bean id=&#34;transactionManager&#34; class=&#34;org.springframework.jdbc.datasource.DataSourceTransactionManager&#34;&gt; &lt;property name=&#34;dataSource&#34; ref=&#34;shardingDataSource&#34; /&gt; &lt;/bean&gt; &lt;bean id=&#34;jdbcTemplate&#34; class=&#34;org.</description> |
| </item> |
| |
| <item> |
| <title>Atomikos 事务</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/atomikos/</link> |
| <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> |
| |
| <guid>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/atomikos/</guid> |
| <description>背景信息 Apache ShardingSphere 提供 XA 事务,默认的 XA 事务实现为 Atomikos。 |
| 操作步骤 配置事务类型 配置 Atomikos 配置示例 配置事务类型 Yaml: |
| - !TRANSACTION defaultType: XA providerType: Atomikos SpringBoot: |
| spring: shardingsphere: props: xa-transaction-manager-type: Atomikos Spring Namespace: |
| &lt;shardingsphere:data-source id=&#34;xxx&#34; data-source-names=&#34;xxx&#34; rule-refs=&#34;xxx&#34;&gt; &lt;props&gt; &lt;prop key=&#34;xa-transaction-manager-type&#34;&gt;Atomikos&lt;/prop&gt; &lt;/props&gt; &lt;/shardingsphere:data-source&gt; 配置 Atomikos 可以通过在项目的 classpath 中添加 jta.properties 来定制化 Atomikos 配置项。 |
| 详情请参见 Atomikos 官方文档 。 |
| 数据恢复 在项目的 logs 目录中会生成 xa_tx.log, 这是 XA 崩溃恢复时所需的日志,请勿删除。</description> |
| </item> |
| |
| <item> |
| <title>Narayana 事务</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/narayana/</link> |
| <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> |
| |
| <guid>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/narayana/</guid> |
| <description>背景信息 Apache ShardingSphere 提供 XA 事务,集成了 Narayana 的实现。 |
| 前提条件 引入 Maven 依赖 |
| &lt;properties&gt; &lt;narayana.version&gt;5.12.4.Final&lt;/narayana.version&gt; &lt;jboss-transaction-spi.version&gt;7.6.0.Final&lt;/jboss-transaction-spi.version&gt; &lt;jboss-logging.version&gt;3.2.1.Final&lt;/jboss-logging.version&gt; &lt;/properties&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-jdbc-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-narayana&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.jboss.narayana.jta&lt;/groupId&gt; &lt;artifactId&gt;jta&lt;/artifactId&gt; &lt;version&gt;${narayana.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.jboss.narayana.jts&lt;/groupId&gt; &lt;artifactId&gt;narayana-jts-integration&lt;/artifactId&gt; &lt;version&gt;${narayana.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.jboss&lt;/groupId&gt; &lt;artifactId&gt;jboss-transaction-spi&lt;/artifactId&gt; &lt;version&gt;${jboss-transaction-spi.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.jboss.logging&lt;/groupId&gt; &lt;artifactId&gt;jboss-logging&lt;/artifactId&gt; &lt;version&gt;${jboss-logging.version}&lt;/version&gt; &lt;/dependency&gt; 操作步骤 配置 Narayana 设置 XA 事务类型 配置示例 配置 Narayana 可以通过在项目的 classpath 中添加 jbossts-properties.</description> |
| </item> |
| |
| <item> |
| <title>Bitronix 事务</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/bitronix/</link> |
| <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> |
| |
| <guid>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/bitronix/</guid> |
| <description>背景信息 Apache ShardingSphere 提供 XA 事务,集成了 Bitronix 的实现。 |
| 前提条件 引入 Maven 依赖 |
| &lt;properties&gt; &lt;btm.version&gt;2.1.3&lt;/btm.version&gt; &lt;/properties&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-jdbc-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;!-- 使用 XA 事务时,需要引入此模块 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-core&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.shardingsphere&lt;/groupId&gt; &lt;artifactId&gt;shardingsphere-transaction-xa-bitronix&lt;/artifactId&gt; &lt;version&gt;${shardingsphere.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.codehaus.btm&lt;/groupId&gt; &lt;artifactId&gt;btm&lt;/artifactId&gt; &lt;version&gt;${btm.version}&lt;/version&gt; &lt;/dependency&gt; 操作步骤 配置 XA 事务类型 配置 Bitronix 配置示例 配置 XA 事务类型 Yaml: |
| - !TRANSACTION defaultType: XA providerType: Bitronix SpringBoot: |
| spring: shardingsphere: props: xa-transaction-manager-type: Bitronix Spring Namespace: |
| &lt;shardingsphere:data-source id=&#34;xxx&#34; data-source-names=&#34;xxx&#34; rule-refs=&#34;xxx&#34;&gt; &lt;props&gt; &lt;prop key=&#34;xa-transaction-manager-type&#34;&gt;Bitronix&lt;/prop&gt; &lt;/props&gt; &lt;/shardingsphere:data-source&gt; 配置 Bitronix (可省略) 详情请参见 Bitronix 官方文档 。</description> |
| </item> |
| |
| <item> |
| <title>Seata 事务</title> |
| <link>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/seata/</link> |
| <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate> |
| |
| <guid>https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-jdbc/special-api/transaction/seata/</guid> |
| <description>背景信息 Apache ShardingSphere 提供 BASE 事务,集成了 Seata 的实现。 |
| 操作步骤 启动 Seata Server 创建日志表 添加 Seata 配置 配置示例 启动 Seata Server 按照 seata-work-shop 中的步骤,下载并启动 Seata 服务器。 |
| 创建 undo_log 表 在每一个分片数据库实例中执创建 undo_log 表(以 MySQL 为例)。 |
| CREATE TABLE IF NOT EXISTS `undo_log` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT &#39;increment id&#39;, `branch_id` BIGINT(20) NOT NULL COMMENT &#39;branch transaction id&#39;, `xid` VARCHAR(100) NOT NULL COMMENT &#39;global transaction id&#39;, `context` VARCHAR(128) NOT NULL COMMENT &#39;undo_log context,such as serialization&#39;, `rollback_info` LONGBLOB NOT NULL COMMENT &#39;rollback info&#39;, `log_status` INT(11) NOT NULL COMMENT &#39;0:normal status,1:defense status&#39;, `log_created` DATETIME NOT NULL COMMENT &#39;create datetime&#39;, `log_modified` DATETIME NOT NULL COMMENT &#39;modify datetime&#39;, PRIMARY KEY (`id`), UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`) ) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8 COMMENT =&#39;AT transaction mode undo table&#39;; 修改配置 在 classpath 中增加 seata.</description> |
| </item> |
| |
| </channel> |
| </rss> |