seata-server安裝、運行(ubuntu)

seata-server爲seata中的事務協調器。java

 

seata的wikimysql

https://github.com/seata/seata/wiki/Home_Chinesegit

 

1、下載並安裝github

wget -P /opt/downloads https://github.com/seata/seata/releases/download/v0.5.1/seata-server-0.5.1.tar.gz
mkdir /opt/seata-server
tar zxvf /opt/downloads/seata-server-0.5.1.tar.gz -C /opt/seata-server

 

2、導入配置web

本文使用nacos做爲配置中心和服務發現,file、apollo、redis、zk、consul等也能夠觸類旁通。redis

咱們這裏用默認的導入先讓seata-server跑起來,事後對着file.conf和java程序啓動後的報錯調整,從新導入便可。sql

vim /opt/seata-server/conf/nacos-config.txt

如下是我根據本身的環境修改後的配置值數據庫

cluster":"default","ip":"sxw-PC","metadata":{}vim

you must config ip when you start your fescar server .bash

 

transport.type=TCP
transport.server=NIO
transport.heartbeat=true
transport.thread-factory.boss-thread-prefix=NettyBoss
transport.thread-factory.worker-thread-prefix=NettyServerNIOWorker
transport.thread-factory.server-executor-thread-prefix=NettyServerBizHandler
transport.thread-factory.share-boss-worker=false
transport.thread-factory.client-selector-thread-prefix=NettyClientSelector
transport.thread-factory.client-selector-thread-size=1
transport.thread-factory.client-worker-thread-prefix=NettyClientWorkerThread
transport.thread-factory.boss-thread-size=1
transport.thread-factory.worker-thread-size=8
service.vgroup_mapping.my_test_tx_group=default
service.vgroup_mapping.user-web-fescar-service-group=default
service.vgroup_mapping.user-fescar-service-group=default
service.vgroup_mapping.order-fescar-service-group=default
service.vgroup_mapping.business-service-fescar-service-group=default
service.vgroup_mapping.account-service-fescar-service-group=default
service.vgroup_mapping.storage-service-fescar-service-group=default
service.vgroup_mapping.order-service-fescar-service-group=default
service.default.grouplist=192.168.1.101:8091
service.enableDegrade=false
service.disable=false
client.async.commit.buffer.limit=10000
client.lock.retry.internal=10
client.lock.retry.times=30
store.mode=file
store.file.dir=file_store/data
store.file.max-branch-session-size=16384
store.file.max-global-session-size=512
store.file.file-write-buffer-cache-size=16384
store.file.session.reload.read_size=100
store.db.driver_class=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://192.168.1.102:3306/seata_server
store.db.user=root
store.db.password=123456

 

 

vim /opt/seata-server/conf/nacos-config.sh
for line in $(cat nacos-config.txt)

改成

for line in $(cat /opt/seata-server/conf/nacos-config.txt)

  

導入配置到nacos。

格式爲sh nacos-config.sh $Nacos-Server-IP

由於nacos-config.sh腳本中已經把8848端口寫死,若是你的nacos-server不是8848端口,請修改nacos-config.sh。

bash /opt/seata-server/conf/nacos-config.sh 192.168.1.102

192.168.1.102是nacos的ip

腳本執行最後輸出 "init nacos config finished, please start seata-server." 說明推送配置成功。若想進一步確承認登錄Nacos控制檯->配置列表->篩選查詢Group爲FESCAR_GROUP的配置項。

將/opt/seata-server/conf/nacos-config.txt 腳本修改後從新導入便可。

 

 

3、啓動seata-server(事務協調器)

修改日誌目錄(非必須)

vim /opt/seata-server/conf/logback.xml

改成

    <!--<property name="LOG_HOME" value="${user.home}/logs/seata"/>-->
    <property name="LOG_HOME" value="/opt/seata-server/logs"/>

 

配置修改

vim /opt/seata-server/conf/registry.conf 並複製到java代碼的properties目錄下

registry {
  type = "nacos"

  nacos {    
    serverAddr = "192.168.1.102"
    namespace = "public"
    cluster = "default"
  }
}
config {
  type = "nacos"

  nacos {
    serverAddr = "192.168.1.102"
    namespace = "public"
    cluster = "default"
  }
} 

注:serverAddr不要填端口號   public爲小寫

 

 

啓動格式sh seata-server.sh $LISTEN_PORT $PATH_FOR_PERSISTENT_DATA $IP(此參數可選)

$IP參數 用於多IP環境下指定 Fescar-Server 註冊服務的IP    雖然是可選,但仍是要填,以前我偷懶沒填,一大堆虛擬ip各類亂定位。

 

命令啓動

sh /opt/seata-server/bin/seata-server.sh 8091 file 192.168.1.102

 

守護進程啓動

vim /opt/seata-server/startup.sh

填入

#!/bin/bash
sh /opt/seata-server/bin/seata-server.sh 8091 file 192.168.1.102

 

vim /lib/systemd/system/seata-server.service

文件中填入

[Unit]
Description=seata-server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/opt/seata-server/startup.sh
Restart=always
PrivateTmp=true

[Install]
WantedBy=multi-user.target

賦予權限

chmod 777 /opt/seata-server/startup.sh
chmod 777 /lib/systemd/system/seata-server.service

啓用服務

systemctl enable seata-server.service
systemctl daemon-reload

運行

systemctl start seata-server.service

查看狀態

systemctl status seata-server.service

查看進程

ps -ef|grep seata-server

運行成功後可在Nacos控制檯的 服務列表 看到 服務名serverAddr的條目

 

 

4、建立數據表

(建立mysql數據庫略)

UNDO_LOG table is required by SEATA AT mode.

CREATE TABLE `undo_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`branch_id` bigint(20) NOT NULL,
`xid` varchar(100) NOT NULL,
`rollback_info` longblob NOT NULL,
`log_status` int(11) NOT NULL,
`log_created` datetime NOT NULL,
`log_modified` datetime NOT NULL,
`ext` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

每一個業務數據庫都要建一個undo_log表

相關文章
相關標籤/搜索