365体育手机投注
当前位置:主页 > 365体育手机投注 >

MySQL XA事务

时间:2019-05-28 13:37  来源:admin   作者:365bet备用投注   点击:
事务XA是一个两步验证实现。
XA规范主要定义TM事务管理器和RM资源管理器之间的接口。
根据2PC规范将事务拆分为两个阶段
1
准备舞台
TM可以向所有RM发送准备命令,并且在接收到订单之后,RM可以在向TM发送/发送回复之前执行诸如数据修改和注册的操作。
(我的理解是,在打开一个事务后它应该类似于MySQL,但只有最后一个COMMITMENT或ROLLBACK状态)
2
提交阶段
TM接受所有MR准备结果
如果存在无法验证或过期的RM返回,请向所有RM发送ROLLBACK命令。
如果所有客户经理都已退回运输,请向所有客户经理发送COMMIT命令。
处理XA的异常
MySQL和XA事务之间的关系有两种情况。
1
内部XA
如果使用innodb作为存储引擎打开binlog,MySQL将管理binlog记录和innodb重写。
MySQL使用XA事务来确保这两个寄存器的完整性。这称为内部XA,因为它仅适用于单台计算机。
2
外部XA
一般来说是分布式交易。
MySQL支持XASTART / END / PREPARE / COMMIT语句。您可以使用这些命令来完成分布式事务。
状态转换图如下。
(我不明白。为什么我需要XAEND声明。我可以直接使用XAPREPARE吗?)
在MySQL5中。
7
在7次XA交易之前是不好的。
当处于PREPARE状态的XA事务时
1
如果连接已关闭,或者MySQL服务器成功终止,则回滚事务(但根据XA规范,必须维护此事务)。
2
如果强制终止MySQL服务器,则可以在重新启动后使用XARECOVER命令确认事务。此事务也可以使用XACOMMIT发送,但关联的binlog记录将丢失,因此数据库引擎和binlog将记录数据。
这两个虫子激增了10年,最后变成了5岁。
7
7固定(也固定阿里的第一个错误)
目前,MySQL XA事务应该可以正常运行并且可用。
还有一些地方我无法理解。
1
官方文档强调在使用分布式事务时需要串行隔离级别。为什么?
(根据未分配的交易,建议指定SERIALIZABLE或适用于我们的申请)。
重新输入合同列表不足以进行分布式事务。

原因:如果库使用默认的MySQL RR来最大化色散的隔离级别,则整个分布式事务的隔离级别为RU。