MySQL的内部XA的二阶段提交

本文介绍了XA分布式事务管理在MySQL中的作用,针对redo-log和bin-log的潜在数据同步问题,通过二阶段提交确保一致性。同时讲述了数据恢复机制,确保宕机后的数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内部XA

可能大家一听感觉很陌生,什么是XA?XA是一种分布式事务管理规范,MySQL内部有一个XA事务管理器来支持分布式事务,可能这么一听更懵了,那么我这么解释一下,MySQL是支持主从的,主从分布在不同的机器,也就是 说MySQL也是分布式的。不同的MySQL节点之前靠什么同步?靠binlog。但是单个MySQL服务靠什么支持事务的?靠redo-log和undo-log。其实XA就是为了解决redo-log和bin-log数据不同步的问题

日志的相关概念

我们简单说一下redo-log和bin-log的相关概念,undo-log上一篇文章介绍过

redo-log

又称重放日志,主要用于保持数据一致性和完整性,因为当我们修改一条记录的时候,不可能把整个page都刷到磁盘再返给客户端,我们知道,一个page默认是16kb,如果改了一个字符而和磁盘刷新16KB是不明智的,那么怎么办?MySQL将这个操作影响的数据存入一个日志中去,只需要一个简单的记录,比如test表的位移100改为a,,然后刷入磁盘(log buffer满了也会刷入磁盘)即可。

bin-log

binlog 是 binary log 的缩写,即 二进制日志 。 binlog 中记载了数据库发生的变化,比方说新建了一个数据库或者表、表结构发生改变、表中的数据发生了变化时都会记录相应的binlog日志。主要用于MySQL节点间的数据同步和恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老A技术联盟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值