分布式与一致性协议之MySQL XA协议

MySQL XA协议

概述

相信很多人都知道MySQL支持单机事务,那么在分布式系统中,涉及多个节点,MySQL又是怎样实现分布式事务的呢?
举个例子,一个业务系统需要接收来自外部的指令,然后访问多个内部其他系统来执行指令,但执行完指令后,需要同时更新多个内部MySQL数据库中的值(比如MySQL数据库A、B、C).由于业务敏感,所以系统必须处于一个一致性状态(也就是说,MySQL数据库A、B、C中的值要么同时更新成功,要么全部不更新),否则会出现有的系统显示指令执行成功,而有的系统显示指令尚未被执行的情况,导致多部门对指令执行结果理解混乱。
那么如何实现多个MySQL数据库更新的一致性呢?答案就是采用MySQL XA.

在我看来,MySQL通过支持XA规范的二阶段提交协议,不仅实现了多个MySQL数据库操作的事务,还能实现MySQL、Oracle、SQL Server等支持XA规范的数据库操作的事务。
通常,理解MySQL XA,不仅要能理解数据层分布式事务的原理,还要能在实际系统中更加深刻地理解二阶段提交协议,这样当你在实际工作中遇到多个MySQL数据库的事务需求时,你就知道如何通过MySQL XA来处理了。

老规矩,咱们先来看一道思考题。
假设有两个MySQL数据A、B(位于不同的服务器节点上),我们需要实现多个数据库更新(比如,UPDATE executed_table SET status=true WHERE id = 100)和插入操作(比如,INSERT INTO operation_table SET id = 100,op=‘get-cdn-log’)的事务,如图所示,那么在MySQL中如何实现呢?
MySQL是通过XA规范实现分布式事务的,所以我们有必要先来了解一下XA规范
在这里插入图片描述

什么是XA规范

提到XA规范,就不得不说DTP(Distributed Transaction Processing, 分布式事务处理)模型,因为XA规范约定的是DTP模型中的两个模块(事务管理其和资源管理器)的通信方式,如图所示。https://cdn.processon.com/userId2-663e15c8166b8c6ceb4340a7?e=1715348440&token=trhI0BY8QfVrIGn9nENop6JAc6l5nZuxhjQ62UfM:m5HMjar0byN2-MqjwQM3_VOZ1sA=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coffee_babe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值