當面臨RDS MySQL的死結問題時,您可以使用鎖分析功能,直觀地查看和分析資料庫最近一次發生的死結、事務阻塞、中繼資料鎖等待資訊,從而快速定位死結問題,提升資料庫的穩定性。
前提條件
執行個體為如下版本:
RDS MySQL 8.0 高可用系列、三節點企業系列或叢集系列
RDS MySQL 5.7 高可用系列、三節點企業系列或叢集系列
RDS MySQL 5.6 高可用系列
RDS MySQL 5.5 高可用系列
您可在執行個體基本資料頁面,查看執行個體版本,確保類型及系列為高可用系列、三節點企業系列或叢集系列,資料庫類型為MySQL。
基礎系列的執行個體不支援鎖分析功能。
功能簡介
鎖分析功能支援對資料庫執行個體進行多維度死結分析、事務阻塞分析、中繼資料鎖等待分析。
全量死結分析和其他鎖分析功能需要開啟DAS經濟版或DAS企業版。需注意,DAS經濟版和DAS企業版目前僅支援部分地區,詳情請參見各個版本支援的資料庫和地區。開通DAS經濟或企業版請參見企業版。
最近死結分析:DAS基於
SHOW ENGINE INNODB STATUS
返回的最近一次死結日誌進行分析。如果發生過多次死結,DAS只會對最近一次死結進行分析。全量死結分析:DAS定時對錯誤記錄檔進行分析,解析其中的死結資訊,並進行全面的死結分析。同時,DAS支援查看指定時間範圍內的死結趨勢以及各個死結的詳細資料。
其他鎖分析:DAS根據
information_schema
和performance_schema
相關資料,即時分析資料庫執行個體當前會話中的中繼資料鎖和事務阻塞情況。中繼資料鎖分析:DAS根據
information_schema.processlist
等的資料,推導鎖等待關係,並產生相應的關係圖。事務阻塞分析:DAS根據
information_schema.processlist
,information_schema.innodb_trx
,以及information_schema.innodb_lock_waits
(MySQL 5.6和5.7使用該資料)和performance_schema.data_lock_waits
(MySQL 8.0使用該資料)分析事務阻塞關係,並產生相應的關係圖。
資料庫執行個體參數限制
目標資料庫必須設定相應的參數後,才能使用鎖分析的對應功能。
鎖分析功能 | 涉及的資料庫執行個體參數 |
最近死結分析 | 開啟 |
全量死結分析 |
|
其他鎖分析中的事務阻塞分析 | 對於RDS MySQL 8.0執行個體,需要開啟 |
修改資料庫執行個體參數請參見設定執行個體參數。
注意事項
死結分析目前不支援分析包含“TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION”描述的死結。
操作步驟
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列中,選擇自治服務(原CloudDBA) > 一鍵診斷。
單擊鎖分析頁簽。
在鎖分析頁面,單擊左側建立分析。
(可選)如發現死結,可以在新產生的死結診斷列表右側,在詳情欄中單擊查看詳情。
在鎖分析頁面,查看或診斷資料庫執行個體最近發生過的死結。
最近死結分析
在最近死結分析頁簽,單擊建立分析,DAS基於
SHOW ENGINE INNODB STATUS
返回的最近一次死結日誌進行分析。選擇時間段,查看該時間段內的死結診斷結果。單擊診斷結果詳情列的查看詳情,查看死結診斷的詳細結果。
全量死結分析
在全量死結分析頁簽,查看指定時間範圍內的死結趨勢以及各個死結的詳細資料。
其他鎖分析
在其他鎖分析頁簽,單擊建立分析,DAS根據
information_schema
和performance_schema
相關資料,即時分析資料庫執行個體當前會話中的中繼資料鎖和事務阻塞情況。選擇時間段,查看該時間段內的診斷結果。
單擊診斷結果前的查看鎖分析的統計資訊。
單擊統計資訊操作列的查看詳情,查看診斷的詳細結果和鎖分析關係圖。
滑鼠移至上方到對應會話上時,可以查看選中會話關聯的鎖等待關係。單擊該會話,可以查看選中會話的詳細資料。
後續操作
當資料庫執行個體出現死結時,您可以利用鎖分析所得的事務線程ID等資訊,在SQL洞察和審計中分析相關事務執行情況,以確認死結的原因。例如,在事務開啟後,當更新了一定數量的資料行後,這些資料行會被鎖定。如果事務期間較長而未提交或復原(包括隱式提交和隱式復原),那麼後續的會話或事務在更新相同的資料行時,就會進入LOCK WAIT狀態。