下载
:::tips
首先需要下载seata-server压缩包,地址:http://seata.io/zh-cn/blog/download.html
修改配置
:::tips 然后进入conf目录,修改registry.conf文件,配置如下 :::
registry {#tc服务的注册中心类,这里选择nacos,也可以是eureka、zookeeper等type = "nacos"nacos {#seata tc服务注册到nacos的服务名称,可以自定义application = "seata-tc-server"serverAddr = "127.0.0.1:8848"group = "DEFAULT_GROUP"namespace = ""cluster = "SZ"username = "nacos"password = "nacos"}}config {#读取tc服务端的配置文件的方式,这里是从nacos配置中心读取,这样如果tc是集群,可以共享配置type = "nacos"#配置nacos地址等信息nacos {serverAddr = "127.0.0.1:8848"namespace = ""group = "SEATA_GROUP"username = "nacos"password = "nacos"dataId = "seataServer.properties"}}
在Nacos中添加配置
:::tips
为了让TC服务的集群可以共享配置,使用Nacos作为统一配置中心,因此服务端配置文件seataServer.properties文件需要在Nacos中配置
配置文件如下,其中数据库地址、用户名、密码都需要修改 :::
#****************= 数据库配置 ****************=##事务会话信息存储方式,db代表数据库store.mode=db#db模式数据源类型 dbcp、druid、hikari;无默认值,store.mode=db时必须指定store.db.datasource=druid#db模式数据库类型。无默认值,store.mode=db时必须指定。store.db.dbType=mysql#db模式数据库驱动store.db.driverClassName=com.mysql.cj.jdbc.Driver#db模式数据库urlstore.db.url=jdbc:mysql://IP地址:端口/数据库名?useUnicode=true&rewriteBatchedStatements=true&userSSL=false&serverTimezone=Asia/Shanghai#db模式数据库账户store.db.user=用户名#db模式数据库账户密码store.db.password=密码#db模式数据库初始连接数 默认1store.db.minConn=5#db模式数据库最大连接数 默认20store.db.maxConn=30#db模式全局事务表名 默认global_tablestore.db.globalTable=global_table#db模式分支事务表名 默认branch_tablestore.db.branchTable=branch_table#db模式查询全局事务一次的最大条数 默认100store.db.queryLimit=100#db模式全局锁表名 默认lock_tablestore.db.lockTable=lock_table#db模式获取连接时最大等待时间 默认5000,单位毫秒store.db.maxWait=5000#****************** 事务、日志等配置 ******************##二阶段提交未完成状态全局事务重试提交线程间隔时间 默认1000,单位毫秒server.recovery.committingRetryPeriod=1000#二阶段异步提交状态重试提交线程间隔时间 默认1000,单位毫秒server.recovery.asynCommittingRetryPeriod=1000#二阶段回滚状态重试回滚线程间隔时间server.recovery.rollbackingRetryPeriod=1000#超时状态检测重试线程间隔时间 默认1000,单位毫秒,检测出超时将全局事务置入回滚会话管理器server.recovery.timeoutRetryPeriod=1000#二阶段提交重试超时时长。单位ms,s,m,h,d,对应毫秒,秒,分,小时,天,默认毫秒。默认值-1表示无限重试。公式: timeout>=now-globalTransactionBeginTime,true表示超时则不再重试(注: 达到超时时间后将不会做任何重试,有数据不一致风险,除非业务自行可校准数据,否者慎用)server.maxCommitRetryTimeout=-1#二阶段回滚重试超时时长 与maxCommitRetryTimeout类似server.maxRollbackRetryTimeout=-1server.rollbackRetryTimeoutUnlockEnable=false#undo保留天数 默认7天server.undo.logSaveDays=7#undo清理线程间隔时间 默认86400000,单位毫秒server.undo.logDeletePeriod=86400000#client和server通信编解码方式 默认seata(ByteBuf)transport.serialization=seata#client和server通信数据压缩方式 none、gzip,默认nonetransport.compressor=none#关闭metrics功能,默认false关闭,在False状态下,所有与Metrics相关的组件将不会被初始化,使得性能损耗最低metrics.enabled=false
创建数据库表
:::tips 需要注意tc服务在管理分布式事务时,需要记录事务相关数据到数据库中,需要提前创建好这些表
新建一个名为seata的数据库,运行下面的sql语句 :::
CREATE DATABASE IF NOT EXISTS `seata` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE `seata`;SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- -------------------------------- The script used when storeMode is 'db' ---------------------------------- the table to store GlobalSession dataCREATE 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 = utf8mb4;-- the table to store BranchSession dataCREATE 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 = utf8mb4;-- the table to store lock dataCREATE 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 = utf8mb4;SET FOREIGN_KEY_CHECKS = 1;
启动TC服务
:::tips 进入bin目录,运行其中的seata-server.bat,启动成功后,seata-server应该已经注册到Nacos注册中心了 :::
:::
