Mysql 出現(xiàn)故障應用直接中斷連接導致數(shù)據(jù)被鎖(生產(chǎn)故障)詳解
應用直接中斷連接導致數(shù)據(jù)被鎖(生產(chǎn)故障)
- 這是一個由應用重啟連接直接而導致數(shù)據(jù)被鎖的問題。
- 系統(tǒng)大致結(jié)構(gòu)

基本情況:
- 整個架構(gòu)為了統(tǒng)一管理db連接,共享連接。
- 應用通過loadbalance連接db訪問層。
- db訪問層后端代理若干db。
- 應用到loadbalance以mysql協(xié)議通信。
- db訪問層到db以JDBC方式通信。
故障: 某些數(shù)據(jù)庫中的表數(shù)據(jù)相當長一段時間被鎖,導致應用某些場景失敗。
故障分析:應用開啟一個事務的set autocommit=0命令是從app-lb-db訪問層-db,期間如果某個事務還未執(zhí)行完,而app強行中斷連接,就會導致app-lb的連接斷開,而lb并不直接斷開后端的連接,即lb-db訪問層-db的連接不會斷,從而導致db不會發(fā)生回滾操作。而且此事務對某些記錄加了鎖,于是就會發(fā)生某些數(shù)據(jù)被鎖。直到db訪問層檢測出該連接超過了idle時間才會關閉,并發(fā)送回滾命令給db。
解決問題:
① lb在前端連接關閉時要同時關閉同會話的后端連接,并且db訪問層要監(jiān)聽lb的連接,一旦關閉則要做回滾操作。
②去掉lb,提供客戶端loadbalance,應用一旦關閉連接db訪問層也要關閉連接。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
mysql 5.7.17 安裝配置方法圖文教程(ubuntu 16.04)
這篇文章主要為大家分享了ubuntu 16.04下mysql 5.7.17 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
SQL實現(xiàn)相鄰兩行數(shù)據(jù)的加減乘除操作
這篇文章主要介紹了SQL實現(xiàn)相鄰兩行數(shù)據(jù)的加減乘除操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Mysql數(shù)據(jù)庫函數(shù)之函數(shù)的用法小結(jié)
函數(shù)只是對查詢結(jié)果中的數(shù)據(jù)進行處理,不會改變數(shù)據(jù)庫中數(shù)據(jù)表的值,MySQL中的函數(shù)主要分為單行函數(shù)和多行函數(shù)兩大類,下面我們將詳細講解這兩大類函數(shù),這篇文章主要介紹了Mysql數(shù)據(jù)庫函數(shù)之函數(shù)的用法,需要的朋友可以參考下2022-11-11
MySQL錯誤Forcing close of thread的兩種解決方法
這篇文章主要介紹了MySQL錯誤Forcing close of thread的兩種解決方法,需要的朋友可以參考下2014-11-11

