目录
开始语
⏬下载最新版本1.6版本seata
️seata.env 环境配置文件
️application.yml配置文件
️seata-docker-compose.yml执行文件
三个文件的描述和注意事项
️MySQL创建表
️Nacos创建命名空间+properties配置文件
️docker-compose部署seata
检查是否启动成功
结束语
一位普通的程序员,慢慢在努力变强!
温馨提示:如果没有安装docker的同学前往下列步骤⬇️
部署docker
部署docker-compose
部署MySQL安装官网的部署方式
部署Nacos新版2.0(最细步骤)
温馨提示:本章节部署方式Nacos注册中心+MySQL存储!
# 下载文件,但是这个下载很慢,下方提供了 三个可执行文件wget https://gh.api.99988866.xyz/https://github.com/seata/seata/releases/download/v1.6.1/seata-server-1.6.1.tar.gz
vi seata.env
SEATA_NACOS_SERVER_ADDR=192.168.125.122:8848
SEATA_NACOS_NAMESPACE=seata-server
SEATA_NACOS_GROUP=SEATA_GROUP
SEATA_NACOS_USERNAME=nacos
SEATA_NACOS_PASSWORD=nacos
SEATA_NACOS_DATA_ID=seataServer.properties
MYSQL_URL=192.168.125.122:3306/seata-server
MYSQL_USERNAME=root
MYSQL_PASSWORD=wang_ROOT_123
server:
port: 7091
spring:
application:
name: seata-server
logging:
config: classpath:logback-spring.xml
file:
path: /logs/seata
console:
user:
username: seata
password: seata
seata:
config:
type: nacos
nacos:
server-addr: ${SEATA_NACOS_SERVER_ADDR}
namespace: ${SEATA_NACOS_NAMESPACE}
group: ${SEATA_NACOS_GROUP}
username: ${SEATA_NACOS_USERNAME}
password: ${SEATA_NACOS_PASSWORD}
context-path:
data-id: ${SEATA_NACOS_DATA_ID}
registry:
type: nacos
preferred-networks: 30.240.*
nacos:
application: seata-server
server-addr: ${SEATA_NACOS_SERVER_ADDR}
group: ${SEATA_NACOS_GROUP}
namespace: ${SEATA_NACOS_NAMESPACE}
cluster: default
username: ${SEATA_NACOS_USERNAME}
password: ${SEATA_NACOS_PASSWORD}
server:
service-port: 8091
max-commit-retry-timeout: -1
max-rollback-retry-timeout: -1
rollback-retry-timeout-unlock-enable: false
enable-check-auth: true
enable-parallel-request-handle: true
retry-dead-threshold: 130000
xaer-nota-retry-timeout: 60000
enableParallelRequestHandle: true
recovery:
committing-retry-period: 1000
async-committing-retry-period: 1000
rollbacking-retry-period: 1000
timeout-retry-period: 1000
undo:
log-save-days: 7
log-delete-period: 86400000
session:
branch-async-queue-size: 5000
enable-branch-async-remove: false
store:
mode: db
session:
mode: db
lock:
mode: db
file:
dir: sessionStore
max-branch-session-size: 16384
max-global-session-size: 512
file-write-buffer-cache-size: 16384
session-reload-read-size: 100
flush-disk-mode: async
db:
datasource: druid
db-type: mysql
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${MYSQL_URL}?rewriteBatchedStatements=true
user: ${MYSQL_USERNAME}
password: ${MYSQL_PASSWORD}
min-conn: 10
max-conn: 100
global-table: global_table
branch-table: branch_table
lock-table: lock_table
distributed-lock-table: distributed_lock
query-limit: 1000
max-wait: 5000
metrics:
enabled: false
registry-type: compact
exporter-list: prometheus
exporter-prometheus-port: 9898
transport:
rpc-tc-request-timeout: 15000
enable-tc-server-batch-send-response: false
shutdown:
wait: 3
thread-factory:
boss-thread-prefix: NettyBoss
worker-thread-prefix: NettyServerNIOWorker
boss-thread-size: 1
security:
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
tokenValidityInMilliseconds: 1800000
ignore:
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
version: "3.1"
services:
seata-server:
image: seataio/seata-server:1.6.1
ports:
- "7091:7091"
- "8091:8091"
env_file:
- ./seata.env
environment:
- STORE_MODE=db
- SEATA_IP=192.168.125.122
- SEATA_PORT=8091
volumes:
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime"
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"
- "./application.yml:/seata-server/resources/application.yml"
- 三个文放置同一个目录下
- application中的配置一个都不能少,因为是注册+mysql的模式
- 检查好nacos+mysql是否都部署号,并且配置是否齐全
还没完,接下来再MySQL中添加表、在Nacos创建对应的配置
-- -------------------------------- The script used when storeMode is 'db' --------------------------------
DROP DATABASE IF EXISTS `seata-server`;
CREATE DATABASE `seata-server` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 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);
- 创建seataServer.properties配置
- Data ID=seataServer.properties
- Group=SEATA_GROUP
- 配置文件格式=Properties
- 配置如下:
store.mode=db
#-----db-----
store.db.datasource=druid
store.db.dbType=mysql
# 需要根据mysql的版本调整driverClassName
# mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
# mysql8以下版本的driver:com.mysql.jdbc.Driver
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://192.168.125.122:3306/seata-server?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
store.db.user=root
store.db.password=wang_ROOT_123
# 数据库初始连接数
store.db.minConn=1
# 数据库最大连接数
store.db.maxConn=20
# 获取连接时最大等待时间 默认5000,单位毫秒
store.db.maxWait=5000
# 全局事务表名 默认global_table
store.db.globalTable=global_table
# 分支事务表名 默认branch_table
store.db.branchTable=branch_table
# 全局锁表名 默认lock_table
store.db.lockTable=lock_table
# 查询全局事务一次的最大条数 默认100
store.db.queryLimit=100
# undo保留天数 默认7天,log_status=1(附录3)和未正常清理的undo
server.undo.logSaveDays=7
# undo清理线程间隔时间 默认86400000,单位毫秒
server.undo.logDeletePeriod=86400000
# 二阶段提交重试超时时长 单位ms,s,m,h,d,对应毫秒,秒,分,小时,天,默认毫秒。默认值-1表示无限重试
# 公式: timeout>=now-globalTransactionBeginTime,true表示超时则不再重试
# 注: 达到超时时间后将不会做任何重试,有数据不一致风险,除非业务自行可校准数据,否者慎用
server.maxCommitRetryTimeout=-1
# 二阶段回滚重试超时时长
server.maxRollbackRetryTimeout=-1
# 二阶段提交未完成状态全局事务重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.committingRetryPeriod=1000
# 二阶段异步提交状态重试提交线程间隔时间 默认1000,单位毫秒
server.recovery.asynCommittingRetryPeriod=1000
# 二阶段回滚状态重试回滚线程间隔时间 默认1000,单位毫秒
server.recovery.rollbackingRetryPeriod=1000
# 超时状态检测重试线程间隔时间 默认1000,单位毫秒,检测出超时将全局事务置入回滚会话管理器
server.recovery.timeoutRetryPeriod=1000
docker - compose - f seata - docker - compose . yml up - d
[root@VM-4-6-centos seata-docker]# docker-compose ps
本章节完成了,各位正在努力的程序员们,如果你们觉得本文章对您有用的话,您学到了一些东西,希望猿友们点个赞+关注,支持一下猿仁!
持续更新中…欢迎各位猿友一起讨论讨论,下方留言哦!