MySQLXA事务恢复过程的详细解决方案
InnoDB:在ibdata文件日志序列号不匹配
InnoDB:在ib_logfiles日志序列号!
100224 12:24:20 InnoDB:笪塔巴涩并不是简单地关闭!
InnoDB:开始崩溃恢复。
InnoDB:从阅读IBD文件表空间信息…
InnoDB:恢复可能写了一半的doublewrite数据页
InnoDB:缓冲区…
InnoDB:交易04497755在准备好的状态下。
InnoDB:交易04468551在准备好的状态下。
InnoDB:交易04468140在准备好的状态下。
InnoDB事务:3(S)必须回滚或清理
InnoDB:共0行的操作撤销
InnoDB:TRX ID计数器05312768
InnoDB:在背景的未提交的事务回滚启动
100224 12:24:20 InnoDB:完成非准备好的事务回滚
100224 12:24:20 InnoDB:开始;日志序列号03805002509
100224 12:24:20 InnoDB:对XA事务开始复苏…
100224 12:24:20 InnoDB:交易04497755在准备状态恢复后
100224 12:24:20 InnoDB事务包含8行的变化:
100224 12:24:20 InnoDB:交易04468551在准备状态恢复后
100224 12:24:20 InnoDB事务包含1行的变化:
100224 12:24:20 InnoDB:交易04468140在准备状态恢复后
100224 12:24:20 InnoDB事务包含1行的变化:
100224 12:24:20 InnoDB:3交易在准备状态恢复后
100224 12:24:20 {注}发现3制备(S)在InnoDB事务
100224 12:24:20 {警告}发现3准备XA事务
100224 12:24:20 {注}事件调度器:装0事件
100224 12:24:20 {注} / / /选择MySQL bin / mysqld:准备连接。
版本:'5.1.39'socket: / / MySQL TMP。袜子的端口:3306 MySQL社区服务器(GPL)
这意味着有三个XA事务未提交或回滚。
登录到MySQL
恢复;
+ + + + ---------- -------------- -------------- ------------------------------------------------------------ +
formatid gtrid_length bqual_length | | | |数据|
+ + + + ---------- -------------- -------------- ------------------------------------------------------------ +
| 131075 | 30 | 28 | 1-7f000001:bae5:4b6928eb:f06397f000001:bae5:4b6928eb:f0650 |
| 131075 | 30 | 28 | 1-7f000001:bae5:4b6928eb:fb5c37f000001:bae5:4b6928eb:fb5cd |
| 131075 | 30 | 28 | 1-7f000001:bae5:4b6928eb:f03ea7f000001:bae5:4b6928eb:f0400 |
+ + + + ---------- -------------- -------------- ------------------------------------------------------------ +
数据表示信息如下所示:
formatidis的formatidpart的交易码
gtrid_lengthis在XID的gtridpart字节长度
bqual_lengthis在XID的bqualpart字节长度
数据的gtridand XID的bqualparts级联
这是三个XA事务的信息,可以直接回滚。
MySQL > xa回滚'1-7f000001:bae5:4b6928eb:fb5c3 ','7f000001:bae5:4b6928eb:fb5cd ',131075;
查询OK,0行受影响(0.41秒)
重新开始是正常的。
MySQL XA
最大的限制对XA事务。
XA事务的支持是有限的InnoDB存储引擎。
MySQL XA的实施是针对外部XA,在MySQL服务器作为资源管理器和客户端程序作为一个事务管理器。内部XA并未实现。这样,在MySQL服务器的一个单独的存储引擎是允许作为RM(资源管理器),和服务器本身是TM(事务经理)。当处理XA事务,包含1个以上的存储引擎,内部XA是必需的。内部XA的实施是不完整的,这是因为它需要存储引擎支持两阶段提交的表格处理水平。目前,它只实现了这一特点,InnoDB。
对于XA启动,不支持联接和恢复子句。
对于XA端,不支持挂起迁移{ }子句。
在全球事务中,每个XA事务的码值,bqual部分应该是不同的,这一要求是制约当前MySQL XA实现。它不是XA规范的一个组成部分。
如果XA事务准备状态和MySQL服务器,当服务器重启时,可以继续处理事务。是应该的。但是,如果客户端连接中断,服务器继续运行,服务器将回滚所有未完成的XA事务,即便交易已达到准备状态它应该能够提交或回滚准备XA事务,但不改变二进制日志机制为例。