- 1.下载Nacos
- 2.下载seata
- 3.解压seata
- 4.mysql数据库新建库seata库
- 5.seata库建表
- 6.修改file.conf配置
- 7.修改registry.conf配置
- 8.修改config.txt文件
- 9.启动seata-server
- 10. 小结
Nacos
下载地址:https://github.com/alibaba/nacos/releases
启动Nacos
,创建一个seata
的命名空间
下载seata-server-1.4.2
版本
Seata
下载地址:https://github.com/seata/seata/releases/download/v1.4.2/seata-server-1.4.2.zip
这里需要下载seata-server-1.4.2.zip
、Source code
两个包,如果源码包下载不下来也没关系,可以从源码里直接拷贝代码,我就死活下载失败。
解压seata-server-1.4.2.zip到指定目录
4.mysql数据库新建库seata库这个略,本人用的mysql8.0.23
版本数据库
建表语句:https://github.com/seata/seata/blob/develop/script/server/db/mysql.sql
这里一定要先在mysql
里建表!!!!我把建表语句贴了出来。
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(128),
`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;
CREATE TABLE IF NOT EXISTS `distributed_lock`
(
`lock_key` CHAR(20) NOT NULL,
`lock_value` VARCHAR(20) NOT NULL,
`expire` BIGINT,
primary key (`lock_key`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);
6.修改file.conf配置
修改seata-server-1.4.2\conf
目录下的file.con
f配置文件,此处要注意一下,mysql5
和mysql8
的驱动是不一样的。
修改seata-server-1.4.2\conf
目录下的registry.conf
配置文件,此处的namespace
就是在Nacos
中创建的seata
命名空间。
修改config.txt
,并导入nacos-server
配置
这个config.txt
配置文件在哪里呢?如果在第一步中,seata
的源码能下载下来,这文件就是这个源码里。如果下载不下来,就直接去github
上去拷贝,把整个script
文件夹拷贝下来。config.txt
在configt-center
文件夹下面。
https://github.com/seata/seata/blob/develop/script/config-center/config.txt
做如下修改:
下面要把config.txt
中的文件导入都Nacos
的配置中心里,需要进入到config-center
目录下的nacos
文件夹,里面有两个文件,一个是.sh
文件,一个是.py
文件,当然也就提供了两种方式导入Nacos
配置中心。下面使用.sh
文件,在nacos
文件下打开git bash
终端命令行,执行如下命令:
sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -t 88b8f583-43f9-4272-bd46-78a9f89c56e8 -u nacos -w nacos
-h:nacos地址 -p:端口,默认8848 -g:seata的服务列表分组名称 -t:nacos命名空间id -u和-w:nacos的用户名和密码
执行有4个失败,看看失败项,其实也没啥。
在Nacos配置中心,查看导入的配置项。
建议用CMD
命令行窗口执行,这样可以看到启动错误,如果启动报错,可能有两个原因,第一,内存需要调整,第二,数据库脚本没有执行。
JVM启动参数调整如下:
Seata
环境搭建需要注意以下几点内容:
Seata
客户端的版本需要和服务端保持一致- 客户端指定的事务分组名称要和
Nacos
相同,比如service.vgroupMapping.scorpios-tx-group=default
。前缀service.vgroupMapping
,后缀 自定义
TC
相关的三张表:
global_table
:全局事务表,每当有一个全局事务发起后,就会在该表中记录全局事务的ID
branch_table
:分支事务表,记录每一个分支事务的 ID
,分支事务操作的哪个数据库等信息
lock_table
:全局锁