首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL XA 事務恢復實戰:啟動報錯、xa recover 定位、xa rollback 清理三步曲

     編輯:MySQL 綜合教學

啟動報錯現象

InnoDB: Transaction 0 4497755 was in the XA prepared state.
InnoDB: 3 transaction(s) which must be rolled back or cleaned up
[Warning] Found 3 prepared XA transactions

恢復流程

  1. 登入 MySQL
  2. 查看準備態事務:
    XA RECOVER;
    -- 輸出 formatID, gtrid_length, bqual_length, data (xid 拼接)
  3. 逐個回滾:
    XA ROLLBACK 'gtrid', 'bqual', formatID;
    -- 例:
    XA ROLLBACK '1-7f000001:bae5:4b6928eb:fb5c3', '7f000001:bae5:4b6928eb:fb5cd', 131075;
  4. 重啟 MySQL,恢復正常

XID 結構說明

  • formatID:格式標識
  • gtrid:全局事務 ID
  • bqual:分支限定符
  • data = gtrid + bqual 拼接

預防建議

  • 應用層確保 XA 事務正常提交/回滾,避免 prepared 狀態殘留
  • 監控 INNODB_METRICS 中 trx_rseg_history_len 等指標
  • 定期檢查 XA RECOVER 輸出
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved