Seata 事务

背景信息

Apache ShardingSphere 提供 BASE 事务,集成了 Seata 的实现。

操作步骤

  1. 启动 Seata Server
  2. 创建日志表
  3. 添加 Seata 配置

配置示例

启动 Seata Server

按照 seata-work-shop 中的步骤,下载并启动 Seata 服务器。

创建 undo_log 表

在每一个分片数据库实例中执创建 undo_log 表(以 MySQL 为例)。

  1. CREATE TABLE IF NOT EXISTS `undo_log`
  2. (
  3. `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT 'increment id',
  4. `branch_id` BIGINT(20) NOT NULL COMMENT 'branch transaction id',
  5. `xid` VARCHAR(100) NOT NULL COMMENT 'global transaction id',
  6. `context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
  7. `rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
  8. `log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
  9. `log_created` DATETIME NOT NULL COMMENT 'create datetime',
  10. `log_modified` DATETIME NOT NULL COMMENT 'modify datetime',
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
  13. ) ENGINE = InnoDB
  14. AUTO_INCREMENT = 1
  15. DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';

修改配置

在 classpath 中增加 seata.conf 文件。

  1. client {
  2. application.id = example ## 应用唯一主键
  3. transaction.service.group = my_test_tx_group ## 所属事务组
  4. }

根据实际场景修改 Seata 的 file.confregistry.conf 文件。