seata2.3版本,2.6版本安装步骤-以及遇上的坑
seata2.3版本集成mysql遇上的问题Windows 下数据库驱动改为com.mysql.cj.jdbc.Driver并且也已经在%BASEDIR%/lib/jdbc下添加 MySQL 驱动mysql-connector-java-8.0.30.jar但 seata-server 2.3.0 启动失败下面是错误堆栈简要信息Caused by: org.apache.seata.common.exception.StoreException: The driver {com.mysql.cj.jdbc.Driver} cannot be found in the path D:\Seata-2.3.0\seata-server/lib/jdbc/. Please ensure that the appropriate database driver dependencies are included in the classpath. at org.apache.seata.core.store.db.AbstractDataSourceProvider.validate(AbstractDataSourceProvider.java:103) at org.apache.seata.core.store.db.AbstractDataSourceProvider.generate(AbstractDataSourceProvider.java:84)解决方案经过研究源码和seata-server.bat脚本得知源码中需要通过java.class.path系统变量得到 JDBC 驱动 jar 包并且 jar 包还要以mysql-connector-java-作为前缀。而脚本中通过java -jar方式启动-classpath变量并没有生效。因此脚本中需要做出两点改动去掉-classpath变量将-jar %BASEDIR%/target/seata-server.jar修改为-cp %BASEDIR%/target/seata-server.jar;%BASEDIR%/lib org.springframework.boot.loader.PropertiesLauncher以上是2.3版本2.6版本已经做了bat启动命令的优化只需要把jar包导入lib/jdbc下就行了安装步骤下面我以2.3的来写2.x 版本对应的nacos版本最好是 nacos-server-2.3.0使用3.x或者1.x会有报错少走弯路1.下载https://seata.apache.org/zh-cn/release-history/seata-server 点击官网下载你喜欢的版本就行2解压进入lib下面的jdbc目录下载jar包到这个目录下面并且要命名为mysql-connector-java-xx开头否则会报错 比如我的nacos上面seataServer.properties 如下下载的jar包本来是mysql-connector-j-8.0.33.jar要修改成mysql-connector-java-8.0.33.jar 2.6版本就不需要修改了3. config目录下 application.yml配置如下server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${log.home:${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: type: nacos nacos: server-addr: 127.0.0.1:8848 namespace: 539fe715-08e4-4614-8941-059cc5c37497 username: nacos password: nacos group: SEATA_GROUP # 指定Nacos里的配置文件dataId >-cp %BASEDIR%/target/seata-server.jar;%BASEDIR%/lib org.springframework.boot.loader.PropertiesLauncher5.把seata用到的数据库导入你的mysql下https://github.com/apache/incubator-seata/blob/v2.6.0/script/server/db/mysql.sql6.执行启动就ok了7.下面是我的nacos seataServer.properties整体文件可以复制用# 事务分组若依固定不要改 service.vgroupMapping.ruoyi-system-groupdefault service.vgroupMapping.ruoyi-admin-groupdefault service.vgroupMapping.ruoyi-gateway-groupdefault service.vgroupMapping.ruoyi-gen-groupdefault service.vgroupMapping.ruoyi-job-groupdefault service.vgroupMapping.ruoyi-file-groupdefault service.vgroupMapping.ruoyi-monitor-groupdefault # seata-server集群地址单机写default:127.0.0.1:8091 service.default.grouplist127.0.0.1:8091 service.enableDegradefalse service.disableGlobalTransactionfalse # 客户端事务超时、锁重试 client.rm.asyncCommitBufferLimit10000 client.rm.lock.retryInterval10 client.rm.lock.retryTimes30 client.rm.lock.retryPolicyBranchTimeoutfalse client.tm.defaultGlobalTransactionTimeout60000 client.tm.degradeCheckfalse client.tm.degradeCheckAllowTimes10 client.tm.degradeCheckPeriod2000 # Undo日志回滚日志 client.undo.logTableundo_log client.undo.logDeletePeriod86400000 client.undo.compress.enabletrue client.undo.compress.typezip client.undo.compress.threshold64k # TCC模式默认开启 tcc.fence.logTableNametcc_fence_log tcc.fence.cleanPeriod1h log.exceptionRate100 # 存储模式DB解决你驱动缺失报错核心段 store.modedb store.lock.modedb store.session.modedb # 数据库连接 MySQL8必须用cj驱动 store.db.datasourcedruid store.db.dbTypemysql store.db.driverClassNamecom.mysql.cj.jdbc.Driver # 修改为你的ry-seata库地址、账号密码 store.db.urljdbc:mysql://127.0.0.1:3306/ry-seata?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingutf-8useSSLfalseallowMultiQueriestrue store.db.userroot store.db.password123456 # 连接池参数 store.db.minConn5 store.db.maxConn30 store.db.maxWait5000 # Seata事务表ry-seata.sql自动生成不要修改表名 store.db.globalTableglobal_table store.db.branchTablebranch_table store.db.lockTablelock_table store.db.distributedLockTabledistributed_lock store.db.queryLimit100 # 文件存储db模式可注释仅file模式启用 #store.file.dirfile_store/data #store.file.maxBranchSessionSize16384 #store.file.maxGlobalSessionSize512 #store.file.fileWriteBufferCacheSize16384 #store.file.flushDiskModeasync #store.file.sessionReloadReadSize100