記一次生產線MySQL庫Binlog日志占滿磁盤的故障處理
一、故障描述
今天早上監控平臺郵件通知生產某業務系統的MySQL數據庫存儲空間達到了90%,趕緊爬起來遠程連上數據庫主機,發現Master雙主MySQL數據庫10.5.11.105、和10.5.11.106數據目錄/var/lib/mysql空間使用率達到了97%和96%。
二、問題分析過程
首先查詢確認數據庫主從關系
登錄10.5.11.105和10.5.11.106數據庫,執行語句:show slave status\G; 查看。

說明10.5.11.106數據庫master-bin.000779之前的binlog是可以清理的。
執行語句:show slave hosts \G 查看server id。

說明Server_id:33333是10.5.11.105的從庫。
執行語句:show variables like ‘server_id’可以確認。
三、查詢binlog自動清理是否開啟
執行如下語句show variables like 'expire_logs_days';
查看參數發現binlog自動清理功能沒有開啟。

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

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

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