Seata-Server分布式事务原理加源码 (四)- Seata事务日志储存方式DB

news2024/11/26 8:22:58

Seata Server(TC)环境搭建详解

Server端存储模式(store.mode)支持三种:

  1. file:单机模式,全局事务会话信息内存中读写并持久化本地文件root.data,性能较高(默认)
  2. DB:高可用模式,全局事务会话信息通过DB共享,相对性能差一些
  3. redis:Seata-Server1.3及以上版本支持,性能较高,存在事务信息丢失风险,需要配合实际场景使用。

具体操作

  1. 修改Seata-Server模式为DB高可用模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UBPzGijD-1676371270789)(image-20220118173041657-1642518614185.png)]

找到以下对应的db配置,要修改其中的jdbc连接,以及要注意其中涉及到了三个表,分别是global_table,branch_table,lock_table分别是全局事务会话表,分支事务会话表,锁数据表;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f5JIbGjV-1676371270791)(image-20220118231142489.png)]

  1. 建表语句地址:https://github.com/seata/seata/blob/develop/script/server/db/mysql.sql
-- 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),
    `status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_status` (`status`),
    KEY `idx_branch_id` (`branch_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8;
  1. 重启Seata即可生效。

anch_id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;


3. 重启Seata即可生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Redis】Redis持久化之RDB详解(Redis专栏启动)

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公…

【Unity VR开发】结合VRTK4.0:创建一个门

语录: 独有英雄驱虎豹,更无豪杰怕熊罴 前言: 在我们做项目时,会遇到需要打开门,或者柜子的门,今天,我们就来学习一下关于门的控件。以模拟可以打开和关闭的门。我们将使用角度驱动器来创建此门…

大火的ChatGPT能为自动驾驶带来什么?

/导读/最近的科技圈,大家都被微软推出的ChatGPT刷屏,作为工智能公司OpenAI于2022年11月推出的聊天机器人,其能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,甚至能完成撰写邮件、视频脚本、文案…

MySql8.0 安全卸载

1. 停止MySQL服务 winR 打开运行,输入 services.msc 点击 “确定” 调出系统服务。 2. 卸载MySQL相关组件 打开控制面板 —> 卸载程序 —> 卸载MySQL相关所有组件 3. 删除MySQL安装目录 4. 删除MySQL数据目录 数据存放目录是在 C:\ProgramData\MySQL&#…

跳转语句与数组,函数

1.break语句作用: 用于跳出选择结构或者循环结构break使用的时机:出现在switch条件语句中,作用是终止case并跳出switch出现在循环语句中,作用是跳出当前的循环语句出现在嵌套循环中,跳出最近的内层循环语句2.continue语句作用 : 在循环语句中,跳过本次循…

vue项目第四天

使用elementui tabplane组件实现历史访问记录组件的二次封装<el-tabs type"border-card"><el-tab-pane label"用户管理">用户管理</el-tab-pane><el-tab-pane label"配置管理">配置管理</el-tab-pane><el-tab-…

如何量测太阳光模拟器的光谱致合度?

太阳模拟器是根据国际法规JIS、IEC60904、美国材料试验协会开发设计的AAA级太阳模拟器。对于100毫米100毫米和200毫米200毫米的光斑尺寸&#xff0c;光斑强度的输出功率范围可以从0.1到1太阳光强度。此外&#xff0c;还提供了灵活的出光方向&#xff0c;以满足用户的研究需求&a…

JavaWeb_JSP

目录 一、概述 二、入门 1.创建一个maven的web项目 2.搭建环境 3.创建jsp页面 4.编写代码 5.测试 三、JSP原理 四、JSP脚本 五、JSP缺点 六、EL表达式 1.概述 2.代码演示 3.域对象 七、JSTL标签 1.概述 2.if标签 3.forEach标签 八、MVC模式和三层架构 1.MVC…

Linux驱动学习环境搭建

背景常识 一、程序分类 程序按其运行环境分为&#xff1a; 1. 裸机程序&#xff1a;直接运行在对应硬件上的程序 2. 应用程序&#xff1a;只能运行在对应操作系统上的程序 二、计算机系统的层次结构 所有智能设备其实都是计算机&#xff0c;机顶盒、路由器、冰箱、洗衣机、汽…

线程安全的集合类

1.多线程环境使用 ArrayList 1.自己使用同步机制 (synchronized 或者 ReentrantLock) 2.Collections.synchronizedList(new ArrayList); synchronizedList 是标准库提供的一个基于 synchronized 进行线程同步的 List.synchronizedList 的关键操作上都带有 synchronized 3…

Linux多版本python切换以及多版本pip对应 (cloud studio Ubuntu16.04)

linux && cloud studio && Ubuntu16.04 简单解决多版本python切换以及多版本pip对应问题 1.python2切换成python 多版本python: 更改前先查看版本号 $ python -V Python 2.7.12 $ python2 -V Python 2.7.12 $ python3 -V Python 3.5.2 通过下面的命令看到py…

在传染病中,肠道微生物-免疫力-营养在优化治疗策略中的作用

谷禾健康 传染病&#xff0c;肠道微生物&#xff0c;营养 传染病和感染目前是许多地区尤其是低收入国家主要死亡原因&#xff0c;也是婴儿和老年人等弱势群体的主要风险。免疫系统在这些感染的易感性、持续性和清除中起着至关重要的作用。由于 70-80% 的免疫细胞存在于肠道中&a…

详解子网技术

一 : Internet地址 Intemet实质上是把分布在世界各地的各种网络如计算机局域网和广域网、数字数据通信网以及公用电话交换网等互相连接起来而形成的超级网络。但是 , 网络的物理地址给Internet统一全网地址带来两个方面的问题: 第一&#xff0c;物理地址是物理网络技术的一种…

postman-请求前参数预处理(pre-request)

文章目录一、Pre-request Scrip的简介二、 变量2.1环境变量2.2全局变量2.3动态变量&#xff08;内置变量&#xff09;2.4数据变量三、全局变量的定义和使用3.1全局变量的定义3.2全局变量的使用四、动态变量的使用4.1通过界面操作完成Gd变量使用4.2在脚本区写代码调用Pre-reques…

分享113个HTML电子商务模板,总有一款适合您

分享113个HTML电子商务模板&#xff0c;总有一款适合您 113个HTML电子商务模板下载链接&#xff1a;https://pan.baidu.com/s/1JIlnB8qpg4wIuh-fi0e-Bg?pwdiwvr 提取码&#xff1a;iwvr Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 import os import shuti…

Elasticsearch和Solr的区别

背景&#xff1a;它们都是基于Lucene搜索服务器基础之上开发&#xff0c;一款优秀的&#xff0c;高性能的企业级搜索服务器。&#xff08;是因为他们都是基于分词技术构建的倒排索引的方式进行查询&#xff09;开发语言&#xff1a;java语言开发诞生时间&#xff1a;Solr2004年…

CAP和BASE理论

CAP理论CAP是 Consistency、Availability、Partition tolerance 三个词语的缩写&#xff0c;分别表示一致性、可用性、分区容忍性。它指出一个分布式计算系统不可能同时满足以下三点&#xff1a;• 一致性&#xff08;Consistency&#xff09; &#xff1a;等同于所有节点访问同…

项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(四)

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足项目管理控件应用程序的所有需求&#xff0c;是最完善的甘特图图表库这篇文章给大家讲解 dhtmlxGantt 的数据属性和数据库结构。 DhtmlxGantt正版试用下载&#xff08;qun&#xff1a;764…

既生 useState 何生 useReducer (主讲useReducer)

前言 useState 的底层其实是用useReducer 实践的 useReducer 适合较复杂的state,因为我们可以将状态的改变统一放在reducer 去做管理,像useState 的状态改变就会分散在不同的函式里面。 语法 const [state, dispatch] = useReducer(reducer, initialState, initStateFn)use…

【蓝桥杯选拔赛真题37】python判断自守数 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python判断自守数 一、题目要求 1、编程实现 2、输入输出 二、解题思路