【分布式事务】面试官问我:如何恢复MySQL中的XA事务?

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文


服务器强制断电后重启,此时MySQL报错,查看MySQL启动日志时,发现如下所示的错误信息。

InnoDB: The log sequence number in ibdata files does not match

InnoDB: the log sequence number in the ib_logfiles!

100224 23:24:20 InnoDB: Database was not shut down normally!

InnoDB: Starting crash recovery.

InnoDB: Reading tablespace information from the .ibd files…

InnoDB: Restoring possible half-written data pages from the doublewrite

InnoDB: buffer…

InnoDB: Transaction 0 4497755 was in the XA prepared state.

InnoDB: Transaction 0 4468551 was in the XA prepared state.

InnoDB: Transaction 0 4468140 was in the XA prepared state.

InnoDB: 3 transaction(s) which must be rolled back or cleaned up

InnoDB: in total 0 row operations to undo

InnoDB: Trx id counter is 0 5312768

InnoDB: Starting in background the rollback of uncommitted transactions

100224 23:24:20 InnoDB: Rollback of non-prepared transactions completed

100224 23:24:20 InnoDB: Started; log sequence number 0 3805002509

100224 23:24:20 InnoDB: Starting recovery for XA transactions…

100224 23:24:20 InnoDB: Transaction 0 4497755 in prepared state after recovery

100224 23:24:20 InnoDB: Transaction contains changes to 8 rows

100224 23:24:20 InnoDB: Transaction 0 4468551 in prepared state after recovery

100224 23:24:20 InnoDB: Transaction contains changes to 1 rows

100224 23:24:20 InnoDB: Transaction 0 4468140 in prepared state after recovery

100224 23:24:20 InnoDB: Transaction contains changes to 1 rows

100224 23:24:20 InnoDB: 3 transactions in prepared state after recovery

100224 23:24:20 [Note] Found 3 prepared transaction(s) in InnoDB

100224 23:24:20 [Warning] Found 3 prepared XA transactions

100224 23:24:20 [Note] Event Scheduler: Loaded 0 events

100224 23:24:20 [Note] /opt/mysql/bin/mysqld: ready for connections.

Version: ‘8.0.18’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)

从上面的日志信息中,可以看出有三个XA的事务没有提交或回滚。那该如何恢复MySQL的XA事务呢?

恢复MySQL XA事务


首先,登录到MySQL,执行如下命令。

mysql> xa recover;

±---------±-------------±-------------±-----------------------------------------------------------+

| formatID | gtrid_length | bqual_length | data |

±---------±-------------±-------------±-----------------------------------------------------------+

| 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 |

±---------±-------------±-------------±-----------------------------------------------------------+

数据表示信息如下:

面试准备+复习分享:

为了应付面试也刷了很多的面试题与资料,现在就分享给有需要的读者朋友,资料我只截取出来一部分哦

秋招|美团java一面二面HR面面经,分享攒攒人品

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
va)**
[外链图片转存中…(img-0mQzCGl2-1713287131248)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值