官方地址

名称 地址
官网地址 http://seata.io/zh-cn/
源码仓库 https://github.com/seata/seata

版本声明

中间件名称 版本
Seata 1.4.2
Nacos 2.0.3
MySQL 8.0.28

数据库

1. 创建用户和授权

  1. # 降低MySQL密码策略等级
  2. set global validate_password.length=4;
  3. set global validate_password.special_char_count=0;
  4. set global validate_password.policy =LOW;
  1. create user 'seata'@'%' IDENTIFIED BY 'seata';
  2. grant all privileges on seata.* to seata@'%';
  3. flush privileges;

2. 创建 Seata 数据库

  1. CREATE DATABASE seata;

3. 生成 Seata 表结构

MySQL脚本地址: https://github.com/seata/seata/blob/develop/script/server/db/mysql.sql
执行脚本生成 Seata 表结构。

准备工作

1. 创建 Nacos 命名空间

访问 Nacos 控制台, 新建 Seata 的注册中心和配置中心的命名空间 ,命名空间ID为 seata-namesapce-id
Seata 部署 - 图1

2. Nacos 注册中心和配置中心

registry.conf 是Seata 的注册/配置中心的配置文件
在线地址:https://github.com/seata/seata/blob/develop/script/client/conf/registry.conf
获取到 registry.conf 配置之后,完整修改如下:

  1. registry {
  2. # file,nacos,eureka,redis,zk,consul,etcd3,sofa
  3. type = "nacos"
  4. nacos {
  5. application = "seata-server"
  6. serverAddr = "c.youlai.tech:8848"
  7. group = "SEATA_GROUP"
  8. namespace = "seata-namespace-id"
  9. cluster = "default"
  10. username = ""
  11. password = ""
  12. }
  13. }
  14. config {
  15. # file、nacos 、apollo、zk、consul、etcd3
  16. type = "nacos"
  17. nacos {
  18. serverAddr = "c.youlai.tech:8848"
  19. namespace = "seata-namespace-id"
  20. group = "SEATA_GROUP"
  21. username = ""
  22. password = ""
  23. dataId = "seataServer.properties"
  24. }
  25. }
  1. - **type: **注册中心和配置中心的类型,这里都选择 Nacos
  2. - **seata-namespace-id** Nacos Seata 配置的命名空间
  3. - **username**:Nacos 用户名,Nacos 权限认证默认不开启,不用填
  4. - **password**:Nacos 密码,Nacos 权限认证默认不开启,不用填
  5. - **dataId**: Seata 1.4.2 新增,指定读取Nacos dataId seataServer.properties 的配置

修改配置之后将其上传到部署服务器的 /opt/seata/config 目录,后续生成 seata 容器映射读取

  1. mkdir -p /opt/seata/config

Seata 部署 - 图2

3. 导入配置至 Nacos

config.txt 是 Seata 的具体配置明细,其中包括事务分组和事务数据存储模式的配置。
在线地址: https://github.com/seata/seata/blob/develop/script/config-center/config.txt
获取 config.txt 之后,需要修改以下部分信息:

  1. service.vgroupMapping.mall_tx_group=default
  2. store.mode=db
  3. store.db.dbType=mysql
  4. store.db.driverClassName=com.mysql.cj.jdbc.Driver
  5. store.db.url=jdbc:mysql://www.youlai.tech:3306/seata?useUnicode=true&rewriteBatchedStatements=true
  6. store.db.user=seata
  7. store.db.password=seata
  • service.vgroupMapping.mall_tx_group:事务分组,service.vgroupMapping .[事务分组配置项],取得配置项的值就是TC集群的名称,也就是default;mall_tx_group 是有来商城的事务分组名。详情参考:http://seata.io/zh-cn/docs/user/transaction-group.html

  • store.mode:事务数据存储模式

完成修改之后,在 Nacos 控制台新建 dataId 为 seataServer.properties 的配置(seataServer.properties 是上文 registry.conf 的配置中心指定的 dataId),再将 config.txt 内容复制过去,具体如下图所示:
Seata 部署 - 图3
点击发布便完成 Seata 部署的所有准备工作。

Docker 部署 Seata

官方部署步骤参考:http://seata.io/zh-cn/docs/ops/deploy-by-docker.html

1. 拉取镜像

  1. docker pull seataio/seata-server:1.4.2

2. 启动镜像

创建日志挂载目录

  1. mkdir -p /opt/seata/logs

生成和启动 Seata 容器

  1. docker run -d --name seata --restart=always \
  2. -p 8091:8091 \
  3. -e SEATA_IP=106.75.231.227 \
  4. -e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
  5. -v /opt/seata/config:/root/seata-config \
  6. -v /opt/seata/logs:/root/logs/seata \
  7. seataio/seata-server:1.4.2

3. 结果查看

可以在 Nacos 控制台的服务列表看到 Seata 服务。
Seata 部署 - 图4