使用docker安裝seata-server,mysql8引擎匈织,nacos作為注冊(cè)和配置中心

通過查看seata官方文檔浪默,我用docker-compose搭建了一個(gè)seata-server實(shí)例環(huán)境,并且把官方默認(rèn)的mysql5的driver替換成了mysql8的driver缀匕,使用了nacos作為seata-server的注冊(cè)中心和配置中心纳决。下面記錄一下我的操作步驟:

1.首先咱們先把seata的項(xiàng)目通過git給下載到本地;seata github地址

image-20200714170651496.png

2.修改config.txt配置文件

找到上圖中的兩個(gè)文件乡小,并修改config.txt阔加,使其符合自己當(dāng)前的需求

除以下幾個(gè)參數(shù)需要現(xiàn)在修改,其他參數(shù)可暫時(shí)不改满钟,或后面再修改都行:

# 修改存儲(chǔ)模式為數(shù)據(jù)庫存儲(chǔ)
store.mode=db
# 指定數(shù)據(jù)庫為mysql胜榔,其他數(shù)據(jù)庫類型根據(jù)自身情況修改
store.db.dbType=mysql
# 指定引擎,mysql8以下為com.mysql.jdbc.Driver湃番,mysql8為com.mysql.cj.jdbc.Driver
store.db.driverClassName=com.mysql.cj.jdbc.Driver
store.db.url=jdbc:mysql://{ip}:3306/{db_name}?useUnicode=true
store.db.user={db_user}
store.db.password={db_password}

注意:大多數(shù)小伙伴只需要修改以上幾個(gè)參數(shù)夭织,其他參數(shù)可暫時(shí)不改
整個(gè)config.txt文件配置有這么多參數(shù):

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.enableClientBatchSendRequest=false
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=default
transport.shutdown.wait=3
service.vgroupMapping.my_test_tx_group=default
service.default.grouplist=127.0.0.1:8091
service.enableDegrade=false
service.disableGlobalTransaction=false
client.rm.asyncCommitBufferLimit=10000
client.rm.lock.retryInterval=10
client.rm.lock.retryTimes=30
client.rm.lock.retryPolicyBranchRollbackOnConflict=true
client.rm.reportRetryCount=5
client.rm.tableMetaCheckEnable=false
client.rm.sqlParserType=druid
client.rm.reportSuccessEnable=false
client.rm.sagaBranchRegisterEnable=false
client.tm.commitRetryCount=5
client.tm.rollbackRetryCount=5
client.tm.degradeCheck=false
client.tm.degradeCheckAllowTimes=10
client.tm.degradeCheckPeriod=2000
store.mode=file
store.file.dir=file_store/data
store.file.maxBranchSessionSize=16384
store.file.maxGlobalSessionSize=512
store.file.fileWriteBufferCacheSize=16384
store.file.flushDiskMode=async
store.file.sessionReloadReadSize=100
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?useUnicode=true
store.db.user=username
store.db.password=password
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
store.redis.host=127.0.0.1
store.redis.port=6379
store.redis.maxConn=10
store.redis.minConn=1
store.redis.database=0
store.redis.password=null
store.redis.queryLimit=100
server.recovery.committingRetryPeriod=1000
server.recovery.asynCommittingRetryPeriod=1000
server.recovery.rollbackingRetryPeriod=1000
server.recovery.timeoutRetryPeriod=1000
server.maxCommitRetryTimeout=-1
server.maxRollbackRetryTimeout=-1
server.rollbackRetryTimeoutUnlockEnable=false
client.undo.dataValidation=true
client.undo.logSerialization=jackson
client.undo.onlyCareUpdateColumns=true
server.undo.logSaveDays=7
server.undo.logDeletePeriod=86400000
client.undo.logTable=undo_log
client.log.exceptionRate=100
transport.serialization=seata
transport.compressor=none
metrics.enabled=false
metrics.registryType=compact
metrics.exporterList=prometheus
metrics.exporterPrometheusPort=9898

3.將修改好的config.txt配置添加到nacos配置中心

通過ssh命令執(zhí)行nacos-config.sh文件

sh nacos-config.sh -h {nacos服務(wù)的host} -u {nacos用戶名} -w {nacos密碼}
解析一下上述命令中參數(shù)的意思:
[-h host] [-p port] [-g group] [-t tenant] [-u username] [-w password]

按照nacos服務(wù)請(qǐng)看這里:docker搭建nacos server集群
配置上傳成功的截圖:

image.png

4.下載好mysql8的引擎

mysql8 driver下載

5.編寫registry.conf。這個(gè)文件的目的就是配置seata-server服務(wù)從nacos上讀取第3步上傳上去的配置吠撮,并且把自己注冊(cè)到nacos的服務(wù)列表中去

registry {
  # file 摔癣、nacos 、eureka、redis择浊、zk戴卜、consul、etcd3琢岩、sofa
  # 指定注冊(cè)中心為nacos
  type = "nacos"

  nacos {
    serverAddr = "{host}:{port}"
    namespace = ""
    cluster = "default"
    username="{username}"
    password="{password}"
  }
}

config {
  # file投剥、nacos 、apollo担孔、zk江锨、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "{host}:{port}"
    namespace = ""
    username="{username}"
    password="{password}"
  }
}

6.準(zhǔn)備初始化數(shù)據(jù)庫:

-- the table to store GlobalSession data
drop table if exists `global_table`;
create table `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`)
);

-- the table to store BranchSession data
drop table if exists `branch_table`;
create table `branch_table` (
  `branch_id` bigint not null,
  `xid` varchar(128) not null,
  `transaction_id` bigint ,
  `resource_group_id` varchar(32),
  `resource_id` varchar(256) ,
  `lock_key` varchar(128) ,
  `branch_type` varchar(8) ,
  `status` tinyint,
  `client_id` varchar(64),
  `application_data` varchar(2000),
  `gmt_create` datetime,
  `gmt_modified` datetime,
  primary key (`branch_id`),
  key `idx_xid` (`xid`)
);

-- the table to store lock data
drop table if exists `lock_table`;
create table `lock_table` (
  `row_key` varchar(128) not null,
  `xid` varchar(96),
  `transaction_id` long ,
  `branch_id` long,
  `resource_id` varchar(256) ,
  `table_name` varchar(32) ,
  `pk` varchar(36) ,
  `gmt_create` datetime ,
  `gmt_modified` datetime,
  primary key(`row_key`)
);

7.編寫docker-compose.yaml文件

version: "3.2"
services:
    # 分布式事務(wù)服務(wù)
    seata-server:
        image: seataio/seata-server
        ports:
            - "8091:8091"
        environment:
            #宿主機(jī)ip
            - SEATA_IP={宿主機(jī)host}
            - SEATA_PORT=8091
            - STORE_MODE=db
        volumes:
            # 第5步編寫的registry.conf
            - "./seata_server/resources/registry.conf:/seata-server/resources/registry.conf"
            # 第4步下載的mysql8引擎jar包
            - "./seata_server/libs/mysql-connector-java-8.0.21.jar:/seata-server/libs/mysql-connector-java-8.0.21.jar"
            # 日志文件夾
            - "./seata_server/logs:/root/logs/seata"

8.啟動(dòng)seata-server服務(wù)

docker-compose up -d seata-server

seata-server注冊(cè)成功截圖:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糕篇,一起剝皮案震驚了整個(gè)濱河市啄育,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拌消,老刑警劉巖挑豌,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異墩崩,居然都是意外死亡氓英,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門鹦筹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铝阐,“玉大人,你說我怎么就攤上這事铐拐∨羌” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵遍蟋,是天一觀的道長啊鸭。 經(jīng)常有香客問我,道長匿值,這世上最難降的妖魔是什么赠制? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任挟憔,我火速辦了婚禮,結(jié)果婚禮上绊谭,老公的妹妹穿的比我還像新娘。我一直安慰自己达传,他們只是感情好篙耗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布迫筑。 她就那樣靜靜地躺著宗弯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒙保。 梳的紋絲不亂的頭發(fā)上辕棚,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音邓厕,去河邊找鬼逝嚎。 笑死详恼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昧互。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼屿储,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼渐逃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茄菊,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤赊堪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哭廉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辽幌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年乌企,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片加酵。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冗澈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渗柿,我是刑警寧澤脖岛,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站柴梆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏门扇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一臼寄、第九天 我趴在偏房一處隱蔽的房頂上張望溜宽。 院中可真熱鬧,春花似錦适揉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瓣俯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間降铸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工桶蝎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人登渣。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓胜茧,卻偏偏與公主長得像粘优,于是被迫代替她去往敵國和親呻顽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容