溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

發(fā)布時(shí)間:2020-08-21 20:25:43 來源:腳本之家 閱讀:167 作者:sery 欄目:MySQL數(shù)據(jù)庫(kù)

一大早就被電話吵醒了,云某項(xiàng)目數(shù)據(jù)庫(kù)全掛了,啟動(dòng)不了(睡得太死,沒聽到報(bào)警短信),嚇得不輕啊!

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

電話中說所有mysql數(shù)據(jù)庫(kù)主庫(kù)都啟動(dòng)不了,但從庫(kù)正常,懷疑是主庫(kù)去連其它阿里云的主庫(kù)了。這些數(shù)據(jù)庫(kù),以前是從阿里云遷移到idc機(jī)房的,因此他有這個(gè)判斷。

趕緊打開電腦,連***,登錄其中一個(gè)數(shù)據(jù)庫(kù)服務(wù)器,試著執(zhí)行如下命令啟動(dòng)mysql服務(wù)

[root@bbsmysql121 backup]#mysqld_safe –user=mysql &

啟動(dòng)失敗,又換一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器嘗試,還是失敗。考慮到所有的數(shù)據(jù)庫(kù)都不能啟動(dòng),因此可以初步判定,可能是數(shù)據(jù)庫(kù)宿主機(jī)的問題導(dǎo)致的。

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

數(shù)據(jù)庫(kù)的底層設(shè)計(jì)是兩臺(tái)物理節(jié)點(diǎn)虛擬化,外加一臺(tái)物理機(jī)做備份。其中一臺(tái)物理機(jī)的虛擬機(jī)全部做mysql主庫(kù),另一臺(tái)物理機(jī)的虛擬機(jī)做mysql從庫(kù)。

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

先放棄在虛擬機(jī)進(jìn)行故障排查,趕緊登錄宿主機(jī)系統(tǒng)。接下來,從兩個(gè)方面排查問題所在。

ü 虛擬化后臺(tái)管理系統(tǒng)

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

發(fā)現(xiàn)存儲(chǔ)被塞滿了,問題很嚴(yán)重。

ü ssh登錄宿主系統(tǒng)debian

[6885005.756183] Buffer I/O error on dev dm-16, logical block 34667776, lost async page write
[6885005.757292] Buffer I/O error on dev dm-16, logical block 34667792, lost async page write
[6885005.758210] Buffer I/O error on dev dm-16, logical block 34667808, lost async page write
[6885005.759079] Buffer I/O error on dev dm-16, logical block 34667824, lost async page write
[6885005.759922] Buffer I/O error on dev dm-16, logical block 34667840, lost async page write
[6885005.760723] Buffer I/O error on dev dm-16, logical block 34667856, lost async page write

系統(tǒng)日志/var/log/messages發(fā)現(xiàn)大量的磁盤io錯(cuò)誤。

綜合上述發(fā)現(xiàn),基本可以斷定是磁盤出了問題:一個(gè)問題是proxmox劃定的存儲(chǔ)空間被塞滿,另一個(gè)是磁盤io錯(cuò)誤。知道問題所在以后,接下來的處理方案有兩個(gè):修復(fù)錯(cuò)誤或者把從庫(kù)提升為主庫(kù)??紤]到待機(jī)問題,還是盡量爭(zhēng)取修復(fù)主庫(kù)吧,實(shí)在不能修復(fù),再用第二套方案(提升從庫(kù))。

釋放磁盤空間

為什么磁盤空間會(huì)塞滿呢?應(yīng)該有人在虛擬機(jī)上干了啥,而且可能是每個(gè)虛擬機(jī)都進(jìn)行相同的操作,才會(huì)導(dǎo)致宿主機(jī)磁盤空間迅速填滿。隨便登錄某個(gè)運(yùn)行mysql數(shù)據(jù)庫(kù)的虛擬機(jī),執(zhí)行命令

df-h

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

再登其它服務(wù)器,分區(qū)/dev/sdb1也是使用了90%以上。進(jìn)入目錄/data,運(yùn)行如下指令查看目錄空間占用情況:

[root@cumysql121 data]# du -hs *
4.0K backup
59G db_pkg
59G mysql_db
[root@cumysql121 data]# cd backup
[root@cumysql121 backup]# du -hs *

好家伙,好幾個(gè)50多G的目錄(寫這個(gè)文章時(shí),我已經(jīng)刪掉了,沒有留存記錄),這些文件,從目錄名稱上看,應(yīng)該是備份數(shù)據(jù)庫(kù)自動(dòng)生成的。不管它,先刪除。

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

肯定有人在系統(tǒng)做了自動(dòng)任務(wù),用指令crontab –l 查看,果然有發(fā)現(xiàn):

#!/bin/bash
/usr/local/xtrabackup/bin/innobackupex --defaults-file=/etc/my.cnf --user=root --passwor='+N4dohask+MsLhG' /data/backup/
find /data/backup/* -mtime +1 -exec rm -fr {} \;
~

初一看這個(gè)腳本沒什么問題,再仔細(xì)看,最后一行是符號(hào)“~”,有問題啊!寫腳本的人的意圖是每天進(jìn)行一次備份數(shù)據(jù)庫(kù)備份,然后刪除前一天的歷史備份數(shù)據(jù),這樣就不會(huì)把磁盤塞滿了。

但是這有兩個(gè)致命的問題,這里分別描述之。

備份策略錯(cuò)誤

有專門的備份系統(tǒng),應(yīng)該把數(shù)據(jù)備份到該系統(tǒng)上,而不是本地備份。

手段錯(cuò)誤

備份腳本寫好以后,應(yīng)該手動(dòng)執(zhí)行,以驗(yàn)證其正確性。而不是寫完,直接扔在上邊不管。

修復(fù)磁盤錯(cuò)誤

緊急聯(lián)系機(jī)房,請(qǐng)技術(shù)人員把KVM over 連接到宿主機(jī),萬一系統(tǒng)引導(dǎo)不了,可遠(yuǎn)程查看或者進(jìn)入單用戶模式進(jìn)行 fsck一類的修復(fù)操作。

Ssh連宿主機(jī)系統(tǒng)debian,確認(rèn)被塞滿的磁盤空間被釋放,然后執(zhí)行reboot重啟系統(tǒng)。幾分鐘以后,系統(tǒng)正常引導(dǎo)。

后續(xù)操作

查看系統(tǒng)日志,沒有磁盤io報(bào)錯(cuò),創(chuàng)建目錄及文件,正常;啟動(dòng)各虛擬機(jī)、啟動(dòng)其上的數(shù)據(jù)庫(kù),都正常了。

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

通知各路人馬,從業(yè)務(wù)層面檢查是否正常。片刻,短信來一堆恢復(fù)信息,心里踏實(shí)多了。不用說,是項(xiàng)目方的sa干的這個(gè)好事,并且沒有通知任何人。

干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本(推薦)

私下給他說,這事自己跟其它人解釋,以后干有風(fēng)險(xiǎn)的事情,最好相互通知一下。

以上所述是小編給大家介紹的干掉一堆mysql數(shù)據(jù)庫(kù),僅需這樣一個(gè)shell腳本詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)億速云網(wǎng)站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI