精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

生產運維腳本引發的 MDL 鎖故障排查之旅

運維
當事務持有?SHARED_UPGRADABLE?鎖時,可以根據操作需求將其升級為?SHARED_NO_WRITE?鎖(允許讀取但不允許寫入)或?EXCLUSIVE?鎖(獨占鎖,不允許其他事務同時訪問)。這種升級機制在數據庫操作中用于確保數據的一致性和并發控制。

1. 故障背景

在生產環境中,DBA 經常需要執行 DDL 變更操作。在此過程中,無法獲取 MDL(元數據鎖)的問題時有發生。

當執行 show processlist 命令時,若出現 waiting for table metadata lock 提示,這表明數據庫遭遇了 MDL 元數據鎖問題。

為此,筆者結合以往生產故障案例,梳理 MDL 鎖問題的排查思路與方法。

2. 問題重現

2.1 一個有隱患的腳本

生產運維腳本調用了連接池,但在執行完數據庫操作后,未關閉數據庫游標與連接,這為后續的 MDL 鎖問題埋下了隱患。

import mysql.connector
from dbutils.pooled_db import PooledDB
# 數據庫連接信息
pool = PooledDB(
    creator=mysql.connector,  # 使用mysql.connector作為數據庫驅動
    mincached=1,  # 連接池中空閑連接的初始數量
    maxcached=10,  # 連接池中空閑連接的最大數量
    maxshared=3,  # 共享連接的最大數量
    maxconnections=15,  # 連接池允許的最大連接數
    blocking=True,  # 當連接池達到最大連接數時,是否阻塞等待
    host='xx.xx.xx.xx',
    user='wms',
    password='123456',
    database='wms',
    unix_socket='/data/mysql8.0.23-3306/mysql-8.0.23/mysql3306.sock'
)
try:
    # 從連接池中獲取一個連接
    conn = pool.connection()
    cursor = conn.cursor()
    # 執行查詢語句
    sql = "SELECT * FROM wms.order_info LIMIT 1;"
    cursor.execute(sql)
    results = cursor.fetchall()
    for row in results:
        print(row)
    # 不釋放連接和連接池,模擬連接未釋放的情況
    # cursor.close()
    # conn.close()
    # 保持程序運行,方便在其他會話中執行 DDL 操作
    whileTrue:
        pass
except mysql.connector.Error as err:
    print(f"Error: {err}")

2.2 模擬生產 DDL 操作

變更窗口:DBA 在數據庫中進行相關表的 DDL 操作時,問題逐漸顯現。

// 執行腳本
[root@11-186-63-123 opt]# python3.8 pool.py

// 會話1:對該表加字段,執行 DDL 操作,發現 DDL 掛起
ALTER TABLE wms.order_info MODIFY COLUMN status varchar(35);

// 會話2:檢查數據庫會話,發現產生 MDL 鎖
mysql> select * from information_schema.processlist where command != 'Sleep';
+--------+-----------------+---------------------+------+------------------+---------+---------------------------------------------------------------+---------------------------------------------------------------------+
| ID     | USER            | HOST                | DB   | COMMAND          | TIME    | STATE                                                         | INFO                                                                |
+--------+-----------------+---------------------+------+------------------+---------+---------------------------------------------------------------+---------------------------------------------------------------------+
|     57 | repl            | 11.186.63.118:36624 | NULL | Binlog Dump GTID | 2872846 | Master has sent all binlog to slave; waiting for more updates | NULL                                                                |
| 377524 | root            | localhost           | wms  | Query            |      37 | Waiting for table metadata lock                               | ALTER TABLE wms.order_info MODIFY COLUMN status varchar(35)         |
|      5 | event_scheduler | localhost           | NULL | Daemon           | 3022562 | Waiting onempty queue                                        | NULL                                                                |
| 378462 | root            | localhost           | NULL | Query            |       0 | executing                                                     | select * from information_schema.processlist where command != 'Sleep' |
+--------+-----------------+---------------------+------+------------------+---------+---------------------------------------------------------------+---------------------------------------------------------------------+
4rowsinset (0.00 sec)

// 會話3:讀寫操作均被阻塞,業務受到影響
mysql> select * from wms.order_info limit 1;
mysql> insert into order_info values(9911131,121,'2012-12-12 12:00:00','1',1);

由于等待獲取 MDL 鎖,對該表的任何操作都處于阻塞狀態,嚴重影響業務。

3. 排查思路

3.1 查看當前已持有的 MDL 鎖的事務信息

select OBJECT_SCHEMA,OBJECT_NAME,COLUMN_NAME,LOCK_TYPE,LOCK_STATUS,OWNER_THREAD_ID from performance_schema.metadata_locks where OBJECT_NAME='order_info';
+---------------+-------------+-------------+-------------------+-----------+-----------------+
| OBJECT_SCHEMA | OBJECT_NAME | COLUMN_NAME | LOCK_TYPE         | LOCK_STATUS | OWNER_THREAD_ID |
+---------------+-------------+-------------+-------------------+-----------+-----------------+
| wms           | order_info  | NULL        | SHARED_UPGRADABLE | GRANTED     |          392740 |
| wms           | order_info  | NULL        | EXCLUSIVE         | PENDING     |          392740 |
| wms           | order_info  | NULL        | SHARED_READ       | GRANTED     |          392747 |
+---------------+-------------+-------------+-------------------+-----------+-----------------+
3 rows in set (0.00 sec)

## LOCK_STATUS:表示鎖的當前狀態;GRANTED(已授予鎖),PENDING(等待授予鎖)。

從查詢結果可以推斷,有一個事務(線程 ID 為 392747)持有 order_info 表的共享讀鎖,另一個事務(線程 ID 為 392740)持有 SHARED_UPGRADABLE(共享升級鎖),并試圖將其升級為 EXCLUSIVE (排他鎖),但由于共享鎖的存在而等待。

3.2 根據線程 ID 獲取 MySQL 的 processlist_id

mysql> select THREAD_ID,PROCESSLIST_ID from performance_schema.threads where thread_id in (392740,392747);
+-----------+----------------+
| THREAD_ID | PROCESSLIST_ID |
+-----------+----------------+
|    392740 |         392568 |
|    392747 |         392575 |
+-----------+----------------+
2 rows in set (0.00 sec)

3.3 根據 processlist_id 獲取 sql_text

mysql> SELECT a.thread_id, a.sql_text  FROM performance_schema.events_statements_current a  WHERE a.THREAD_ID IN (     SELECT b.THREAD_ID      FROM performance_schema.threads b      WHERE b.PROCESSLIST_ID IN (392568, 392575) );
+-----------+-------------------------------------------------------------+
| thread_id | sql_text                                                    |
+-----------+-------------------------------------------------------------+
|    392740 | ALTER TABLE wms.order_info MODIFY COLUMN status varchar(30) |
|    392747 | SELECT * FROM wms.order_info LIMIT 1                        |
+-----------+-------------------------------------------------------------+
2 rows inset (0.00 sec)

綜上所述:select 查詢會話產生的 SHARED_READ(共享讀鎖),導致 SHARED_UPGRADABLE(共享升級鎖)無法升級為 EXCLUSIVE (排他鎖),故導致 DDL 掛起。

4. 解決方案

為了解決 DDL 掛起的問題,需要殺死持有 order_info 表共享讀鎖的相關事務。

kill 392575;

執行上述命令后,可以看到 DDL 操作成功執行。

mysql> ALTER TABLE wms.order_info MODIFY COLUMN status varchar(30);
Query OK, 1000001 rows affected (14 min 53.45 sec)
Records: 1000001  Duplicates: 0  Warnings: 0

5. 總結

5.1 鎖分類

鎖類型

作用范圍

核心作用

查看方法

行鎖

InnoDB 

存儲引擎層

實現事務并發控制與數據一致性,通過索引記錄鎖標志鎖定特定行,執行中自動獲取和釋放

可通過 SHOW ENGINE INNODB STATUS 查看行鎖相關信息

MDL 鎖

MySQL

Server 層

保護表元數據,操作表時自動獲取,防止表結構被修改

若有事務持有 MDL 寫鎖,其他等待獲取 MDL 鎖的會話會顯示處于 Waiting for table metadata lock 狀態。

全局鎖

MySQL

Server 層

對整個數據庫實例鎖定,執行 FLUSH TABLES WITH READ LOCK 獲取全局讀鎖,使數據庫只讀,阻塞寫操作,常用于數據庫邏輯備份保證數據一致性

1. SHOW PROCESSLIST 查看加鎖會話語句

2. 觀察寫操作會話,等待時顯示 Waiting for global read lock

5.2 共享升級鎖

SHARED_UPGRADABLE 是一種元數據鎖(Metadata Lock,簡稱 MDL),屬于 MySQL 中的鎖類型之一。它允許持有該鎖的事務在特定條件下將鎖升級為其他類型,如 EXCLUSIVE 鎖或 SHARED_NO_WRITE 鎖 。

升級機制

當事務持有 SHARED_UPGRADABLE 鎖時,可以根據操作需求將其升級為 SHARED_NO_WRITE 鎖(允許讀取但不允許寫入)或 EXCLUSIVE 鎖(獨占鎖,不允許其他事務同時訪問)。這種升級機制在數據庫操作中用于確保數據的一致性和并發控制。例如,在對表結構進行修改(如 DDL操作)時,可能需要將 SHARED_UPGRADABLE 鎖升級為 EXCLUSIVE 鎖,以防止其他事務在表結構修改過程中對表進行讀寫操作。

5.3 如何優化與避免 MDL 鎖

MDL 鎖一旦發生,會對業務造成極大影響,因為后續所有對該表的訪問都會被阻塞,導致連接積壓。為了盡量避免 MDL 鎖的發生,以下是幾點優化建議:

  • 開啟 metadata_locks 表記錄 MDL 鎖,以便更好地監控和分析鎖的使用情況。
  • 設置參數 lock_wait_timeout 為較小值,使被阻塞的操作能夠主動停止,避免長時間等待。
  • 規范使用事務,及時提交事務,避免使用大事務,減少鎖的持有時間。
  • 增強監控告警,及時發現 MDL 鎖問題,以便及時采取措施解決。
  • 將 DDL 操作及備份操作放在業務低峰期執行,減少對業務的影響。
  • 少用工具開啟事務進行查詢,圖形化工具使用后要及時關閉,避免不必要的鎖占用。
  • 規范運維腳本的使用,避免出現未關閉數據庫游標與連接等情況,本次故障就是由這種情況引發的。
責任編輯:武曉燕 來源: 愛可生開源社區
相關推薦

2020-09-25 11:10:51

運維故障排查監控

2021-10-28 17:05:11

IT運維故障

2020-11-12 11:00:42

運維IT架構

2018-09-10 05:03:51

網絡故障故障排查運維

2012-08-31 14:00:40

IT運維

2022-04-12 08:43:04

生產故障Dubbo調用

2023-11-10 07:23:57

Kubernetes集群網絡

2020-07-08 10:36:18

Linux 運維 數據

2021-07-21 16:22:40

運維架構技術

2017-07-25 10:53:27

2018-03-01 19:40:44

Linux運維常見問題

2024-01-08 16:14:40

美圖AIGC運維

2025-08-06 06:05:00

網絡故障Linux命令

2018-06-29 10:36:29

阿里云互聯網故障

2012-03-01 14:43:32

MySQLMDL

2013-08-04 21:44:48

運維故障故障排查云計算

2013-03-04 01:54:41

BYOD網絡建設網絡基礎架構

2019-04-01 14:39:32

Node.js故障排查

2020-06-12 13:26:03

線程池故障日志

2014-04-02 10:56:21

點贊
收藏

51CTO技術棧公眾號

日本高清视频一区二区三区 | 国产精品vip| 久久精品国产秦先生| 精品国产免费久久| 杨幂一区欧美专区| 欧美日韩高清丝袜| 欧美精品videossex少妇| 精品国产乱码久久久久久1区2匹| 亚洲一区二区偷拍精品| 国产在线观看91精品一区| 制服丝袜第二页| 91九色国产在线播放| 国产精品亚洲一区二区三区妖精 | mm131丰满少妇人体欣赏图| 日韩福利影视| 国产精品免费aⅴ片在线观看| 91sao在线观看国产| 亚洲欧美日韩色| 色呦呦呦在线观看| 国产福利一区二区三区| 欧美成人精品xxx| 99国产精品免费视频| 黄色在线观看网站| 国产一区二区三区在线观看精品| 日韩在线欧美在线| 色啦啦av综合| 91麻豆一二三四在线| 国产精品一级黄| 国产成人精品久久久| 一级黄色录像毛片| 456成人影院在线观看| 国产精品你懂的| 久久久福利视频| 亚洲精品毛片一区二区三区| 国产亚洲一卡2卡3卡4卡新区 | 亚洲这里只有精品| 国产小视频免费在线网址| 99久久99视频只有精品| 欧美一级片免费看| 日韩极品视频在线观看| 黄色aaa毛片| 国产亚洲午夜| 中文字幕在线成人| 成年人性生活视频| 婷婷久久免费视频| 欧美日韩中文国产| 只有这里有精品| 色综合免费视频| 日本亚洲免费观看| 久久国产精品久久久| 欧美日韩国产黄色| 日韩在线观看一区二区三区| 亚洲一区二区三区影院| 亚洲精品少妇一区二区| 日韩在线免费播放| 韩国三级在线一区| 97avcom| 久久久久久久久久久网| 国产一区二区区别| 亚洲欧美日韩精品久久奇米色影视 | 男男激情在线| 久久99久久99| 午夜精品理论片| 人妻无码一区二区三区免费| 66精品视频在线观看| 色综合天天性综合| 久久香蕉视频网站| 欧美jizzhd欧美| av午夜精品一区二区三区| 国产精品激情av在线播放| 丁香花五月激情| 精品视频97| 在线不卡国产精品| 欧美夫妇交换xxx| 日韩三级一区| 日韩欧美二区三区| 一区二区三区 日韩| 男人的天堂免费在线视频| 亚洲欧洲日本在线| 久久99欧美| 久草在线青青草| 国产精品乱码人人做人人爱 | 欧美精品日日鲁夜夜添| 欧洲精品一区二区三区久久| 日本韩国在线视频爽| 91蜜桃婷婷狠狠久久综合9色| 国产综合在线观看视频| 亚洲AV无码精品色毛片浪潮| 蜜臀av一区二区在线免费观看| 欧美精品第一页在线播放| 男人av资源站| 日韩亚洲一区在线| 亚洲区中文字幕| 亚洲欧美日本一区| 日韩免费看片| 久久乐国产精品| 青草影院在线观看| 国产亚洲激情| 91在线视频成人| 在线观看国产精品视频| 久久久噜噜噜| 欧美野外猛男的大粗鳮| 日本少妇激情视频| 激情欧美丁香| 欧美激情第99页| www青青草原| 99久久夜色精品国产亚洲1000部| 欧美黑人巨大xxx极品| 免费精品一区二区| 成人av在线一区二区三区| 成人黄动漫网站免费| 国产婷婷一区二区三区久久| 久久精品噜噜噜成人av农村| 国产精成人品localhost| 开心激情综合网| 国产精品日韩精品欧美在线| 漂亮人妻被中出中文字幕| 日韩深夜视频| 欧美一级黄色录像| 亚洲av毛片基地| 国产精品一国产精品k频道56| 92国产精品视频| 成人福利小视频| 成人免费毛片a| 国产在线资源一区| 清纯唯美亚洲色图| 亚洲国产视频直播| 久久久久xxxx| 中文字幕日韩在线| 最近日韩中文字幕中文| 狠狠人妻久久久久久综合| 水野朝阳av一区二区三区| 国产精品 欧美在线| 人妻视频一区二区三区| 99久久99久久精品国产片果冻| 国产日韩欧美二区| 亚洲妇熟xxxx妇色黄| 欧美精品xxxxbbbb| 久久久久人妻一区精品色| 一本到12不卡视频在线dvd| 欧美成人精品在线播放| 亚洲最大成人av| 国产肉丝袜一区二区| 一区视频二区视频| 不卡的av影片| 在线观看日韩高清av| 亚洲欧美日韩一二三区| 成人在线tv视频| 亚洲欧美日韩一区在线| 男女啊啊啊视频| 久久精品72免费观看| 手机成人在线| 波多野结衣在线高清| 亚洲精品一区二区三区四区高清| 久久国产精品二区| 日韩在线a电影| 97人人模人人爽人人少妇| 青青草在线免费视频| 欧美日韩免费一区| 中文字幕1234区| 亚洲理论电影网| 99中文字幕| 丰满诱人av在线播放| 欧美mv日韩mv亚洲| 亚洲一级黄色录像| 日本aⅴ免费视频一区二区三区 | 日韩欧美在线观看视频| 免费成年人高清视频| 99久久99久久精品国产片果冰| 亚洲自拍偷拍福利| 超碰中文在线| 亚洲午夜av久久乱码| 国产精品.www| 精品午夜一区二区三区在线观看| 二级片在线观看| 日本成人片在线| 亚洲精品一区二区三区蜜桃下载 | 全网免费在线播放视频入口| 国产高清精品久久久久| 免费在线激情视频| 日韩国产欧美| 99久久国产免费免费| 亚洲天堂av在线| 日韩精品资源二区在线| 日本少妇激情舌吻| 国产精品伦理一区二区| 成年人性生活视频| 日韩制服丝袜av| 日本大片免费看| 欧美日韩一区二区三区视频播放| 成人伊人精品色xxxx视频| 成人网视频在线观看| 欧美日韩在线免费观看| 性爱在线免费视频| 成人精品一区二区三区四区 | 国产伦理精品不卡| 丰满少妇被猛烈进入高清播放| 天堂av一区| 人体精品一二三区| 无套内谢的新婚少妇国语播放| 亚洲久本草在线中文字幕| 亚洲精品www.| 亚洲二区精品| 欧美日韩一区二区三区电影| 日韩av影院| 欧洲精品久久久| а天堂中文在线官网| 91精品免费观看| 99热这里只有精品4| caoporen国产精品视频| 欧美成人手机在线视频| 久久久精品网| 丁香花在线影院观看在线播放| 欧美疯狂party性派对| 国产精品自拍偷拍| 日本在线视频站| 亚洲精品天天看| 成人h动漫精品一区二区下载| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲男人天堂2021| 日韩 欧美一区二区三区| 精品无码国模私拍视频| 亚洲男人都懂第一日本| 日韩免费av片在线观看| 激情小视频在线| 精品国产99国产精品| 国产精品永久久久久久久久久| 亚洲视频在线一区观看| 丰满少妇中文字幕| 麻豆91在线看| 国产精品igao| 91精品国产视频| 国产91一区二区三区| 日韩深夜福利网站| 国产精品久久网| 五月婷婷视频在线观看| 色爱av美腿丝袜综合粉嫩av| 粉嫩av一区| 亚洲午夜女主播在线直播| 免费在线看v| 亚洲精品自在久久| 免费在线视频一级不卡| 亚洲人成在线电影| 福利视频在线看| 一区二区欧美在线| 国产永久免费高清在线观看视频| 亚洲精品一区二区网址| 嫩草在线播放| 中文字幕精品网| 麻豆网站在线| 久热精品视频在线| 四虎精品在线| 91精品在线观看入口| 国产麻豆免费观看| 日韩亚洲国产中文字幕欧美| www.97超碰| 亚洲第一页中文字幕| 在线中文字幕网站| 欧美人动与zoxxxx乱| 久草视频在线观| 日韩欧中文字幕| 进去里视频在线观看| 亚洲成人黄色影院| 很污很黄的网站| 成人免费在线视频观看| 免费一级片视频| 精品久久久一区二区| www.毛片com| 亚洲一区二区精品3399| 亚洲黄色小说图片| 在线免费精品视频| 国产有码在线观看| 色噜噜夜夜夜综合网| 精品在线免费观看视频| 同产精品九九九| 免费av中文字幕| 69久久夜色精品国产69蝌蚪网 | 日韩国产精品视频| 国产成人久久精品77777综合 | 国产精品自拍电影| 欧美r级在线观看| 国产尤物视频在线| 欧美另类精品xxxx孕妇| 成人午夜在线观看视频| 欧美成人精品一区二区三区| 天堂中文在线播放| 成人国产精品免费视频| 久久久久高潮毛片免费全部播放| 91亚洲精品久久久久久久久久久久| 66精品视频在线观看| 日本精品一区二区| 一本一道久久a久久精品蜜桃 | 精品视频一区二区在线观看| 欧美视频在线免费看| 国产一区二区小视频| 日韩av在线网站| 国产黄色在线观看| 日韩av免费网站| 99re8这里有精品热视频8在线 | 国产在线观看一区二区三区| 老牛国内精品亚洲成av人片| 一区二区三区四区| 亚洲永久视频| 欧美三级一级片| 国产在线看一区| 少妇av片在线观看| 天天影视网天天综合色在线播放| 一级特黄aaa大片| 亚洲欧美成人网| 19禁羞羞电影院在线观看| 91久久久久久| 日韩三级在线| 中文字幕视频在线免费观看| av资源网一区| 久久影院一区二区| 欧美丰满高潮xxxx喷水动漫| 国产小视频免费在线网址| 性色av香蕉一区二区| 欧美影院精品| 久久av秘一区二区三区| 日本视频一区二区| 91视频在线网站| 国产精品免费人成网站| 亚洲欧美综合另类| 欧美亚洲国产bt| 一级全黄裸体免费视频| 亚洲天堂网在线观看| a欧美人片人妖| 国产精品欧美激情| 九九热线有精品视频99| 亚洲精品一区二| 欧美日韩免费| 国产精品无码一区二区在线| 美女精品在线| 182在线视频| 久久久不卡网国产精品一区| 中文字幕第24页| 色婷婷综合久久| 免费在线视频一级不卡| 日本成熟性欧美| 久久综合欧美| 日日摸天天爽天天爽视频| 精品在线播放免费| 成年人免费视频播放| 欧美日韩在线播放一区| melody高清在线观看| 国产精品久在线观看| 日韩成人免费| av在线免费看片| 樱花影视一区二区| 国产免费观看av| 国产视频精品xxxx| 免费日韩电影| 51国偷自产一区二区三区的来源 | 国产欧美自拍一区| 日韩伦理一区二区三区av在线| 亚洲天天综合| 国产精品二区视频| 亚洲国产一区在线观看| 四虎国产精品永远| 国产精品电影网站| 国产精品黑丝在线播放 | 国产在线观看第一页| 日韩在线视频观看| 欧美一区一区| 秋霞在线观看一区二区三区| 日韩av一区二区三区四区| 成人性视频免费看| 欧美一级精品在线| 91色在线看| 四虎影院一区二区三区 | 黄色国产在线观看| 在线观看不卡一区| 中文国产字幕在线观看| 国内精品久久久久久久果冻传媒| 久久亚洲美女| 日韩精品一区二区亚洲av性色| 色综合久久久久综合99| av电影在线观看| 国产va免费精品高清在线观看| 日本女优一区| 激情五月亚洲色图| 91丨九色丨蝌蚪丨老版| 怡红院av久久久久久久| 欧美成人一区在线| 日本欧美三级| 精品亚洲视频在线| 亚洲va在线va天堂| 亚洲精品一区二区三区不卡| 5566日本婷婷色中文字幕97| 久久一本综合| 国产 xxxx| 884aa四虎影成人精品一区| 福利成人导航| 一区国产精品| 久久免费国产精品| 黄色免费av网站| 欧美成人国产va精品日本一级| 亚洲都市激情| 色哟哟视频在线|