seata docker 高可用性デプロイメントの詳細な紹介

seata docker 高可用性デプロイメントの詳細な紹介

バージョン

1.4.2
公式ドキュメント
ドッカーハブ

起動する

環境変数SEATA_CONFIG_NAMEを使用して、設定ファイルの場所/root/seata-config/registry.confを指定します。

docker run --name seata-server \
        -p 8091:8091 \
        -e SEATA_CONFIG_NAME=ファイル:/root/seata-config/registry \ 
        -v /User/seata/config:/root/seata-config \
        seataio/seata-server

設定ファイル

高可用性を実現するには、登録センター、構成センター、データベースに依存する必要があります。
レジストリ.conf

レジストリ {
  タイプ = "ナコス"

  ナコス
    アプリケーション = "seata-server"
    サーバーアドレス = "192.168.199.2"
    名前空間 = "テスト"
    グループ = "SEATA_GROUP"
    クラスター = "デフォルト"
    ユーザー名 = ""
    パスワード = ""
  }
}

設定{
  タイプ = "ナコス"  
  ナコス
    サーバーアドレス = "192.168.199.2"
    名前空間 = "テスト"
    グループ = "SEATA_GROUP"
    ユーザー名 = ""
    パスワード = ""
  }
}

NACOS 構成

注: nacos 構成を使用する場合、すべての構成を含むプロパティ ファイルを作成するのではなく、対応するグループ (SEATA_GROUP) の下の各構成項目のテキスト値を構成する必要があります。公式ソース コードのスクリプトを使用して、使用可能なすべての構成参照をインポートできます。

1. データベースの使用

ストアモード=db
store.db.datasource=ドルイド
ストア.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=ルート
ストア.db.パスワード=123456

データベースを作成する

データベース作成スクリプト

-- -------------------------------- storeMode が 'db' の場合に使用されるスクリプト --------------------------------
-- GlobalSessionデータを保存するテーブル
存在しない場合はテーブルを作成 `global_table`
(
    `xid` VARCHAR(128) NOT NULL、
    `transaction_id` BIGINT、
    `status` TINYINT NOT NULL、
    `アプリケーションID` VARCHAR(32)、
    `transaction_service_group` VARCHAR(32)、
    `トランザクション名` VARCHAR(128)、
    `タイムアウト` INT,
    `begin_time` BIGINT、
    `application_data` VARCHAR(2000)、
    `gmt_create` 日付時刻、
    `gmt_modified` 日付時刻、
    主キー (`xid`)、
    キー `idx_gmt_modified_status` (`gmt​​_modified`, `status`),
    キー `idx_transaction_id` (`transaction_id`)
) エンジン = InnoDB
  デフォルト文字セット = utf8;

-- BranchSessionデータを保存するテーブル
`branch_table` が存在しない場合はテーブルを作成します
(
    `branch_id` BIGINT NOT NULL、
    `xid` VARCHAR(128) NOT NULL、
    `transaction_id` BIGINT、
    `リソースグループID` VARCHAR(32)、
    `resource_id` VARCHAR(256)、
    `branch_type` VARCHAR(8)、
    `ステータス` TINYINT、
    `client_id` VARCHAR(64)、
    `application_data` VARCHAR(2000)、
    `gmt_create` 日付時刻(6)、
    `gmt_modified` 日付時刻(6)、
    主キー (`branch_id`)、
    キー `idx_xid` (`xid`)
) エンジン = InnoDB
  デフォルト文字セット = utf8;

-- ロックデータを保存するテーブル
存在しない場合はテーブルを作成する `lock_table`
(
    `row_key` VARCHAR(128) NOT NULL、
    `xid` VARCHAR(128)、
    `transaction_id` BIGINT、
    `branch_id` BIGINT NOT NULL、
    `resource_id` VARCHAR(256)、
    `テーブル名` VARCHAR(32)、
    `pk` VARCHAR(36)、
    `gmt_create` 日付時刻、
    `gmt_modified` 日付時刻、
    主キー (`row_key`)、
    キー `idx_branch_id` (`branch_id`)
) エンジン = InnoDB
  デフォルト文字セット = utf8;

例外処理

1. クライアントがエラーを報告します: 列 'application_id' のデータが長すぎます

io.seata.core.exception.TmTransactionException: TransactionException[グローバル要求の開始に失敗しました。xid=null、msg=データの切り捨て: 行 1 の列 'application_id' のデータが長すぎます]
io.seata.tm.DefaultTransactionManager.begin(DefaultTransactionManager.java:55) で ~[seata-all-1.3.0.jar:1.3.0]
io.seata.tm.api.DefaultGlobalTransaction.begin(DefaultGlobalTransaction.java:104) で ~[seata-all-1.3.0.jar:1.3.0]
io.seata.tm.api.TransactionalTemplate.beginTransaction(TransactionalTemplate.java:175) で ~[seata-all-1.3.0.jar:1.3.0]

seata データベースの global_table.application_id フィールドのデフォルトの長さは varchar(32) です。クライアント アプリケーション ID が長すぎる場合、このエラーが報告されます。フィールド タイプを手動で変更して長さを増やすことができます。

seata docker 高可用性デプロイメントに関するこの記事はこれで終わりです。 seata docker デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。 今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • SEATAトランザクションサービスDockerのデプロイ手順の詳細説明
  • Docker は 2003 年の問題を解決するために MySQL リモート接続を導入しました
  • MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装

<<:  JavaScript におけるシリアル操作と並列操作

>>:  CSS3 変換によって子要素の固定位置を絶対位置に変更する方法

ブログ    

推薦する

Linux に ASPNET.Core3.0 ランタイムをインストールするためのサンプル コード

# 以下の例は x64 ビット ランタイム v3.0.0 用です mkdir /runtimes ...

Linux システムの .bash_profile ファイルの詳細な説明

目次1. 環境変数$PATH: 2. 環境変数を変更します。 3. bash_profileの目的要...

NginxとLuaによるグレースケールリリースの実装

memcachedをインストールする yum インストール -y memcached #memcac...

Word のコンテンツを Web サイトのエディターに直接コピーすることはお勧めしません。

<br />質問: Word のコンテンツを Web サイトのエディターに直接コピーする...

CSS で順序付きリスト項目と順序なしリスト項目のスタイルを設定する方法

順序なしリストでは、順序なしリストのシンボルは各リストの前に表示されるドットです。順序付きリスト o...

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

ネイティブJSでマウススライドによる愛の拡散効果を実現

この記事では、マウスをスライドすると愛が広がる js 特殊効果を紹介します。効果は次のとおりです。 ...

MySQL における 10 進数型の使用法の簡単な紹介

MySQL でサポートされている浮動小数点型は、 FLOAT 、 DOUBLE 、およびDECIMA...

本番環境でのMySQLパラメータsql_safe_updatesの使用に関する詳細な説明

序文アプリケーションのバグや DBA の誤操作が発生した場合、テーブル全体が更新される可能性がありま...

js を使用して過去 1 週間、1 か月、3 か月の時間を取得する簡単な例

目次過去1週間の時間を取得する過去1か月の時間を取得する過去3か月分を取得新しい Date() と ...

CSS で点線の境界線のスクロール効果を実装するサンプルコード

マウスをある領域の上に置くと、その領域に点線の境界線と線のアニメーションが表示されるというクールな効...

MySQL インデックス プッシュダウンの詳細

目次1. 左端接頭辞原則2. 表に戻る3. インデックスプッシュダウン序文:インデックス プッシュダ...

MySQL で戻り値ありと戻り値なしのストアド プロシージャを書く 2 つの方法

プロセス1: 戻り値あり: proc_addNum が存在する場合はプロシージャを削除します。 プロ...

Linuxルートの初期値を設定する方法の簡単な分析

Ubuntu ではデフォルトで root ログインが許可されていないため、初期の root アカウン...

JavaScript フロー制御 (分岐)

目次1. プロセス制御2. シーケンシャルプロセス制御3. 分岐フロー制御if文1. 支店構造2. ...