跳到主要内容

Seata部署

一、下载seata:

mkdir -p /opt
cd /opt
yum install -y wget
wget http://res.javamall.com.cn/seata-server-1.0.0.tar.gz

或者

mkdir -p /opt
cd /opt
wget https://github.com/seata/seata/releases/download/v1.0.0/seata-server-1.0.0.tar.gz

解压

tar -xzvf seata-server-1.0.0.tar.gz

二、建立数据库

1、创建数据库:

CREATE DATABASE IF NOT EXISTS seata DEFAULT CHARSET utf8 COLLATE utf8_bin;

2、建立表结构:

在数据库中执行以下SQL语句:

-- ----------------------------
-- Table structure for branch_table
-- ----------------------------
DROP TABLE IF EXISTS `branch_table`;
CREATE TABLE `branch_table` (
`branch_id` bigint(20) NOT NULL,
`xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`transaction_id` bigint(20) NULL DEFAULT NULL,
`resource_group_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`branch_type` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`status` tinyint(4) NULL DEFAULT NULL,
`client_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gmt_create` datetime(0) NULL DEFAULT NULL,
`gmt_modified` datetime(0) NULL DEFAULT NULL,
PRIMARY KEY (`branch_id`) USING BTREE,
INDEX `idx_xid`(`xid`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for global_table
-- ----------------------------
DROP TABLE IF EXISTS `global_table`;
CREATE TABLE `global_table` (
`xid` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`transaction_id` bigint(20) NULL DEFAULT NULL,
`status` tinyint(4) NOT NULL,
`application_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`transaction_service_group` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`transaction_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`timeout` int(11) NULL DEFAULT NULL,
`begin_time` bigint(20) NULL DEFAULT NULL,
`application_data` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gmt_create` datetime(0) NULL DEFAULT NULL,
`gmt_modified` datetime(0) NULL DEFAULT NULL,
PRIMARY KEY (`xid`) USING BTREE,
INDEX `idx_gmt_modified_status`(`gmt_modified`, `status`) USING BTREE,
INDEX `idx_transaction_id`(`transaction_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for lock_table
-- ----------------------------
DROP TABLE IF EXISTS `lock_table`;
CREATE TABLE `lock_table` (
`row_key` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`xid` varchar(96) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`transaction_id` bigint(20) NULL DEFAULT NULL,
`branch_id` bigint(20) NOT NULL,
`resource_id` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`table_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`pk` varchar(36) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`gmt_create` datetime(0) NULL DEFAULT NULL,
`gmt_modified` datetime(0) NULL DEFAULT NULL,
PRIMARY KEY (`row_key`) USING BTREE,
INDEX `idx_branch_id`(`branch_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;


三、运行seata:

1、修改配置文件

seata所在目录/conf/file.conf

vi /opt/seata/conf/file.conf

修改数据库配置:

## transaction log store, only used in seata-server
store {
mode = "db"
#其他配置,省略...
db {
#其他配置,省略...
driver-class-name = "com.mysql.jdbc.Driver"

#修改为seata数据库地址
url = "jdbc:mysql://192.168.2.13:3306/seata"

#修改为seata数据库的用户名和密码
user = "root"
password = "123456"
}
}

2、启动seata

启动seata需要jdk的支持,如果未安装jdk可参考《jdk安装

进入到seata/bin目录:

 nohup ./seata-server.sh -h 127.0.0.1 -p 8091 > nohup.log 2>&1 &

四、修改javashop中的seata配置:

重点在于如下配置:

seata:
enabled: true #开启seata
#其他配置详细见下面,这里略...
service:
vgroup-mapping: default
grouplist: seata server所在ip:8091 #这里要配置刚刚启动的seata的机器ip
enable-degrade: false

一下为完整的seata配置:

seata:
enabled: true #开启seata
application-id: javashop
tx-service-group: javashopt_tx_group
client:
rm-async-commit-buffer-limit: 1000
rm-report-retry-count: 5
rm-table-meta-check-enable: false
rm-report-success-enable: true
rm:
lock:
lock-retry-interval: 10
lock-retry-times: 30
lock-retry-policy-branch-rollback-on-conflict: true
tm-commit-retry-count: 5
tm-rollback-retry-count: 5
support:
spring:
datasource-autoproxy: true
undo:
undo-data-validation: true
undo-log-serialization: jackson
undo-log-table: undo_log
client:
log:
exceptionRate: 100
service:
vgroup-mapping: default
grouplist: 127.0.0.1:8091
enable-degrade: false
disable-global-transaction: false
transport:
shutdown:
wait: 3
thread-factory:
boss-thread-prefix: NettyBoss
worker-thread-prefix: NettyServerNIOWorker
server-executor-thread-prefix: NettyServerBizHandler
share-boss-worker: false
client-selector-thread-prefix: NettyClientSelector
client-selector-thread-size: 1
client-worker-thread-prefix: NettyClientWorkerThread
type: TCP
server: NIO
heartbeat: true
serialization: seata
compressor: none
enable-client-batch-send-request: true
config:
type: file
file:
name: file.conf
registry:
type: file
file:
name: file.conf

五、验证:

正常启动javashop则分布式事务已经生效