您的位置:首页 > 服务器 > > 正文

linuxdocker命令使用教程(seata docker 高可用部署的详细介绍)

更多 时间:2021-09-29 03:46:41 类别:服务器 浏览量:2749

linuxdocker命令使用教程

seata docker 高可用部署的详细介绍版本

1.4.2
官方文档
dockerhub

启动

通过环境变量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
    
  • 配置文件

    实现高可用需要依赖注册中心,配置中心,数据库
    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配置,需要在对应分组(SEATA_GROUP)下针对配置项目逐条配置文本值,而不是创建包含所有配置的properties文件,可以使用官方源码中的脚本导入
    全部可用配置参考

    1. 使用数据库

    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

    创建数据库

    建库脚本

  • -- -------------------------------- 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. 客户端报错 Data too long for column ‘application_id'

    io.seata.core.exception.TmTransactionException: TransactionException[begin global request failed. xid=null, msg=Data truncation: Data too long for column ‘application_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数据库global_table.application_id字段默认长度为varchar(32),如果客户端应用ID超长则报此错
    手动修改字段类型增加长度即可

    到此这篇关于seata docker 高可用部署的文章就介绍到这了,更多相关seata docker部署内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!

    标签:seata docker 部署