記一次生產(chǎn)線MySQL庫(kù)Binlog日志占滿磁盤的故障處理
一、故障描述
今天早上監(jiān)控平臺(tái)郵件通知生產(chǎn)某業(yè)務(wù)系統(tǒng)的MySQL數(shù)據(jù)庫(kù)存儲(chǔ)空間達(dá)到了90%,趕緊爬起來(lái)遠(yuǎn)程連上數(shù)據(jù)庫(kù)主機(jī),發(fā)現(xiàn)Master雙主MySQL數(shù)據(jù)庫(kù)10.5.11.105、和10.5.11.106數(shù)據(jù)目錄/var/lib/mysql空間使用率達(dá)到了97%和96%。
二、問題分析過程
首先查詢確認(rèn)數(shù)據(jù)庫(kù)主從關(guān)系
登錄10.5.11.105和10.5.11.106數(shù)據(jù)庫(kù),執(zhí)行語(yǔ)句:show slave status\G; 查看。

說明10.5.11.106數(shù)據(jù)庫(kù)master-bin.000779之前的binlog是可以清理的。
執(zhí)行語(yǔ)句:show slave hosts \G 查看server id。

說明Server_id:33333是10.5.11.105的從庫(kù)。
執(zhí)行語(yǔ)句:show variables like ‘server_id’可以確認(rèn)。
三、查詢binlog自動(dòng)清理是否開啟
執(zhí)行如下語(yǔ)句show variables like 'expire_logs_days';
查看參數(shù)發(fā)現(xiàn)binlog自動(dòng)清理功能沒有開啟。

四、查看具體的binlog文件
執(zhí)行語(yǔ)句:show binary logs;
可以看到有大量的binlog文件。

五、查看binlog具體的存放路徑
執(zhí)行語(yǔ)句:show variables like '%log_bin_basename%'; 查看。

六、問題的根本原因
經(jīng)過排查,我們發(fā)現(xiàn)問題的根本原因在于沒有開啟binlog自動(dòng)清理功能,導(dǎo)致有大量的binlog進(jìn)行積壓所致。
七、處理問題
清理binlog文件。通過確認(rèn)主從應(yīng)用最新的binlog來(lái)清理binlog,使用如下命令,清理的時(shí)候可以多留幾個(gè)binlog,注意不要手動(dòng)rm binlog文件。
1、Purge binary logs to_’binlog文件名’;來(lái)清理binlog日志。
2、開啟自動(dòng)清理binlog日志功能(主從庫(kù)都需執(zhí)行)
執(zhí)行語(yǔ)句:
set global expire_logs_days=10;
并在/etc/my.cnf的配置文件中增加如下配置:
expire_logs_days=10
注意:binlog日志過期時(shí)間可根據(jù)自己公司的要求自定義,我這里設(shè)置的是10天!