CentOS环境下搭建seata(二进制、MySQL)

seata官网:https://seata.io/zh-cn/。

我部署的nacos版本是2.0.4,采用MySQL的存储模式。注意:seata有三种存储模式:file、db、redis,如果是单节点,并且存储模式采用file,那么直接解压启动即可;存储模式采用redis,则需要seata-server 1.3版本及以上。

Spring Cloud Alibaba版本对应组件版本说明,详细参考官网文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E。
在这里插入图片描述
(1).初始化数据库
官方的数据库初始化脚本地址:https://github.com/seata/seata/tree/master/script/server/db。
官方提供了三种数据库脚本,我这里列举一下Mysql数据库的脚本:

-- -------------------------------- 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_status_gmt_modified` (`status` , `gmt_modified`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;
 
-- 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 = utf8mb4;
 
-- 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),
    `status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_status` (`status`),
    KEY `idx_branch_id` (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;
 
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);

(2).上传压缩包,修改配置文件

解压压缩包

[root@youxi1 ~]# mkdir /usr/local/seata-server
[root@youxi1 ~]# tar zxvf seata-server-1.4.2.zip -C /usr/local/seata-server

修改配置文件

[root@youxi1 ~]# vi /usr/local/seata-server/seata-server-1.4.2/conf/file.conf
//修改第四行将mode = "file"改为mode = "db"
mode = "db"
 
//根据
 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"  //根据自己的数据库修改,我这里就是用的mysql
 driverClassName = "com.mysql.cj.jdbc.Driver"  //驱动程序类名,根据实际情况更改
 ## if using mysql to store the data, recommend add rewriteBatchedStatements=true in jdbc connection param
//jdbc连接数据库的url,根据实际情况修改
url = "jdbc:mysql://[数据库IP地址]:[数据库端口]/[数据库库名]?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncod
ing=utf-8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true"
 user = "[用户名]"  //数据库登录的用户名
 password = "[密码]"  //数据库登录的密码
 minConn = 5
 maxConn = 100
 globalTable = "global_table"
 branchTable = "branch_table"
 lockTable = "lock_table"
 queryLimit = 100
 maxWait = 5000
 }

在这里插入图片描述
在这里插入图片描述
(3).启动并测试

[root@youxi1 ~]# nohup sh /usr/local/seata-server/seata-server-1.4.2/bin/seata-server.sh -p 18091 -h 127.0.0.1 -m db &
[root@youxi1 ~]$ ps -ef | grep seata
root 6705 22353 4 17:13 pts/0 00:00:02 /usr/bin/java -server -Xmx2048m -Xms2048m -Xmn1024m -Xss512k -XX:SurvivorRatio=10 -XX:
MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=1024m -XX:-OmitStackTraceInFastThrow -XX:-UseAdaptiveSiz
ePolicy -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/seata-server/seata-server-1.4.2/logs/java_heapdump.hprof
 -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=7
5 -Xloggc:/usr/local/seata-server/seata-server-1.4.2/logs/seata_gc.log -verbose:gc -Dio.netty.leakDetectionLevel=advanced -Dl
ogback.color.disable-for-bat=true -classpath /usr/local/seata-server/seata-server-1.4.2/conf:/usr/local/seata-server/seata-se
rver-1.4.2/lib/* -Dapp.name=seata-server -Dapp.pid=6705 -Dapp.repo=/usr/local/seata-server/seata-server-1.4.2/lib -Dapp.home=
/usr/local/seata-server/seata-server-1.4.2 -Dbasedir=/usr/local/seata-server/seata-server-1.4.2 io.seata.server.Server -p 180
91 -h 127.0.0.1 -m db
root 6860 22353 0 17:14 pts/0 00:00:00 grep --color=auto seata
  
```启动后默认端口为8091。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值