一大早就被電話吵醒了,云某項(xiàng)目數(shù)據(jù)庫全掛了,啟動(dòng)不了(睡得太死,沒聽到報(bào)警短信),嚇得不輕??!
專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!創(chuàng)新互聯(lián)公司為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)負(fù)責(zé)任的成都網(wǎng)站制作公司!
電話中說所有MySQL數(shù)據(jù)庫主庫都啟動(dòng)不了,但從庫正常,懷疑是主庫去連其它阿里云的主庫了。這些數(shù)據(jù)庫,以前是從阿里云遷移到idc機(jī)房的,因此他有這個(gè)判斷。
趕緊打開電腦,連***,登錄其中一個(gè)數(shù)據(jù)庫服務(wù)器,試著執(zhí)行如下命令啟動(dòng)mysql服務(wù)
[root@bbsmysql121 backup]#mysqld_safe –user=mysql &
啟動(dòng)失敗,又換一臺(tái)數(shù)據(jù)庫服務(wù)器嘗試,還是失敗??紤]到所有的數(shù)據(jù)庫都不能啟動(dòng),因此可以初步判定,可能是數(shù)據(jù)庫宿主機(jī)的問題導(dǎo)致的。
數(shù)據(jù)庫的底層設(shè)計(jì)是兩臺(tái)物理節(jié)點(diǎn)虛擬化,外加一臺(tái)物理機(jī)做備份。其中一臺(tái)物理機(jī)的虛擬機(jī)全部做mysql主庫,另一臺(tái)物理機(jī)的虛擬機(jī)做mysql從庫。
先放棄在虛擬機(jī)進(jìn)行故障排查,趕緊登錄宿主機(jī)系統(tǒng)。接下來,從兩個(gè)方面排查問題所在。
ü 虛擬化后臺(tái)管理系統(tǒng)
發(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ò)誤或者把從庫提升為主庫??紤]到待機(jī)問題,還是盡量爭(zhēng)取修復(fù)主庫吧,實(shí)在不能修復(fù),再用第二套方案(提升從庫)。
釋放磁盤空間
為什么磁盤空間會(huì)塞滿呢?應(yīng)該有人在虛擬機(jī)上干了啥,而且可能是每個(gè)虛擬機(jī)都進(jìn)行相同的操作,才會(huì)導(dǎo)致宿主機(jī)磁盤空間迅速填滿。隨便登錄某個(gè)運(yùn)行mysql數(shù)據(jù)庫的虛擬機(jī),執(zhí)行命令
df-h
再登其它服務(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ù)庫自動(dòng)生成的。不管它,先刪除。
肯定有人在系統(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ù)庫備份,然后刪除前一天的歷史備份數(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ù)庫,都正常了。
通知各路人馬,從業(yè)務(wù)層面檢查是否正常。片刻,短信來一堆恢復(fù)信息,心里踏實(shí)多了。不用說,是項(xiàng)目方的sa干的這個(gè)好事,并且沒有通知任何人。
私下給他說,這事自己跟其它人解釋,以后干有風(fēng)險(xiǎn)的事情,最好相互通知一下。
以上所述是小編給大家介紹的干掉一堆mysql數(shù)據(jù)庫,僅需這樣一個(gè)shell腳本詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!
新聞標(biāo)題:干掉一堆mysql數(shù)據(jù)庫,僅需這樣一個(gè)shell腳本(推薦)
標(biāo)題來源:http://www.rwnh.cn/article18/gdgcdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、域名注冊(cè)、做網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)