首页 > 数据库 >CentOS环境下搭建seata(二进制、MySQL)

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

时间:2023-06-14 17:35:01浏览次数:77  
标签:VARCHAR seata CentOS lock server usr MySQL id

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

  我在这里部署的seata版本是2.0.4。

  Spring Cloud Alibaba版本对应组件版本说明,详细参考官网文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E。

(1).初始化数据库

  首先要确认自己需要使用什么样的存储模式,seata有三种存储模式:file、db、redis,只有当存储模式选择为db时才需要进行此步操作。

  官方的数据库初始化脚本地址: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
[root@youxi1 ~]# tar zxvf seata-server-1.4.2.zip -C /usr/local/seata

  修改配置文件

[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
url = "jdbc:mysql://[数据库IP地址]:[数据库端口]/[数据库库名]?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncod ing=utf-8&useSSL=false
&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true"  //jdbc连接数据库的url,根据实际情况修改 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:-UseAdaptiveSizePolicy -XX:+HeapDumpOnOut
OfMemoryError -XX:HeapDumpPath=/usr/local/seata-server/seata-server-1.4.2/logs/java_heapdump.hprof -XX:+DisableExplicitGC -XX:+CMSParallel
RemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 -Xloggc:/usr/local/seata-server/seata-server-1.4.2/
logs/seata_gc.log -verbose:gc -Dio.netty.leakDetectionLevel=advanced -Dlogback.color.disable-for-bat=true -classpath /usr/local/seata-serv
er/seata-server-1.4.2/conf:/usr/local/seata-server/seata-server-1.4.2/lib/* -Dapp.name=seata-server -Dapp.pid=6705 -Dapp.repo=/usr/local/s
eata-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 18091 -h 127.0.0.1 -m db
root 6860 22353 0 17:14 pts/0 00:00:00 grep --color=auto seata

  启动时,默认端口为8091。我这里由于启动时报“java.net.BindException: Address already in use”,所以指定了下端口,使其使用18091。但我实际查看下来8091是tcp6占用了,并且PID是个减号(-),不知道为什么。

 

参考资料:https://blog.csdn.net/weixin_44745528/article/details/127333615

     https://blog.csdn.net/m0_52208135/article/details/128821419

 

标签:VARCHAR,seata,CentOS,lock,server,usr,MySQL,id
From: https://www.cnblogs.com/diantong/p/17480202.html

相关文章

  • mysql-主从数据一致性检查工具 pt-table-checksum
    pt-table-checksum工具介绍pt-table-checksum是PerconaToolkit的一个组件,用于检测MySQL主、从库的数据是否一致。它的原理是在主库执行基于statement的SQL语句来生成主库数据块的checksum,把相同的SQL语句传递到从库执行,并在从库上计算相同数据块的checksum,最后,比......
  • MySQL GTID 主从复制错误修复方法
    MySQLGTID主从复制错误修复方法MySQL传统复制恢复方法:root@(none)>stopslave;QueryOK,0rowsaffected(0.00sec)root@(none)>SETGLOBALSQL_SLAVE_SKIP_COUNTER=N;#跳过N个事务QueryOK,0rowsaffected(0.00sec)root@(none)>startslave;QueryOK,......
  • docker 安装mysql-server
    ################查找mysql-server镜像:dockersearchmysql-server[root@igoodful~]#dockersearchmysql-serverINDEXNAMEDESCRIPTIONSTARSOFFICIALAUTOMATEDdocker.iodock......
  • MySQL基础:安装和启动
    MySQL基础:安装和启动课程安排基础篇介绍数据库相关概念SQL是操作关系型数据库的编程语言主流关系型数据库总结安装MySQL数据库MySQL数据库启动与停止默认mysql开机启动客户端连接方式1方式2需要配置环境变量......
  • 如何使用MySQL存储过程简化数据库操作
    在数据库管理领域,MySQL已成为最受欢迎和最可靠的选择之一。MySQL不仅提供了强大的数据存储能力,还提供了一种称为“过程”的强大功能,使开发人员能够简化复杂的数据库操作。在本教程中,我们将深入研究MySQL过程的概念并探索它们的好处。然后,我将提供有关如何有效使用它们的分步......
  • Linux - MySQL修改临时密码并设置访问权限【Linux】
    1.查阅临时密码cat/var/log/mysqld.log|greppassword2.登录MySQL①.登录mysql(复制日志中的临时密码登录)mysql-uroot-p输入临时密码②.修改密码setglobalvalidate_password_length=4;设置密码长度最低位数setglobalvalidate......
  • mysql数据库数据同步几种通用方法?
    MySQL数据库数据同步的几种通用方法包括以下几个方面:一、基于主从同步主从同步是MySQL数据库最为常见和基本的同步方式,即其中一台MySQL服务器作为主服务器(Master),另外一台或多台MySQL服务器作为从服务器(Slave)。主服务器处理写入数据的请求,并将数据的变化复制到从服务器,以......
  • Error: Failed to download metadata for repo ‘appstream’ – CentOS 8
    错误:Error:Failedtodownloadmetadataforrepo'appstream':Cannotprepareinternalmirrorlist:NoURLsinmirrorlist解决办法:TomigratefromCentOS8toCentOSStream8,runthefollowingcommands:dnf--disablerepo'*'--enablerepo......
  • 在FreeSWITCH中使用Lua脚本来将电话记录存储到MySQL数据库中
    在FreeSWITCH中使用Lua脚本来将电话记录存储到MySQL数据库中,需要做以下几个步骤:安装MySQL客户端库首先需要通过包管理器(如apt-get或yum)安装MySQL客户端库,以便FreeSWITCH能够与MySQL数据库进行通信。例如,在Ubuntu系统中,可以运行以下命令进行安装:sudoapt-getinstalllibmysq......
  • mysql可视化工具有哪些?优点是什么?
    MySQL是一种广泛使用的关系型数据库管理系统(RDBMS),由于其开放源代码和高度可定制化的优势,广受开发者欢迎。为了更加高效地管理MySQL数据库,我们通常需要使用MySQL可视化工具。下面列出了几款MySQL可视化工具及其优点:NavicatforMySQLNavicatforMySQL是一款流行的MySQL可......