mysql uroot e_批量 kill mysql 连接
事故重現(xiàn),并且加入一些后期想到的想法作為演義. 今天 mysql 服務(wù)器負(fù)載過高, 主庫上主要是寫的操作,首先看有沒有鎖表的,發(fā)現(xiàn)沒有.mysql?-uroot?-e?"show?processlist"|grep??-i?'locked'|wc?-l
再看delete,update,insert操作的數(shù)量.mysql?-uroot?-e?"show?processlist"|grep??-i?'delete'|wc?-l
mysql?-uroot?-e?"show?processlist"|grep??-i?'update'|wc?-l
mysql?-uroot?-e?"show?processlist"|grep??-i?'insert'|wc?-l
這三個(gè)的總數(shù)合起來也沒超過200, 就這樣, mysql 占用的 cpu% 已經(jīng)到了800%了.
再看下耗時(shí)排行(其實(shí)應(yīng)該查看鎖表就應(yīng)該直接看耗時(shí)了)mysql?-uroot?-e?"show?processlist;"?|sort?-nr?-k6;
發(fā)現(xiàn)有很多delete已經(jīng)快1個(gè)小時(shí)了還沒執(zhí)行完畢,看來主要是卡在了delete的操作上.
所以我先把線上服務(wù)器中執(zhí)行相同語句的操作都轉(zhuǎn)移寫入到文本,不再請(qǐng)求數(shù)據(jù),防止相同的操作進(jìn)來繼續(xù)堵塞. 然后想 kill 掉那些連接, 于是我想到是不是可以這樣來操作:mysql?-uroot?-e?"show?processlist;"?|grep?-i?'delete'|awk?'{print?$1}'|xargs?mysql?-uroot?-e?'kill?(xxx)'
但是awk得到的$1怎么傳給后面的做參數(shù)呢,因?yàn)槟┪策€有一個(gè)單引號(hào).然后又想到這樣, 發(fā)現(xiàn)也還是不行, 語法有誤.mysql?-uroot?-e?"show?processlist;"?|grep?-i?'delete'|awk?'{print?"mysql?-uroot?-e??\'kill?"$1"\'?}'|sh
正確的做法:#最后我們運(yùn)維明哥,給我的語句是:
mysql?-uroot?-e?"show?processlist;"?|grep?-i?'delete'|awk?'{print?"mysql?-uroot?-e?"?"\047"?"kill?"?$1"\047;"?}'|sh
#志華老師提醒可以像?C?語言一樣用`printf`,我寫了下,還沒來的及時(shí)試驗(yàn)
mysql?-uroot?-e?"show?processlist;"?|grep?-i?'delete'|awk?'{printf?"mysql?-uroot?-e?\"kill?%d;\"",$1}'|sh
總結(jié)
以上是生活随笔為你收集整理的mysql uroot e_批量 kill mysql 连接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真心话大冒险刺激问题经典大全104个
- 下一篇: 真心话的问题经典大全105个