Seata单机安装
一、环境
操作系统:Centos7及以上或者Mac
Seata版本: 1.3.0
Nacos版本:2.0.4
Seata集群部署
Seata官网
Seata下载地址
二、file.conf配置
- 路径:在根目录下的【config】文件夹下
- 采用DB模式进行配置,文件内如,其他内如可以保留也可以直接删除
## transaction log store, only used in seata-server
store {
## store mode: file、db、redis
mode = "db"
## database store property
db {
## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp)/HikariDataSource(hikari) etc.
datasource = "druid"
## mysql/oracle/postgresql/h2/oceanbase etc.
dbType = "mysql"
driverClassName = "com.mysql.cj.jdbc.Driver"
url = "jdbc:mysql://127.0.0.1:3306/seata?characterEncoding=utf-8&serverTimezone=UTC"
user = "root"
password = "Root@1234"
minConn = 5
maxConn = 30
globalTable = "global_table"
branchTable = "branch_table"
lockTable = "lock_table"
queryLimit = 100
maxWait = 5000
}
}
三、registry.conf配置
- 路径:在根目录下的【config】文件夹下
- 该文件主要作用是:将Seata的服务端和客户端的一些配置信息注入到配置中心中(本文采用的是阿里巴巴的Nacos配置中心,小伙伴们也可以自己选择),配置内如如下:
- 更多配置说明
- registry部分
registry {
# file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
type = "nacos"
# nacos的配置信息项
nacos {
# 当前seata在nacos中的服务名
application = "seata-server"
# nacos的地址,当人这里也可以配置nginx配置的nacos集群
serverAddr = "127.0.0.1:8848"
# 分组名称
group = "SEATA_GROUP"
# 命名空间,使用默认
namespace = ""
# 是否集群
cluster = "default"
# nacos的用户
username = "nacos"
# nacos用户对应密码
password = "nacos"
}
}
- config部分
config {
# file、nacos 、apollo、zk、consul、etcd3
type = "nacos"
# nacos的配置信息项
nacos {
# nacos的地址,当人这里也可以配置nginx配置的nacos集群
serverAddr = "127.0.0.1:8848"
# 命名空间,使用默认
namespace = ""
# 分组名称
group = "SEATA_GROUP"
# nacos的用户
username = "nacos"
# nacos用户对应密码
password = "nacos"
}
}
四、创建seata数据库
- 可以采用Mysql数据使用如下脚本创建表结果,创建脚本大家可以下载seata源码后在【script】文件夹下的”/server/db“路径下找到mysql.sql脚本文件。脚本内容如下:
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`status` TINYINT NOT NULL,
`application_id` VARCHAR(32),
`transaction_service_group` VARCHAR(32),
`transaction_name` VARCHAR(128),
`timeout` INT,
`begin_time` BIGINT,
`application_data` VARCHAR(2000),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`xid`),
KEY `idx_gmt_modified_status` (`gmt_modified`, `status`),
KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
`branch_id` BIGINT NOT NULL,
`xid` VARCHAR(128) NOT NULL,
`transaction_id` BIGINT,
`resource_group_id` VARCHAR(32),
`resource_id` VARCHAR(256),
`branch_type` VARCHAR(8),
`status` TINYINT,
`client_id` VARCHAR(64),
`application_data` VARCHAR(2000),
`gmt_create` DATETIME(6),
`gmt_modified` DATETIME(6),
PRIMARY KEY (`branch_id`),
KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
`row_key` VARCHAR(128) NOT NULL,
`xid` VARCHAR(96),
`transaction_id` BIGINT,
`branch_id` BIGINT NOT NULL,
`resource_id` VARCHAR(256),
`table_name` VARCHAR(32),
`pk` VARCHAR(36),
`gmt_create` DATETIME,
`gmt_modified` DATETIME,
PRIMARY KEY (`row_key`),
KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
- 数据库信息如下:
五、配置信息推送到配置中心
- 通过执行[script/config-center/nacos]目录下的”nacos-config.sh“脚本,将上述配置项推送到配置中心
- 命令格式: sh ./nacos-config.sh [-h|-p|-g|-u|-w|-t]
# 默认启动 &> sh ./nacos-config.sh # 指定命名空间命令 &> sh ./nacos-config.sh -t 626a816f-3062-4a97-b27a-07aeed26ee85
- 参数说明,Nacos为例:
- -h 配置中心IP地址
- -p 配置中心端口
- -g 分组名称
- -u 用户
- -w 密码
- -t 命名空间或者组合
!!!注意:如果Nacos使用的集群部署,需要将配置的集群服务节点全部启动才能使用上面命令推送配置信息成功,否则将推送失败。
- 结果如下图:
六、启动
命令格式:sh seata-server.sh -p 8091 -h 127.0.0.1 -m file
启动参数说明:
- -h 指定在注册中心注册的 IP
- -p 指定 server 启动的端口
- -m 事务日志存储方式,默认file
- -n 用于指定seata-server节点ID,默认为 1
- -help 帮助
# 默认启动方式
&> ./bin/seata-server.sh -p 8092