seata docker 高可用部署的詳細(xì)介紹
版本
啟動(dòng)
通過(guò)環(huán)境變量SEATA_CONFIG_NAME指定配置文件位置/root/seata-config/registry.conf
docker run --name seata-server \
-p 8091:8091 \
-e SEATA_CONFIG_NAME=file:/root/seata-config/registry \
-v /User/seata/config:/root/seata-config \
seataio/seata-server
配置文件
實(shí)現(xiàn)高可用需要依賴注冊(cè)中心,配置中心,數(shù)據(jù)庫(kù)
registry.conf
registry {
type = "nacos"
nacos {
application = "seata-server"
serverAddr = "192.168.199.2"
namespace = "test"
group = "SEATA_GROUP"
cluster = "default"
username = ""
password = ""
}
}
config {
type = "nacos"
nacos {
serverAddr = "192.168.199.2"
namespace = "test"
group = "SEATA_GROUP"
username = ""
password = ""
}
}
NACOS配置
注:使用nacos配置,需要在對(duì)應(yīng)分組(SEATA_GROUP)下針對(duì)配置項(xiàng)目逐條配置文本值,而不是創(chuàng)建包含所有配置的properties文件,可以使用官方源碼中的腳本導(dǎo)入
全部可用配置參考
1. 使用數(shù)據(jù)庫(kù)
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.199.2:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=root
store.db.password=123456
創(chuàng)建數(shù)據(jù)庫(kù)
-- -------------------------------- 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(128),
`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;
異常處理
1. 客戶端報(bào)錯(cuò) Data too long for column ‘a(chǎn)pplication_id'
io.seata.core.exception.TmTransactionException: TransactionException[begin global request failed. xid=null, msg=Data truncation: Data too long for column ‘a(chǎn)pplication_id' at row 1]
at io.seata.tm.DefaultTransactionManager.begin(DefaultTransactionManager.java:55) ~[seata-all-1.3.0.jar:1.3.0]
at io.seata.tm.api.DefaultGlobalTransaction.begin(DefaultGlobalTransaction.java:104) ~[seata-all-1.3.0.jar:1.3.0]
at io.seata.tm.api.TransactionalTemplate.beginTransaction(TransactionalTemplate.java:175) ~[seata-all-1.3.0.jar:1.3.0]
seata數(shù)據(jù)庫(kù)global_table.application_id字段默認(rèn)長(zhǎng)度為varchar(32),如果客戶端應(yīng)用ID超長(zhǎng)則報(bào)此錯(cuò)
手動(dòng)修改字段類型增加長(zhǎng)度即可
到此這篇關(guān)于seata docker 高可用部署的文章就介紹到這了,更多相關(guān)seata docker部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker安裝RabbitMq添加用戶實(shí)現(xiàn)方式
這篇文章主要介紹了docker安裝RabbitMq添加用戶實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Docker overlay 網(wǎng)絡(luò)搭建的方法
Overlay網(wǎng)絡(luò)是指通過(guò)在現(xiàn)有網(wǎng)絡(luò)上疊加一個(gè)軟件定義的邏輯網(wǎng)絡(luò),這篇文章主要介紹了Docker overlay 網(wǎng)絡(luò)搭建的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Docker安裝并使用Mysql的詳細(xì)教程(實(shí)測(cè)可用!)
在日常的工作中經(jīng)常會(huì)需要將數(shù)據(jù)存在服務(wù)器,經(jīng)常用到的數(shù)據(jù)庫(kù)是mysql,下面這篇文章主要給大家介紹了關(guān)于Docker安裝并使用Mysql的詳細(xì)教程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
將Docker數(shù)據(jù)遷移到新磁盤(pán)的操作指南
在容器化應(yīng)用的部署中,Docker 通常將數(shù)據(jù)存儲(chǔ)在默認(rèn)的 /var/lib/docker 目錄,然而,隨著容器數(shù)量的增加和鏡像的累積,該目錄可能會(huì)迅速占滿系統(tǒng)磁盤(pán)空間,從而影響系統(tǒng)的正常運(yùn)行,所以本文給大家介紹了如何將Docker數(shù)據(jù)遷移到新磁盤(pán)的操作指南,需要的朋友可以參考下2025-04-04
教你如何將應(yīng)用從docker-compose遷移到k8s中
這篇文章主要介紹了如何將應(yīng)用從docker-compose遷移到k8s中,本文給大家分享一個(gè)專門(mén)的遷移工具,可方便地通過(guò)docker-compose.yaml自動(dòng)生成k8s的yaml部署文件,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
centos7更改docker倉(cāng)庫(kù)的方法
這篇文章主要介紹了centos7更改docker倉(cāng)庫(kù)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
docker打包golang應(yīng)用的過(guò)程分析
這篇文章主要介紹了docker打包golang應(yīng)用的過(guò)程分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
K8s集群重啟與恢復(fù)-Node節(jié)點(diǎn)啟停方式
這篇文章主要介紹了K8s集群重啟與恢復(fù)-Node節(jié)點(diǎn)啟停方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08

