事情的現(xiàn)象:
? ? ? ? 線上生產(chǎn)環(huán)境mysql服務(wù)器采用主從結(jié)構(gòu)。突然告警從庫(kù)服務(wù)器磁盤占用高。經(jīng)過磁盤空間檢查,主要是/mysql/data目錄使用100%(直接占滿了),進(jìn)入目錄后發(fā)現(xiàn)被文件slave-relay-bin.*系列文件占滿了。常理數(shù)據(jù)不會(huì)這么大,主庫(kù)一切正常,磁盤空間也正常。定位問題開始。
1:查看從庫(kù)的同步狀態(tài)
show slave status;
?發(fā)現(xiàn)如圖所示的提示信息,等待磁盤空間,具體錯(cuò)誤的原因是從庫(kù)好像被人修改過數(shù)據(jù),導(dǎo)致同步數(shù)據(jù)過程中數(shù)據(jù)不一致,所以一直報(bào)錯(cuò),導(dǎo)致日志占滿了磁盤空間。
2:那就要手動(dòng)從主庫(kù)全部同步一次,這期間還不能停主庫(kù)的數(shù)據(jù)庫(kù)服務(wù)(用戶都在不間斷使用系統(tǒng)),開工
2-1:首先將主庫(kù)的數(shù)據(jù)dump出來一定要包含binlog點(diǎn)位信息(如果主從,binlog一定會(huì)開啟)
mysqldump?-udb_user?-pdb_password?--flush-logs --single-transaction --master-data=2 --all-databases > backup.sql
? ? ? ? 其中參數(shù)分別表示:
????????--flush-logs 代表重新刷寫另外一個(gè)binlog文件
????????--single-transaction 代表開啟事物,不鎖表導(dǎo)出
????????--master-data=2 代表導(dǎo)出的文件頭部添加binlog點(diǎn)位信息
2-2:將備份的文件backup.sql拷貝到從庫(kù)服務(wù)器上(可使用scp)
2-3:切換到從庫(kù)服務(wù)器停止同步
? ? ? ? stop slave;
2-4:然后將從庫(kù)清空,為保險(xiǎn)期間我清理了/mysql/data目錄下所有的slave-relay-bin.*系列文件,然后對(duì)應(yīng)的業(yè)務(wù)庫(kù)刪掉重建
2-5:導(dǎo)入主庫(kù)備份的數(shù)據(jù)
????????source <備份文件路徑>
2-6:重置從庫(kù)同步信息
? ? ? ? reset slave;
2-7:修改從庫(kù)同步點(diǎn)位信息
CHANGE MASTER TO MASTER_HOST='************',MASTER_Port=***,MASTER_USER='*****',MASTER_PASSWORD='*****',MASTER_LOG_FILE='master-bin.*******',MASTER_LOG_POS=****;
其中點(diǎn)位信息要從備份出的backup.sql文件中查找,在文件頭部前50行左右就能看到。然后替換命令中所有的參數(shù)為自己的實(shí)際參數(shù)執(zhí)行提示修改成功即可。
2-8:開啟同步
? ? ? ? start slave;
2-9:檢查同步狀態(tài)
? ? ? ? show slave status\G;? ? ? ?其中\(zhòng)G格式化輸出
? ? ? ? 只要sql_running和io_running都為yes即可,表示成功。
2-10:檢查主庫(kù)和從庫(kù)業(yè)務(wù)表數(shù)據(jù)是否一致,磁盤空間是否正常。(完工)
大家有什么更好的解決辦法歡迎指導(dǎo)交流。文章來源:http://www.zghlxwxcb.cn/news/detail-433074.html
ps:我是個(gè)開發(fā),不是專業(yè)的運(yùn)維,有些操作可能比較粗糙。文章來源地址http://www.zghlxwxcb.cn/news/detail-433074.html
到了這里,關(guān)于不停機(jī)修復(fù)mysql主從數(shù)據(jù)同步錯(cuò)誤導(dǎo)致服務(wù)器磁盤占滿問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!