电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL 查看鏈接及殺掉異常鏈接的方法

瀏覽:8日期:2023-10-05 16:09:11
前言:

在數據庫運維過程中,我們時常會關注數據庫的鏈接情況,比如總共有多少鏈接、有多少活躍鏈接、有沒有執行時間過長的鏈接等。數據庫的各種異常也能通過鏈接情況間接反應出來,特別是數據庫出現死鎖或嚴重卡頓的時候,我們首先應該查看數據庫是否有異常鏈接,并殺掉這些異常鏈接。本篇文章將主要介紹如何查看數據庫鏈接及如何殺掉異常鏈接的方法。

1.查看數據庫鏈接

查看數據庫鏈接最常用的語句就是 show processlist 了,這條語句可以查看數據庫中存在的線程狀態。普通用戶只可以查看當前用戶發起的鏈接,具有 PROCESS 全局權限的用戶則可以查看所有用戶的鏈接。

show processlist 結果中的 Info 字段僅顯示每個語句的前 100 個字符,如果需要顯示更多信息,可以使用 show full processlist 。同樣的,查看 information_schema.processlist 表也可以看到數據庫鏈接狀態信息。

# 普通用戶只能看到當前用戶發起的鏈接mysql> select user();+--------------------+| user() |+--------------------+| testuser@localhost |+--------------------+1 row in set (0.00 sec)mysql> show grants;+----------------------------------------------------------------------+| Grants for testuser@%|+----------------------------------------------------------------------+| GRANT USAGE ON *.* TO ’testuser’@’%’ || GRANT SELECT, INSERT, UPDATE, DELETE ON `testdb`.* TO ’testuser’@’%’ |+----------------------------------------------------------------------+2 rows in set (0.00 sec)mysql> show processlist;+--------+----------+-----------+--------+---------+------+----------+------------------+| Id | User | Host | db | Command | Time | State | Info |+--------+----------+-----------+--------+---------+------+----------+------------------+| 769386 | testuser | localhost | NULL | Sleep | 201 | | NULL || 769390 | testuser | localhost | testdb | Query | 0 | starting | show processlist |+--------+----------+-----------+--------+---------+------+----------+------------------+2 rows in set (0.00 sec)mysql> select * from information_schema.processlist;+--------+----------+-----------+--------+---------+------+-----------+----------------------------------------------+| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |+--------+----------+-----------+--------+---------+------+-----------+----------------------------------------------+| 769386 | testuser | localhost | NULL | Sleep | 210 | | NULL || 769390 | testuser | localhost | testdb | Query | 0 | executing | select * from information_schema.processlist |+--------+----------+-----------+--------+---------+------+-----------+----------------------------------------------+2 rows in set (0.00 sec)# 授予了PROCESS權限后,可以看到所有用戶的鏈接mysql> grant process on *.* to ’testuser’@’%’;Query OK, 0 rows affected (0.01 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql> show grants;+----------------------------------------------------------------------+| Grants for testuser@%|+----------------------------------------------------------------------+| GRANT PROCESS ON *.* TO ’testuser’@’%’ || GRANT SELECT, INSERT, UPDATE, DELETE ON `testdb`.* TO ’testuser’@’%’ |+----------------------------------------------------------------------+2 rows in set (0.00 sec)mysql> show processlist;+--------+----------+--------------------+--------+---------+------+----------+------------------+| Id | User | Host | db | Command | Time | State | Info |+--------+----------+--------------------+--------+---------+------+----------+------------------+| 769347 | root | localhost | testdb | Sleep | 53 | | NULL || 769357 | root | 192.168.85.0:61709 | NULL | Sleep | 521 | | NULL || 769386 | testuser | localhost | NULL | Sleep | 406 | | NULL || 769473 | testuser | localhost | testdb | Query | 0 | starting | show processlist |+--------+----------+--------------------+--------+---------+------+----------+------------------+4 rows in set (0.00 sec)

通過 show processlist 所得結果,我們可以清晰了解各線程鏈接的詳細信息。具體字段含義還是比較容易理解的,下面具體來解釋下各個字段代表的意思:

Id:就是這個鏈接的唯一標識,可通過 kill 命令,加上這個Id值將此鏈接殺掉。 User:就是指發起這個鏈接的用戶名。 Host:記錄了發送請求的客戶端的 IP 和 端口號,可以定位到是哪個客戶端的哪個進程發送的請求。 db:當前執行的命令是在哪一個數據庫上。如果沒有指定數據庫,則該值為 NULL 。 Command:是指此刻該線程鏈接正在執行的命令。 Time:表示該線程鏈接處于當前狀態的時間。 State:線程的狀態,和 Command 對應。 Info:記錄的是線程執行的具體語句。

當數據庫鏈接數過多時,篩選有用信息又成了一件麻煩事,比如我們只想查某個用戶或某個狀態的鏈接。這個時候用 show processlist 則會查找出一些我們不需要的信息,此時使用 information_schema.processlist 進行篩選會變得容易許多,下面展示幾個常見篩選需求:

# 只查看某個ID的鏈接信息select * from information_schema.processlist where id = 705207;# 篩選出某個用戶的鏈接select * from information_schema.processlist where user = ’testuser’;# 篩選出所有非空閑的鏈接select * from information_schema.processlist where command != ’Sleep’;# 篩選出空閑時間在600秒以上的鏈接select * from information_schema.processlist where command = ’Sleep’ and time > 600;# 篩選出處于某個狀態的鏈接select * from information_schema.processlist where state = ’Sending data’;# 篩選某個客戶端IP的鏈接select * from information_schema.processlist where host like ’192.168.85.0%’; 2.殺掉數據庫鏈接

如果某個數據庫鏈接異常,我們可以通過 kill 語句來殺掉該鏈接,kill 標準語法是:KILL [CONNECTION | QUERY] processlist_id;

KILL 允許使用可選的 CONNECTION 或 QUERY 修飾符:

KILL CONNECTION 與不含修改符的 KILL 一樣,它會終止該 process 相關鏈接。 KILL QUERY 終止鏈接當前正在執行的語句,但保持鏈接本身不變。

殺掉鏈接的能力取決于 SUPER 權限:

如果沒有 SUPER 權限,則只能殺掉當前用戶發起的鏈接。 具有 SUPER 權限的用戶,可以殺掉所有鏈接。

遇到突發情況,需要批量殺鏈接時,可以通過拼接 SQL 得到 kill 語句,然后再執行,這樣會方便很多,分享幾個可能用到的殺鏈接的 SQL :

# 殺掉空閑時間在600秒以上的鏈接,拼接得到kill語句select concat(’KILL ’,id,’;’) from information_schema.`processlist` where command = ’Sleep’ and time > 600;# 殺掉處于某個狀態的鏈接,拼接得到kill語句select concat(’KILL ’,id,’;’) from information_schema.`processlist` where state = ’Sending data’;select concat(’KILL ’,id,’;’) from information_schema.`processlist` where state = ’Waiting for table metadata lock’;# 殺掉某個用戶發起的鏈接,拼接得到kill語句select concat(’KILL ’,id,’;’) from information_schema.`processlist` user = ’testuser’;

這里提醒下,kill 語句一定要慎用!特別是此鏈接執行的是更新語句或表結構變動語句時,殺掉鏈接可能需要比較長時間的回滾操作。

總結:

本篇文章講解了查看及殺掉數據庫鏈接的方法,以后懷疑數據庫有問題,可以第一時間看下數據庫鏈接情況。

以上就是MySQL 查看鏈接及殺掉異常鏈接的方法的詳細內容,更多關于MySQL 查看鏈接及殺掉異常鏈接的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | PAS糖原染色-CBA流式多因子-明胶酶谱MMP-上海研谨生物科技有限公司 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 沈阳液压泵_沈阳液压阀_沈阳液压站-沈阳海德太科液压设备有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 悬浮拼装地板_幼儿园_篮球场_悬浮拼接地板-山东悬浮拼装地板厂家 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 威实软件_软件定制开发_OA_OA办公系统_OA系统_办公自动化软件 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 心得体会网_心得体会格式范文模板| 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 郑州宣传片拍摄-TVC广告片拍摄-微电影短视频制作-河南优柿文化传媒有限公司 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 水厂污泥地磅|污泥处理地磅厂家|地磅无人值守称重系统升级改造|地磅自动称重系统维修-河南成辉电子科技有限公司 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 传动滚筒_厂家-淄博海恒机械制造厂 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | 注浆压力变送器-高温熔体传感器-矿用压力传感器|ZHYQ朝辉 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 小小作文网_中小学优秀作文范文大全 | 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 |