版本如下:
seata-server 1.6.1 spring-cloud-alibaba.version 2021.0.1.0 mysql-connector-java 8.0.21 druid-spring-boot-starter 1.2.8 dynamic-datasource-spring-boot-starter 3.5.0 mybatis-plus-boot-starter 3.5.1 java.version 11
seata-server
提取配置
docker run --rm --name seata-server -d -p 8091:8091 seataio/seata-server:1.6.1
#在宿主机对应路径下创建conf文件夹,放置导出的配置文件 docker cp [容器id]:/seata-server/resources/* /usr/app/seata-server/conf #复制完即可stop停止容器,自动删除掉
修改resources/application.yml
# Copyright 1999-2019 Seata.io Group. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${user.home}/logs/seata # extend: # logstash-appender: # destination: 127.0.0.1:4560 # kafka-appender: # bootstrap-servers: 127.0.0.1:9092 # topic: logback_to_logstash console: user: username: seata password: seata seata: config: # support: nacos, consul, apollo, zk, etcd3 type: nacos nacos: server-addr: nacos服务器地址 namespace: seata group: SEATA_GROUP data-id: seataServer.properties registry: # support: nacos, eureka, redis, zk, consul, etcd3, sofa type: nacos nacos: application: seata-server server-addr: nacos服务器地址 group: SEATA_GROUP namespace: seata # tc集群名称 cluster: default # server: # service-port: 8091 #If not configured, the default is '${server.port} + 1000' security: secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017 tokenValidityInMilliseconds: 1800000 ignore: urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login
nacos创建配置
seataServer.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://mysql地址:3306/party-go?useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false store.db.user=root store.db.password=root密码 # 数据库初始连接数 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
service.vgroupMapping.party-tx-group
default
创建mysql表
CREATE TABLE `distributed_lock` ( `lock_key` char(20) NOT NULL, `lock_value` varchar(20) NOT NULL, `expire` bigint(20) DEFAULT NULL, PRIMARY KEY (`lock_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分布式事务表'; 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_status_gmt_modified` (`status`,`gmt_modified`), KEY `idx_transaction_id` (`transaction_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分布式事务表'; CREATE TABLE `lock_table` ( `row_key` varchar(128) NOT NULL, `xid` varchar(128) 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, `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking', `gmt_create` datetime DEFAULT NULL, `gmt_modified` datetime DEFAULT NULL, PRIMARY KEY (`row_key`), KEY `idx_status` (`status`), KEY `idx_branch_id` (`branch_id`), KEY `idx_xid` (`xid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分布式事务表'; 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=21 DEFAULT CHARSET=utf8 COMMENT='分布式事务日志';
docker-compose.yml
version: "3.1" services: seata-server-1: image: seataio/seata-server:1.6.1 ports: - "7091:7091" - "8091:8091" environment: - STORE_MODE=db # 以SEATA_IP作为host注册seata server - SEATA_IP=192.168.0.113 - SEATA_PORT=8091 volumes: - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" #设置系统时区 - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone" #设置时区 # 假设我们通过docker cp命令把资源文件拷贝到相对路径`./seata-server/resources`中 # 如有问题,请阅读上面的[注意事项]以及[使用自定义配置文件] - "./seata-server/resources:/seata-server/resources" # seata-server-2: # image: seataio/seata-server:1.6.1 # ports: # - "7092:7091" # - "8092:8091" # environment: # - STORE_MODE=db # # 以SEATA_IP作为host注册seata server # - SEATA_IP=192.168.0.113 # - SEATA_PORT=8092 # volumes: # - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" #设置系统时区 # - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone" #设置时区 # # 假设我们通过docker cp命令把资源文件拷贝到相对路径`./seata-server/resources`中 # # 如有问题,请阅读上面的[注意事项]以及[使用自定义配置文件] # - "./seata-server/resources:/seata-server/resources" # seata服务3......seata服务N
客户都安使用
引入pom依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <exclusions> <exclusion> <artifactId>druid</artifactId> <groupId>com.alibaba</groupId> </exclusion> </exclusions> </dependency> <!--数据库驱动及连接池--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency> <!-- Druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> <!-- Dynamic DataSource --> <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.5.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency>
客户端配置
spring: datasource: druid: stat-view-servlet: enabled: false loginUsername: admin loginPassword: 1111111 dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 druid: initial-size: 5 min-idle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 filters: stat,slf4j connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 datasource: # 主库数据源 master: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://mysql地址:3306/party-go?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: root密码 seata: true # 开启分布式事务代理 # 从库数据源 # slave: # username: # password: # url: # driver-class-name: seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭 seata: application-id: ${spring.application.name} # 事务分组名 tx-service-group: party-tx-group # 事务分组映射 service: vgroupMapping: party-tx-group: "default" enable-auto-data-source-proxy: false config: type: nacos nacos: server-addr: nacos地址 namespace: seata group: SEATA_GROUP dataId: "seataServer.properties" registry: type: nacos nacos: application: seata-server server-addr: nacos地址 group: SEATA_GROUP namespace: seata
标签:seata,DEFAULT,db,笔记,server,使用,NULL,id From: https://www.cnblogs.com/qianxiaoPro/p/17031398.html