Mysql 出現(xiàn)故障應(yīng)用直接中斷連接導(dǎo)致數(shù)據(jù)被鎖(生產(chǎn)故障)詳解
應(yīng)用直接中斷連接導(dǎo)致數(shù)據(jù)被鎖(生產(chǎn)故障)
- 這是一個(gè)由應(yīng)用重啟連接直接而導(dǎo)致數(shù)據(jù)被鎖的問題。
- 系統(tǒng)大致結(jié)構(gòu)
基本情況:
- 整個(gè)架構(gòu)為了統(tǒng)一管理db連接,共享連接。
- 應(yīng)用通過loadbalance連接db訪問層。
- db訪問層后端代理若干db。
- 應(yīng)用到loadbalance以mysql協(xié)議通信。
- db訪問層到db以JDBC方式通信。
故障: 某些數(shù)據(jù)庫中的表數(shù)據(jù)相當(dāng)長(zhǎng)一段時(shí)間被鎖,導(dǎo)致應(yīng)用某些場(chǎng)景失敗。
故障分析:應(yīng)用開啟一個(gè)事務(wù)的set autocommit=0命令是從app-lb-db訪問層-db,期間如果某個(gè)事務(wù)還未執(zhí)行完,而app強(qiáng)行中斷連接,就會(huì)導(dǎo)致app-lb的連接斷開,而lb并不直接斷開后端的連接,即lb-db訪問層-db的連接不會(huì)斷,從而導(dǎo)致db不會(huì)發(fā)生回滾操作。而且此事務(wù)對(duì)某些記錄加了鎖,于是就會(huì)發(fā)生某些數(shù)據(jù)被鎖。直到db訪問層檢測(cè)出該連接超過了idle時(shí)間才會(huì)關(guān)閉,并發(fā)送回滾命令給db。
解決問題:
① lb在前端連接關(guān)閉時(shí)要同時(shí)關(guān)閉同會(huì)話的后端連接,并且db訪問層要監(jiān)聽lb的連接,一旦關(guān)閉則要做回滾操作。
②去掉lb,提供客戶端loadbalance,應(yīng)用一旦關(guān)閉連接db訪問層也要關(guān)閉連接。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Mysql聯(lián)合查詢UNION和UNION ALL的使用介紹
本文詳細(xì)介紹了Mysql的聯(lián)合查詢命令UNION和UNION ALL,總結(jié)了使用語法和注意事項(xiàng),以及學(xué)習(xí)例子和項(xiàng)目例子,需要的朋友可以參考下2014-04-04MySQL多實(shí)例安裝開機(jī)自啟動(dòng)服務(wù)配置過程
這篇文章主要介紹了MySQL中,多實(shí)例安裝開機(jī)自啟服務(wù)配置的過程詳細(xì)步驟,有需要的朋友可以借鑒參考下,希望可以有所幫助,感謝閱讀2021-09-09詳解 Mysql查詢結(jié)果順序按 in() 中ID 的順序排列
這篇文章主要介紹了詳解 Mysql查詢結(jié)果順序按 in() 中ID 的順序排列的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09MySQL安裝提示"請(qǐng)鍵入NET HELPMSG 3534以獲得更多的幫助"的解決辦法
這篇文章主要介紹了MySQL安裝提示"請(qǐng)鍵入NET HELPMSG 3534以獲得更多的幫助"的解決辦法2017-03-03mysql 8.0.11 macos10.13安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11 macos10.13安裝配置方法圖文教程,mysql數(shù)據(jù)庫安裝及配置環(huán)境變量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07MySQL創(chuàng)建數(shù)據(jù)表并建立主外鍵關(guān)系詳解
這篇文章主要介紹了MySQL創(chuàng)建數(shù)據(jù)表并建立主外鍵關(guān)系詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06