有时一个系统的数据 放在不同的库之中。如果用普通的事物 一个分支库提交成功了,另外一个分支库提交失败了,

这候 两个库没有同步的成功或者失败。会导致系统数据的不完整。

对于处理这种情况 MySQL有了处理分布式(XA)事物的语法


XA START xid 用于启动一个带给定xid的XA事物。

xid包含3个部分 gtrid,bqual,formatID

  • gtrid 是一个分布式事物的标识符,一个分布式事物的每个XA事物的gtrid必须相同,这样可以明确知道每个XA事物属于哪个分布式事物。
  • bqual 是一个分支限定符,一个分布式事物的所每个XA事物的bqual值必须不同。
  • formatID 是一个数字,用于标识由gtrid和bqual值使用的格式,可以不写 默认是1 。

分布式的关键在于如何确保分布式事物的完整性,以及在某个分支出现问题时的故障解决。

XA事物的相关命令就是提供给应用如何在多个独立的数据库之间进行分布式事物的管理,包括启动一个分支事物,使事物进入准备阶段以及事物的实际提交回滚操作等。

session1 in db1 session2 in db2
xa start 'gtridtest','bqualdb1'  数据库db1中启动一个分布式事物的一个分支 xa start 'gtridtest','bqualdb2'数据库db2中启动一个分布式事物的一个分支
update db1_table1 set content = '测试' where id =1; update db2_table1 set content = '实验' where id =1;
xa end  'gtrid _test','bqual_db1' 第一阶段提交 xa end  'gtrid _test','bqual_db2' 第一阶段提交
xa prepare 'gtrid _test','bqual_db1' 进入prepare状态 xa prepare 'gtrid _test','bqual_db2'进入prepare状态
 两个事物都进入准备提交阶段,如果之前遇到任何错误 会回滚所有分支 xa recover 命令可以查看PREPARE状态下的事物(建议大家去亲自测试)
xa commit 'gtrid _test','bqual_db1' xa commit 'gtrid _test','bqual_db2'
 一旦开始提交操作 则需要保证全部的分支都要提交成功 如果失败 请看文章结尾

 如果分支事物达到prepare状态的时,遇到断电等异常。服务器重新启动之后(xa recover可以查到未完成的prepare状态下的XA事物),可以继续对分支 进行回滚或者提交操作 ;

这么看 其实分布式事物也不是完美的 xa事物prepare之后遇到异常不会自动回滚,需要手动进行回滚或者提交。

javax.transaction.xa包 是jdbc控制MySQL XA事物的API

MySQL分布式事物(XA事物)的使用的更多相关文章

  1. 详解Mysql分布式事务XA(跨数据库事务)

    详解Mysql分布式事务XA(跨数据库事务) 学习了:http://blog.csdn.net/soonfly/article/details/70677138 mysql执行XA事物的时候,mysq ...

  2. MySQL数据库分布式事务XA优缺点与改进方案

    1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...

  3. MySQL 中基于 XA 实现的分布式事务

    1 XA协议 首先我们来简要看下分布式事务处理的XA规范可知XA规范中分布式事务有AP,RM,TM组成: 其中应用程序(Application Program ,简称AP):AP定义事务边界(定义事务 ...

  4. DTP模型之一:(XA协议之三)MySQL数据库分布式事务XA优缺点与改进方案

    1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...

  5. 数据库分布式事务XA规范介绍及Mysql底层实现机制

    1. 引言 分布式事务主要应用领域主要体现在数据库领域.微服务应用领域.微服务应用领域一般是柔性事务,不完全满足ACID特性,特别是I隔离性,比如说saga不满足隔离性,主要是通过根据分支事务执行成功 ...

  6. Mysql数据库分布式事务XA详解

    XA事务简介 XA 事务的基础是两阶段提交协议.需要有一个事务协调者来保证所有的事务参与者都完成了准备工作(第一阶段).如果协调者收到所有参与者都准备好的消息,就会通知所有的事务都可以提交了(第二阶段 ...

  7. ## 【分布式事务】面试官问我:MySQL中的XA事务崩溃了如何恢复??

    写在前面 前段时间搭建了一套MySQL分布式数据库集群,数据库节点有12个,用来测试各种分布式事务方案的性能和优缺点.测试MySQL XA事务时,正当测试脚本向数据库中批量插入数据时,强制服务器断电! ...

  8. 分布式事务 XA 两段式事务 X/open CAP BASE 一次分清

    分布式事务: 分布式事务是处理多节点上 的数据保持 类似传统 ACID 事物特性的 一种事物. XA:是一种协议,一种分布式事务的协议,核心思想是2段式提交. 1 准备阶段  2 提交阶段.XA协议是 ...

  9. Mysql分布式事务

    关于Mysql分布式事务介绍,可参考:http://blog.csdn.net/luckyjiuyi/article/details/46955337 分为两个阶段:准备和执行阶段.有两个角色:事务的 ...

随机推荐

  1. python基础 (函数名,闭包,和迭代器)

    1.函数名作用 函数名本质上就是函数的内存地址或对象. 1.可以被引用 2.可以被当作容器类型的元素 3.可以当作函数的参数和返回值 4.如果记不住的话,那就记住一句话,就当普通变量用 2.闭包 什么 ...

  2. LR 11 代理录制步骤

    1.新一个HTTP录制,到下图步骤 按下图说明设置信息,点击update 选择rl里面的代理exe(wplus_init_wsock.exe),具体路径为下图 打开浏览器设置代理(Internet选项 ...

  3. 校赛F

    问题描述 例如对于数列[1 2 3 4 5 6],排序后变为[6 1 5 2 4 3].换句话说,对于一个有序递增的序列a1, a2, a3, ……, an,排序后为an, a1, an-1, a2, ...

  4. 根据缺少的so,安装相关的软件

    http://blog.csdn.net/dianyueneo/article/details/8161350. ubuntu缺少libGL.so sudo apt-get install apt-f ...

  5. maven学习四:maven集成jetty插件发布web项目 标签: maven

    http://blog.csdn.net/u014079773/article/details/50167833

  6. 高速上手C++11 14 笔记2

    lambda表达式和std function bind 两者配合构成了函数新的使用方法. 智能指针 sharedptr, uniqueptr, weak_ptr auto pointer = std: ...

  7. Linux常用的工具软件安装

    一. linux简单介绍 linux的优势 可靠的安全性,良好的稳定性,完善的网络功能 跨平台的硬件支持,丰富的软件支持,多用户多任务 Linux的发行版本 Redhat 红帽子,最大稳定 CentO ...

  8. 高级查询query

    详细看 https://www.kancloud.cn/ldkt/tp5_db/229042

  9. docker之tomcat简单部署

    将apache-tomcat-8.0.36.tar.gz及jdk-7u79-linux-x64.gz拷贝到创建的tomcat8目录下 在tomcat8目录下创建Dockerfile文件 在Docker ...

  10. 一个简单的TensorFlow可视化MNIST数据集识别程序

    下面是TensorFlow可视化MNIST数据集识别程序,可视化内容是,TensorFlow计算图,表(loss, 直方图, 标准差(stddev)) # -*- coding: utf-8 -*- ...