下载地址:https://github.com/seata/seata/releases
安装cd /usr/local # 下载文件拷贝到当前目录下 tar -zxvf seata-server-1.4.2.tar.gz # 解压目录介绍
- 可执行文件
bat格式文件为windows系统启动文件 sh格式文件为linux系统启动文件
- 服务端配置文件
# 修改日志文件保存路劲:/usr/local/seata/seata-server-1.4.2/conf/logback/file-appender.xml
# 设置Seata服务的注册中心为nacos,以下相关配置需要和nacos中的相关配置保持一致
registry {
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "*.*.*.*:8840"
group = "SEATA(自定义Seata服务的分组名称)"
namespace = "d50a1a79-cf7c-4b95-ae2e-d0b4096a06dc(nacos控制台中服务管理-服务列表所属的命名空间ID)"
cluster = "default"
username = "nacos账号"
password = "nacos密码"
}
}
# 设置Seata服务的配置中心为nacos,以下相关配置需要和nacos中的相关配置保持一致
# 注意:如果type = "file",则file.conf文件中的配置才会生效
config {
type = "nacos"
nacos {
serverAddr = "*.*.*.*:8840"
namespace = "d50a1a79-cf7c-4b95-ae2e-d0b4096a06dc(nacos控制台中配置管理-配置列表所属的命名空间ID)"
group = "SEATA(自定义Seata服务的配置文件的分组)"
dataId = "seata.properties(自定义Seata服务的配置文件的Data Id)"
username = "nacos账号"
password = "nacos密码"
}
}
上传配置至Nacos配置中心
从v1.4.2版本开始,已支持从一个Nacos dataId中获取所有配置信息,你只需要额外添加一个dataId配置项。 需要在nacos新建配置,此处dataId为seata.properties 配置内容参考https://github.com/seata/seata/tree/develop/script/config-center 的config.txt并按需修改保存
# 服务端事务会话信息存储方式,file本地文件(不支持HA),db数据库|redis(支持HA) # db模式 store.mode=db # 数据源类型,dbcp、druid、hikari;无默认值,store.mode=db时必须指定。 store.db.datasource=hikari # 数据库类型 # mysql、oracle、db2、sqlserver、sybaee、h2、sqlite、access、postgresql、oceanbase;无默认值,store.mode=db时必须指定。 store.db.dbType=mysql # 数据库驱动 store.db.driverClassName=com.mysql.jdbc.Driver # 数据库url store.db.url=jdbc:mysql://1.116.1.203:3306/seata?useUnicode=true&rewriteBatchedStatements=true # 数据库账户 store.db.user=lixing # 数据库账户密码 store.db.password=LI1234mysql! # 数据库初始连接数 store.db.minConn=5 # 数据库最大连接数 store.db.maxConn=30 # 获取连接时最大等待时间 store.db.maxWait=5000 # 全局事务表名 store.db.globalTable=global_table # 分支事务表名 store.db.branchTable=branch_table # 全局锁表名 store.db.lockTable=lock_table # store.db.distributedLockTable=distributed_lock # 查询全局事务一次的最大条数 store.db.queryLimit=100初始化数据库表结构(mysql版本)
- 创建数据库实例
CREATE DATAbase seata default character set utf8 collate utf8_general_ci; # 基于seata的数据库实例对象 GRANT ALL PRIVILEGES on seata.* to 'lixing'@'%'; # 为用户lixing赋予操作数据库实例seata的权限 FLUSH PRIVILEGES; # 刷新权限列表
- 创建服务端 global_table、branch_table、lock_table 表
-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- 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;
- 创建客户端(即每个微服务) undo_log 表(涉及到分布式事务的微服务的数据库实例都要创建)
-- for AT mode you must to init this sql for you business database. the seata server not need it.
CREATE TABLE IF NOT EXISTS `undo_log`
(
`branch_id` BIGINT(20) NOT NULL COMMENT 'branch transaction id',
`xid` VARCHAR(100) NOT NULL COMMENT 'global transaction id',
`context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
`rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info',
`log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status',
`log_created` DATETIME(6) NOT NULL COMMENT 'create datetime',
`log_modified` DATETIME(6) NOT NULL COMMENT 'modify datetime',
UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';
启动
开启端口:点我
# 后台运行的方式启动 nohup sh /usr/local/seata/seata-server-1.4.2/bin/seata-server.sh -h 192.168.233.131 -p 8091 >/dev/null 2>&1 &



