mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享
MySQL是一種開放源代碼的關系型數據庫管理系統(RDBMS),因為其速度、可靠性和適應性而備受關注。大多數人都認為在不需要事務化處理的情況下,MySQL是管理內容最好的選擇。mysql雖然功能未必很強大,但因為它的開源、廣泛傳播,導致很多人都了解到這個數據庫。故障基本都能通過社區和官方文檔獲取解決方案,在應用范圍上也是很廣的,互聯網公司基本都有使用mysql。本章主要針對mysql5.7.25的鎖表故障進行分析處理。
[分析過程]1、首先接到業務反饋數據庫完全無法寫入數據了,后查看數據庫監控發現指標正常;
2、登陸數據庫主機核實主機資源正常:
3、通過showprocesslist查看當前連接,發現300左右的連接基本全是waitingfor global read lock和少部分waitingfor stored function metadata lock以及FLUSHTABLES WITH READ LOCK,如下所示
4、通過showOPEN TABLES where In_use > 0查看當前被鎖表xx_test,
5、通過查看當前事務發現只有兩個事務;
6、通過查看當前正在鎖事務和等待鎖事務,發現并沒有記錄有正在鎖事務和等待鎖事務
7、通過查看當前事務確認到目前只有兩個事務在運行,其它都是都在等待,且無等待鎖表及正在鎖表。
8、發現備份賬號FLUSHTABLES WITH READ LOCK關閉所有打開的表并使用全局讀鎖鎖定所有數據庫的所有表,所以業務查詢沒有問題。
9、猜想應該是因為xx_test的鎖表阻塞了FLUSHTABLES WITH READ LOCK執行,導致整個數據庫完全無法修改。
[驗證過程]首先通過processlist輸出看到鎖表xx_test連接有3個等待該表的鎖,其它并沒有該表請求連接,先將這三個等待的select連接kill。
然后將當前正在執行的兩個事務kill。
觀察數據庫發現FLUSH TABLES WITH READ LOCK結束,其它等待事務都開始執行,數據庫恢復正常。
數據庫觸發FLUSHTABLES WITH READLOCK應該是有業務方在備份,單純的表被鎖了一般情況下也只會影響鎖表的寫,但是在鎖表情況的備份觸發FLUSHTABLES WITH READ LOCK,就可能導致整個庫變成只讀,建議備份工作都放在晚上閑時。
總結
以上是生活随笔為你收集整理的mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 路由器怎么连接台式电脑路由器连接台式如何
- 下一篇: 64位 regsrv win10_Win