切換語言為:簡體
MySQL執行修改語句引起的超時問題排查修復過程記錄

MySQL執行修改語句引起的超時問題排查修復過程記錄

  • 爱糖宝
  • 2024-05-22
  • 2078
  • 0
  • 0

異常問題截圖:

MySQL執行修改語句引起的超時問題排查修復過程記錄

具體原因分析

  1. 這個問題發生在開發環境,懷疑是提交事務時終止專案執行,沒有提交該事務,造成死鎖

  2. 除錯該事務時時間太長,為什麼說有這個原因呢,因為透過查詢日誌顯示

The client was disconnected by the server because of inactivity. See wait_timeout and interactive_timeout for configuring this behavior.

MySQL執行修改語句引起的超時問題排查修復過程記錄

問題排查

# 當前執行的所有事務
select * from information_schema.innodb_trx;
# 檢視鎖的持有和請求情況 MySQL8.0
select * from performance_schema.data_locks;
# 檢視鎖的等待情況 MySQL8.0
select * from performance_schema.data_lock_waits;
# 當前執行緒詳情
show full processlist;
  1. 1.發現事務id176602一直在執行狀態

MySQL執行修改語句引起的超時問題排查修復過程記錄

  1. 鎖的持有和請求情況

MySQL執行修改語句引起的超時問題排查修復過程記錄

MySQL執行修改語句引起的超時問題排查修復過程記錄

  1. kill 掉事務關聯的mysql執行緒ID (trx_mysql_thread_id)

KILL 362

trx_mysql_thread_id = 0 無法Kill 接著排查
確認 trx_mysql_thread_id = 0 為XA(分散式)事務

  1. 執行回滾操作

#檢視XA事務資訊
xa recover;
#執行報錯可能沒有許可權
GRANT XA_RECOVER_ADMIN ON *.* TO root@'%' ;

得到

MySQL執行修改語句引起的超時問題排查修復過程記錄

回滾XA事務操作

# XA事務回滾命令的格式:
xa rollback 'left(data,gtrid_length)','substr(data,gtrid_length+1,bqual_length)', formatID;
#示列
SELECT left('55f3cdd8-4f45-49c8-bbca-2738fa5a1514:35',38);
SELECT substr('55f3cdd8-4f45-49c8-bbca-2738fa5a1514:35',39,1);
xa rollback '55f3cdd8-4f45-49c8-bbca-2738fa5a1514:3', '5',1;

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.