華為云計算 云知識 RDS for MySQL元數(shù)據(jù)鎖MDL導致無法操作數(shù)據(jù)庫的解決方法
RDS for MySQL元數(shù)據(jù)鎖MDL導致無法操作數(shù)據(jù)庫的解決方法

MetaData Lock即元數(shù)據(jù)鎖,MetaData Lock主要為了保證元數(shù)據(jù)的一致性,用于處理不同線程操作同一數(shù)據(jù)對象的同步與互斥問題。MySQL 5.5版本開始,引入了MDL鎖,但是因為MDL鎖,會導致表級別的鎖,無論是讀或者寫操作,都無法進行,導致SQL的阻塞。本章介紹通過華為云 數(shù)據(jù)管理服務 (Data Admin Service,簡稱DAS)解決該問題。

操作步驟

1.登錄管理控制臺。

2.單擊管理控制臺左上角的位置圖標,選擇區(qū)域和項目。

3.選擇“數(shù)據(jù)庫>關系型數(shù)據(jù)庫”。進入關系型數(shù)據(jù)庫信息頁面。

4.在“實例管理”頁面,選擇目標實例,單擊操作列的“登錄”,進入 數(shù)據(jù)管理 服務數(shù)據(jù)庫登錄界面。

您也可以在“實例管理”頁面,單擊目標實例名稱,在頁面右上角,單擊“登錄”,進入數(shù)據(jù)管理服務數(shù)據(jù)庫登錄界面。

5.正確輸入數(shù)據(jù)庫用戶名和密碼,單擊“登錄”,即可進入您的數(shù)據(jù)庫并進行管理。

6.在頂部菜單欄選擇“SQL操作”>“SQL窗口”,打開一個SQL窗口。

7.在SQL窗口執(zhí)行如下SQL查看數(shù)據(jù)庫所有線程狀態(tài)。

show full processlist

圖1執(zhí)行結果

RDS for MySQL元數(shù)據(jù)鎖MDL導致無法操作數(shù)據(jù)庫的解決方法1    

8.查看“State”列是否出現(xiàn)大量“Waiting for table metadata lock”,“Waiting for table metadata lock”即表示出現(xiàn)阻塞,在對應的“Info”列可以查看到對應表的操作,找到正在對該表進行操作的會話,記錄“Id”。

9.在SQL窗口執(zhí)行如下命令解鎖MDL鎖。

kill Id

圖2執(zhí)行結果

RDS for MySQL元數(shù)據(jù)鎖MDL導致無法操作數(shù)據(jù)庫的解決方法2