seata1.4.0 + zookeeper + springboot + mysql
0.环境准备
1) mysql数据库 192.168.1.110:3306
数据库 seata
数据库 service-a
数据库 service-b
2) seata-server 192.168.1.165:8091
3) zookeeper 192.168.1.165:2181
1.下载seata-server TC
https://seata.io/zh-cn/blog/download.html
2.配置seata-server TC
1) file.conf
## transaction log store, only used in seata-server
store {
## store mode: file、db、redis
mode = "db"
## database store property
db {
## 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.cj.jdbc.Driver"
url = "jdbc:mysql://192.168.1.110:3306/seata?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false"
user = "root"
password = "000000"
minConn = 5
maxConn = 100
globalTable = "global_table"
branchTable = "branch_table"
lockTable = "lock_table"
queryLimit = 100
maxWait = 5000
}
}
2) registry.conf
## transaction log store, only used in seata-server
store {
## store mode: file、db、redis
mode = "db"
## database store property
db {
## 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.cj.jdbc.Driver"
url = "jdbc:mysql://192.168.1.110:3306/seata?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false"
user = "root"
password = "000000"
minConn = 5
maxConn = 100
globalTable = "global_table"
branchTable = "branch_table"
lockTable = "lock_table"
queryLimit = 100
maxWait = 5000
}
}
3) logback.xml
3.将config.txt配置同步到zk
config.txt
transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.threadFactory.bossThreadPrefix=NettyBoss
transport.threadFactory.workerThreadPrefix=NettyServerNIOWorker
transport.threadFactory.serverExecutorThreadPrefix=NettyServerBizHandler
transport.threadFactory.shareBossWorker=false
transport.threadFactory.clientSelectorThreadPrefix=NettyClientSelector
transport.threadFactory.clientSelectorThreadSize=1
transport.threadFactory.clientWorkerThreadPrefix=NettyClientWorkerThread
transport.threadFactory.bossThreadSize=1
transport.threadFactory.workerThreadSize=8
transport.shutdown.wait=3
transport.serialization=seata
transport.compressor=none
transport.enableClientBatchSendRequest=true
service.vgroupMapping.seata_service_group=default
service.enableDegrade=false
service.disable=false
service.max.commit.retry.timeout=-1
service.max.rollback.retry.timeout=-1
service.disableGlobalTransaction=false
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.undo.logDeletePeriod=1000
server.undo.logSaveDays=30
server.maxCommitRetryTimeout=5000
server.maxRollbackRetryTimeout=5000
server.rollbackRetryTimeoutUnlockEnable=true
server.enableCheckAuth=false
client.lock.retry.internal=10
client.lock.retry.times=30
client.report.retry.count=5
client.support.spring.datasource.autoproxy=false
client.rm.asyncCommitBufferLimit=10000
client.rm.tableMetaCheckEnable=false
client.rm.sqlParserType=druid
client.rm.reportRetryCount=3
client.rm.reportSuccessEnable=false
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.tm.commitRetryCount=3
client.tm.rollbackRetryCount=3
client.tm.degradeCheck=false
client.tm.defaultGlobalTransactionTimeout=60000
client.undo.logSerialization=jackson
client.undo.dataValidation=true
client.undo.logTable=undo_log
client.async.commit.buffer.limit=10000
store.mode=db
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.datasource=druid
store.db.dbType=mysql
store.db.url=jdbc:mysql://192.168.1.110:3306/seata?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
store.db.user=root
store.db.password=000000
store.db.minConn=10
store.db.maxConn=30
store.db.maxWait=5000
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.file.sessionReloadReadSize=
recovery.committingRetryPeriod=1000
recovery.asynCommittingRetryPeriod=1000
recovery.rollbackingRetryPeriod=1000
recovery.timeoutRetryPeriod=1000
transaction.undo.data.validation=true
transaction.undo.log.serialization=jackson
transaction.undo.log.save.days=7
transaction.undo.log.delete.period=86400000
transaction.undo.log.table=undo_log
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898
./seata-zk-config.sh -h 192.168.1.165 -p 2181 -z /data/apache-zookeeper-3.6.2-bin
4.seata-server 数据库(seata)建表
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(64) DEFAULT NULL,
`transaction_service_group` varchar(64)