官方地址
名称 | 地址 |
---|---|
官网地址 | 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,sofa
type = "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、etcd3
type = "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=default
store.mode=db
store.db.dbType=mysql
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://www.youlai.tech:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=seata
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 部署的所有准备工作。
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 服务。