Detailed explanation of the deployment process of SEATA transaction service Docker

Detailed explanation of the deployment process of SEATA transaction service Docker

1. Create a database authorization statement

> create database seata;
> grant all on seata.* to seata_user@'%' identified by '123455'

2. Database table creation statement

cat create_seata_table.sql

-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- 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_gmt_modified_status` (`gmt_modified`, `status`),
  KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
 DEFAULT CHARSET = utf8;

-- 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 = utf8;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
  `row_key` VARCHAR(128) NOT NULL,
  `xid` VARCHAR(96),
  `transaction_id` BIGINT,
  `branch_id` BIGINT NOT NULL,
  `resource_id` VARCHAR(256),
  `table_name` VARCHAR(32),
  `pk` VARCHAR(36),
  `gmt_create` DATETIME,
  `gmt_modified` DATETIME,
  PRIMARY KEY (`row_key`),
  KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
 DEFAULT CHARSET = utf8;

3. Import table creation statements

mysql -useata_user -p seata < create_seata_table.sql

4. FILE.CONF modifies database connection information

cat /home/seata-server/resources/file.conf
## transaction log store, only used in seata-server
store {
 ## store mode: file, db, redis
 mode = "db"
 ##rsa decryption public key
 publicKey = ""
 ## file store property
 file {
  ##store location dir
  dir = "sessionStore"
  # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
  maxBranchSessionSize = 16384
  # globe session size , if exceeded throws exceptions
  maxGlobalSessionSize = 512
  # file buffer size , if exceeded allocate new buffer
  fileWriteBufferCacheSize = 16384
  # when recover batch read size
  sessionReloadReadSize = 100
  # async, sync
  flushDiskMode = async
 }

 ## 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.jdbc.Driver"
  ## if using mysql to store the data, recommend adding rewriteBatchedStatements=true in jdbc connection param
  url = "jdbc:mysql://192.168.56.30:3306/seata?rewriteBatchedStatements=true" user = "seata_user"
  password = "123455"
  minConn = 5
  maxConn = 100
  globalTable = "global_table"
  branchTable = "branch_table"
  lockTable = "lock_table"
  queryLimit = 100
  maxWait = 5000
 }

 ## redis store property
 redis {
  ## redis mode: single, sentinel
  mode = "single"
  ## single mode property
  single {
   host = "127.0.0.1"
   port = "6379"
  }
  ## sentinel mode property
  sentinel {
   masterName = ""
   ## such as "10.28.235.65:26379,10.28.235.65:26380,10.28.235.65:26381"
   sentinelHosts = ""
  }
  password = ""
  database = "0"
  minConn = 1
  maxConn = 10
  maxTotal = 100
  queryLimit = 100
 }
}

5. REGISTRY.CONF modifies the registered NACOS connection information

cat /home/seata-server/resources/registry.conf
registry {
 # file, nacos, eureka, redis, zk, consul, etcd3, sofa
 type = "nacos"
 loadBalance = "RandomLoadBalance"
 loadBalanceVirtualNodes = 10

 nacos
  application = "es-provider-seata"
  serverAddr = "192.168.56.30:8848"
  group = "DEFAULT_GROUP"
  namespace = ""
  cluster = "default"
  username = "nacos"
  password = "nacos"
 }
 eureka
  serviceUrl = "http://localhost:8761/eureka"
  application = "default"
  weight = "1"
 }
 redis {
  serverAddr = "localhost:6379"
  db = 0
  password = ""
  cluster = "default"
  timeout = 0
 }
 zk
  cluster = "default"
  serverAddr = "127.0.0.1:2181"
  sessionTimeout = 6000
  connectTimeout = 2000
  username = ""
  password = ""
 }
 consul {
  cluster = "default"
  serverAddr = "127.0.0.1:8500"
  aclToken = ""
 }
 etcd3 {
  cluster = "default"
  serverAddr = "http://localhost:2379"
 }
 sofa
  serverAddr = "127.0.0.1:9603"
  application = "default"
  region = "DEFAULT_ZONE"
  datacenter = "DefaultDataCenter"
  cluster = "default"
  group = "SEATA_GROUP"
  addressWaitTime = "3000"
 }
 file {
  name = "file.conf"
 }
}

config {
 # file, nacos, apollo, zk, consul, etcd3
 type = "file"

 nacos
  serverAddr = "127.0.0.1:8848"
  namespace = ""
  group = "SEATA_GROUP"
  username = ""
  password = ""
  dataId = "seataServer.properties"
 }
 consul {
  serverAddr = "127.0.0.1:8500"
  aclToken = ""
 }
 apollo
  appId = "seata-server"
  ## apolloConfigService will cover apolloMeta
  apolloMeta = "http://192.168.1.204:8801"
  apolloConfigService = "http://192.168.1.204:8080"
  namespace = "application"
  apolloAccesskeySecret = ""
  cluster = "seata"
 }
 zk
  serverAddr = "127.0.0.1:2181"
  sessionTimeout = 6000
  connectTimeout = 2000
  username = ""
  password = ""
 }
 etcd3 {
  serverAddr = "http://localhost:2379"
 }
 file {
  name = "file.conf"
 }
}

6. DOCKER deployment service

docker run --name seata-server-latest -p 8091:8091 \
-v /home/seata-server/resources/file.conf:/seata-server/resources/file.conf \ 
-v /home/seata-server/resources/registry.conf:/seata-server/resources/registry.conf \
-v /home/seata-server/logs:/root/logs \
seataio/seata-server:1.3.0

This is the end of this article about the detailed process of deploying the Seata transaction service Docker. For more relevant Seata Docker deployment content, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • How springboot cloud uses eureka to integrate distributed transaction component Seata
  • Detailed installation and use of seata-1.4.0 in springcloud
  • Detailed explanation of SpringCloud-Alibaba-Seata distributed transactions
  • How to solve the problem that Seata cannot use MySQL 8 version
  • Springcloud seata distributed transaction implementation code analysis
  • SpringCloud Alibaba Seata (Collection Edition)
  • Detailed explanation of SpringBoot's distributed transaction solution based on Dubbo and Seata
  • Springcloud seata nacos environment construction process diagram
  • Detailed explanation of SpringBoot+Dubbo+Seata distributed transactions
  • One article to understand the implementation principle of Seata

<<:  Detailed explanation of the use of Vue image drag and drop zoom component

>>:  Simple principles for web page layout design

Recommend

A link refresh page and js refresh page usage examples

1. How to use the link: Copy code The code is as f...

Vue + OpenLayers Quick Start Tutorial

Openlayers is a modular, high-performance and fea...

Vue+Bootstrap realizes a simple student management system

I used vue and bootstrap to make a relatively sim...

Advantages and Problems of XHTML CSS Website Design

XHTML is the standard website design language cur...

How much data can be stored in a MySQL table?

Programmers must deal with MySQL a lot, and it ca...

MySQL uses the Partition function to implement horizontal partitioning strategy

Table of contents 1 Review 2 Five strategies for ...

An article to show you how to create and use Vue components

Table of contents 1. What is a component? 2. Crea...

Gallery function implemented by native Js

Table of contents The first The second Native Js ...

How to install MySQL 8.0.13 in Alibaba Cloud CentOS 7

1. Download the MySQL installation package (there...

Detailed explanation of the principle and usage of MySQL views

This article uses examples to illustrate the prin...

Example code for element multiple tables to achieve synchronous scrolling

Element UI implements multiple tables scrolling a...

Install CentOS system based on WindowsX Hyper-V

At present, most people who use Linux either use ...

JS implements WeChat's "shit bombing" function

Hello everyone, I am Qiufeng. Recently, WeChat ha...

Share some key interview questions about MySQL index

Preface An index is a data structure that sorts o...