tar -zxvf jdk-8u261-linux-x64.tar.gz && \
echo "export JAVA_HOME=/home/csii/jdk1.8.0_261
export PATH=\$JAVA_HOME/bin:\$PATH
export CLASSPATH=.\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> ~/.bash_profile && \
source ~/.bash_profile && \
java -version
从seata官网 https://github.com/seata/seata/releases 下载安装包,最新正式版:seata-server-1.4.0.tar.gz,直接解压
tar -zxf seata-server-1.4.0.tar.gz
cd seata/conf
vi registry.conf
registry {# file 、nacos 、eureka、redis、zk、consul、etcd3、sofatype = "nacos" # 这里修改为nacosnacos {serverAddr = "192.168.0.201:8848" # 这里填你的nacos地址namespace = ""
cluster = "default"
username = "nacos"
password = "nacos"}
}config {# file、nacos 、apollo、zk、consul、etcd3type = "file"file {name = "file.conf"}
}
cd ../bin
nohup sh seata-server.sh -p 8091 -h 192.168.100.206 -m file &> seata.log &
-p 指定启动seata server的端口号。
-h 指定seata server所绑定的主机。
-m 事务日志、事务执行信息存储的方式,目前支持file(文件方式)、db(数据库方式,建表语句请查看config/db_store.sql、config/db_undo_log.sql)
tail -1000f seata.log
tar -zxvf jdk-8u261-linux-x64.tar.gz && \
echo "export JAVA_HOME=/home/csii/jdk1.8.0_261
export PATH=\$JAVA_HOME/bin:\$PATH
export CLASSPATH=.\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> ~/.bash_profile && \
source ~/.bash_profile && \
java -version
从seata官网 https://github.com/seata/seata/releases 下载安装包,最新正式版:seata-server-1.4.0.tar.gz,直接解压
tar -zxf nacos-server-2.0.0-ALPHA.1.tar.gz
进入conf目录
cd seata/conf
vim file.conf
## transaction log store, only used in seata-server
store {## store mode: file、db、redismode = "db" #选择db模式## file store propertyfile {## store location dirdir = "sessionStore"# branch session size , if exceeded first try compress lockkey, still exceeded throws exceptionsmaxBranchSessionSize = 16384# globe session size , if exceeded throws exceptionsmaxGlobalSessionSize = 512# file buffer size , if exceeded allocate new bufferfileWriteBufferCacheSize = 16384# when recover batch read sizesessionReloadReadSize = 100# async, syncflushDiskMode = async}## database store propertydb {## 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"
driverClassName = "com.mysql.jdbc.Driver"
#填写mysql的jdbcurl = "jdbc:mysql://192.168.100.205:3306/seata"user = "seata"password = "seata"minConn = 5maxConn = 100globalTable = "global_table"branchTable = "branch_table"lockTable = "lock_table"queryLimit = 100maxWait = 5000}service {vgroupMapping.storage-service-group= "default"vgroupMapping.order-service-group= "default"vgroupMapping.business-service-group= "default"}
}
创建seata数据库
create database seata;
创建mysql用户seata/seatapass
create user 'seata'@'%' identified by 'seatapass';
grant all privileges on seata.* to 'seata'@'%' identified by 'seatapass';
执行建表语句
/*Navicat Premium Data TransferSource Server : OBD服务器Source Server Type : MySQLSource Server Version : 50730Source Host : 192.168.100.205:3306Source Schema : seataTarget Server Type : MySQLTarget Server Version : 50730File Encoding : 65001Date: 09/09/2020 11:54:01
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for branch_table
-- ----------------------------
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table` (`branch_id` bigint(20) NOT NULL,`xid` varchar(128) NOT NULL,`transaction_id` bigint(20) DEFAULT NULL,`resource_group_id` varchar(32) DEFAULT NULL,`resource_id` varchar(256) DEFAULT NULL,`branch_type` varchar(8) DEFAULT NULL,`status` tinyint(4) DEFAULT NULL,`client_id` varchar(64) DEFAULT NULL,`application_data` varchar(2000) DEFAULT NULL,`gmt_create` datetime(6) DEFAULT NULL,`gmt_modified` datetime(6) DEFAULT NULL,PRIMARY KEY (`branch_id`),KEY `idx_xid` (`xid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for global_table
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table` (`xid` varchar(128) NOT NULL,`transaction_id` bigint(20) DEFAULT NULL,`status` tinyint(4) NOT NULL,`application_id` varchar(32) DEFAULT NULL,`transaction_service_group` varchar(32) DEFAULT NULL,`transaction_name` varchar(128) DEFAULT NULL,`timeout` int(11) DEFAULT NULL,`begin_time` bigint(20) DEFAULT NULL,`application_data` varchar(2000) DEFAULT NULL,`gmt_create` datetime DEFAULT NULL,`gmt_modified` datetime DEFAULT NULL,PRIMARY KEY (`xid`),KEY `idx_gmt_modified_status` (`gmt_modified`,`status`),KEY `idx_transaction_id` (`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Table structure for lock_table
-- ----------------------------
DROP TABLE IF EXISTS `lock_table`;
CREATE TABLE `lock_table` (`row_key` varchar(128) NOT NULL,`xid` varchar(96) DEFAULT NULL,`transaction_id` bigint(20) DEFAULT NULL,`branch_id` bigint(20) NOT NULL,`resource_id` varchar(256) DEFAULT NULL,`table_name` varchar(32) DEFAULT NULL,`pk` varchar(36) DEFAULT NULL,`gmt_create` datetime DEFAULT NULL,`gmt_modified` datetime DEFAULT NULL,PRIMARY KEY (`row_key`),KEY `idx_branch_id` (`branch_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;SET FOREIGN_KEY_CHECKS = 1;每个需要全局事务的数据库中,放一个undo_log的表/*Navicat Premium Data TransferSource Server : OBD服务器Source Server Type : MySQLSource Server Version : 50730Source Host : 192.168.100.205:3306Source Schema : seata-demoTarget Server Type : MySQLTarget Server Version : 50730File Encoding : 65001Date: 07/08/2020 10:15:13
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`branch_id` bigint(20) NOT NULL,`xid` varchar(100) NOT NULL,`context` varchar(128) NOT NULL,`rollback_info` longblob NOT NULL,`log_status` int(11) NOT NULL,`log_created` datetime NOT NULL,`log_modified` datetime NOT NULL,`ext` varchar(100) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=432 DEFAULT CHARSET=utf8;SET FOREIGN_KEY_CHECKS = 1;
vim application.properties
registry {# file 、nacos 、eureka、redis、zk、consul、etcd3、sofatype = "nacos"loadBalance = "RandomLoadBalance"loadBalanceVirtualNodes = 10nacos {application = "seata-server1" #每个节点命名不同1,2,3serverAddr = "192.168.100.201:8848,192.168.100.202:8848,192.168.100.203:8848" #nacos地址group = "SEATA_GROUP"namespace = ""cluster = "default"username = "nacos"password = "nacos" #nacos登陆账密}
}config {# file、nacos 、apollo、zk、consul、etcd3type = "file"file {name = "file.conf"}}
cd bin/
sh seata-server.sh -p 8091 -h 192.168.100.206 -m db -n 1 &> seata.log &
-h 为注册到注册中心的地址,通常为seata自身IP
#另外两节点启动
sh seata-server.sh -p 8091 -h 192.168.100.207 -m db -n 2 &> seata.log &
sh seata-server.sh -p 8091 -h 192.168.100.208 -m db -n 3 &> seata.log &
http://192.168.100.203:8848/nacos
1节点
vi startseata.sh
sh /home/ywzt/seata-server.sh -p 8091 -h 192.168.100.206 -m file &> seata.log &
2节点
vi startseata.sh
sh /home/ywzt/seata-server.sh -p 8091 -h 192.168.100.206 -m file &> seata.log &
3节点
vi startseata.sh
sh /home/ywzt/seata-server.sh -p 8091 -h 192.168.100.206 -m file &> seata.log &
三个节点操作
(使用root用户操作)
vi /etc/rc.d/rc.local
在最后一行加上
su - ywzt -c "/home/ywzt/seata/startseata.sh"
chmod +x /etc/rc.d/rc.local