逻辑上的一组操作, 组成这组操作的各个逻辑单元, 在不同的工程、服务、服务器上, 要么都成功, 要么都失败

    • 使用场景
      • 不同工程, 不同数据库
      • 相同工程, 不同数据库
      • 不同工程, 相同数据库
    • 发生的原因
      • 本地事务: 程序发生异常
      • 分布式事务: 程序异常、网络故障、服务器故障

    image.png

    1. ## Seata 需要 jdk 所以先安装 Java
    2. sudo yum -y install epel-release
    3. sudo rm -f /var/run/yum.pid # 出现 yum 被占用时使用
    4. sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel jq vim
    5. ## 创建目录 并上传 seata
    6. mkdir -p /mydata/seata
    7. ## 下载地址 https://seata.io/zh-cn/blog/download.html
    8. cd /mydata/seata/seata-server-[version]/bin
    9. ## 启动 Seata
    10. nohup sh seata-server.sh -p 8091 -h [ip] -m file &> seata.log &

    image.png

    CREATE TABLE `undo_log` ( 
      `id` bigint(20) NOT NULL AUTO_INCREMENT, 
      `branch_id` bigint(20) NOT NULL, 
      `xid` varchar(100) NOT NULL, 
      `context` varchar(128) NOT NULL, 
      `rollback_info` longblob NOT NULL, 
      `log_status` int(11) NOT NULL, 
      `log_created` datetime NOT NULL, 
      `log_modified` datetime NOT NULL, 
      0 PRIMARY KEY (`id`), 
      UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`) 
     ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;