官方地址
| 名称 | 地址 |
|---|---|
| 官网地址 | http://seata.io/zh-cn/ |
| 源码仓库 | https://github.com/seata/seata |
版本声明
| 中间件名称 | 版本 |
|---|---|
| Seata | 1.4.2 |
| Nacos | 2.0.3 |
| MySQL | 8.0.28 |
数据库
1. 创建用户和授权
# 降低MySQL密码策略等级set global validate_password.length=4;set global validate_password.special_char_count=0;set global validate_password.policy =LOW;
create user 'seata'@'%' IDENTIFIED BY 'seata';grant all privileges on seata.* to seata@'%';flush privileges;
2. 创建 Seata 数据库
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
2. Nacos 注册中心和配置中心
registry.conf 是Seata 的注册/配置中心的配置文件
在线地址:https://github.com/seata/seata/blob/develop/script/client/conf/registry.conf
获取到 registry.conf 配置之后,完整修改如下:
registry {# file,nacos,eureka,redis,zk,consul,etcd3,sofatype = "nacos"nacos {application = "seata-server"serverAddr = "c.youlai.tech:8848"group = "SEATA_GROUP"namespace = "seata-namespace-id"cluster = "default"username = ""password = ""}}config {# file、nacos 、apollo、zk、consul、etcd3type = "nacos"nacos {serverAddr = "c.youlai.tech:8848"namespace = "seata-namespace-id"group = "SEATA_GROUP"username = ""password = ""dataId = "seataServer.properties"}}
- **type: **注册中心和配置中心的类型,这里都选择 Nacos- **seata-namespace-id** : Nacos 为 Seata 配置的命名空间- **username**:Nacos 用户名,Nacos 权限认证默认不开启,不用填- **password**:Nacos 密码,Nacos 权限认证默认不开启,不用填- **dataId**: Seata 1.4.2 新增,指定读取Nacos里 dataId 为 seataServer.properties 的配置
修改配置之后将其上传到部署服务器的 /opt/seata/config 目录,后续生成 seata 容器映射读取
mkdir -p /opt/seata/config

3. 导入配置至 Nacos
config.txt 是 Seata 的具体配置明细,其中包括事务分组和事务数据存储模式的配置。
在线地址: https://github.com/seata/seata/blob/develop/script/config-center/config.txt
获取 config.txt 之后,需要修改以下部分信息:
service.vgroupMapping.mall_tx_group=defaultstore.mode=dbstore.db.dbType=mysqlstore.db.driverClassName=com.mysql.cj.jdbc.Driverstore.db.url=jdbc:mysql://www.youlai.tech:3306/seata?useUnicode=true&rewriteBatchedStatements=truestore.db.user=seatastore.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 部署的所有准备工作。
Docker 部署 Seata
官方部署步骤参考:http://seata.io/zh-cn/docs/ops/deploy-by-docker.html
1. 拉取镜像
docker pull seataio/seata-server:1.4.2
2. 启动镜像
创建日志挂载目录
mkdir -p /opt/seata/logs
生成和启动 Seata 容器
docker run -d --name seata --restart=always \-p 8091:8091 \-e SEATA_IP=106.75.231.227 \-e SEATA_CONFIG_NAME=file:/root/seata-config/registry \-v /opt/seata/config:/root/seata-config \-v /opt/seata/logs:/root/logs/seata \seataio/seata-server:1.4.2
3. 结果查看
可以在 Nacos 控制台的服务列表看到 Seata 服务。
