MySQL中Binlog文件占用空間比較大該如何清理
一、前言
在進(jìn)行一次數(shù)據(jù)導(dǎo)入之后,發(fā)現(xiàn)服務(wù)器磁盤(pán)爆滿(mǎn),初步判斷是數(shù)據(jù)庫(kù)產(chǎn)生了大量binlog所致,接下來(lái)進(jìn)行分析處理。
二、分析
1、查看磁盤(pán)空間
通過(guò)df -h命令,查看磁盤(pán)空間占用情況

2、查找占用文件或目錄
通過(guò)命令:du -ah -d1,逐級(jí)排查分析,排查找到占用最大的文件或目錄

3、找到binlog文件
找到這樣一大堆binlog文件,顯然正是罪魁禍?zhǔn)住?/p>

接下來(lái)考慮如何清理這些binlog文件。
三、處理
binlog日志可以通過(guò)參數(shù)expire_logs_days設(shè)置文件保留天數(shù)。
1、自動(dòng)清理
1)設(shè)置過(guò)期時(shí)間
臨時(shí)設(shè)置:
-- 查看binlog保留天數(shù)參數(shù)設(shè)置,0表示永不刪除 SHOW VARIABLES LIKE 'expire_logs_days'; -- 臨時(shí)修改(重啟失效) SET GLOBAL expire_logs_days = 7;
永久設(shè)置:修改配置文件/etc/my.cnf,重啟mysql
[mysqld] # 設(shè)置過(guò)期時(shí)間為7天 expire_logs_days = 7 # 限制單個(gè)文件大小 max_binlog_size = 1024M
2)觸發(fā)清理機(jī)制
執(zhí)行以下命令或重啟數(shù)據(jù)庫(kù),觸發(fā)清理機(jī)制
-- 刷新日志觸發(fā)清理 FLUSH LOGS;
3)執(zhí)行結(jié)果
> 登錄mysql,設(shè)置過(guò)期時(shí)間,并執(zhí)行觸發(fā)機(jī)制:
因?yàn)槭沁@兩天執(zhí)行產(chǎn)生的, 所以發(fā)現(xiàn)binlog并沒(méi)有清除減少,所以接下來(lái)就要手動(dòng)清理了。

2、手動(dòng)清理
1)查看binlog狀態(tài)
-- 查看binlog文件列表 SHOW BINARY LOGS; -- 查看主庫(kù)正在使用的文件 SHOW MASTER STATUS; -- 查看從庫(kù)讀取位置(主從環(huán)境必備) SHOW SLAVE STATUS\G;

2)刪除文件
-- 刪除指定文件之前的日志(不包含該文件) PURGE BINARY LOGS TO 'mysql-bin.000510'; -- 刪除指定時(shí)間前的日志 PURGE BINARY LOGS BEFORE '2025-06-20 00:00:00';
執(zhí)行刪除,查看binlog文件,磁盤(pán)空間釋放成功。

四、注意事項(xiàng)
1、不要直接使用 rm 刪除文件
(會(huì)導(dǎo)致主從中斷)
2、不要?jiǎng)h除正在使用的 binlog
(SHOW MASTER STATUS 顯示的當(dāng)前文件)
3、主從環(huán)境特別注意
1)確保清理的文件早于所有從庫(kù)的讀取位置
-- 在每個(gè)從庫(kù)執(zhí)行: SHOW SLAVE STATUS\G -- 觀(guān)察 Relay_Master_Log_File 和 Exec_Master_Log_Pos
2)清理后立即檢查主從同步狀態(tài)
SHOW SLAVE STATUS\G -- 驗(yàn)證 Slave_IO_Running 和 Slave_SQL_Running
4、生產(chǎn)環(huán)境操作前務(wù)必備份 binlog 索引文件
(/var/lib/mysql/binlog.index)異常時(shí)可重建索引:
mysqlbinlog --no-defaults binlog.* > binlog.index
總結(jié)
到此這篇關(guān)于MySQL中Binlog文件占用空間比較大該如何清理的文章就介紹到這了,更多相關(guān)MySQL Binlog文件占空間大清理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL主從復(fù)制原理解析與最佳實(shí)踐過(guò)程
這篇文章主要介紹了MySQL主從復(fù)制原理解析與最佳實(shí)踐過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
MySQL查詢(xún)語(yǔ)句簡(jiǎn)單操作示例
這篇文章主要介紹了MySQL查詢(xún)語(yǔ)句簡(jiǎn)單操作,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫(kù)、數(shù)據(jù)表創(chuàng)建、數(shù)據(jù)插入、數(shù)據(jù)查詢(xún)等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
MySQL?打開(kāi)binlog日志的方法及注意事項(xiàng)
本文給大家介紹MySQL?打開(kāi)binlog日志的方法及注意事項(xiàng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-06-06
Mysql通過(guò)Adjacency List(鄰接表)存儲(chǔ)樹(shù)形結(jié)構(gòu)
本片介紹MYSQL存儲(chǔ)樹(shù)形結(jié)構(gòu)的一種方法,通過(guò)Adjacency List來(lái)實(shí)現(xiàn),一起來(lái)學(xué)習(xí)下。2017-12-12
MySQL筆記之?dāng)?shù)學(xué)函數(shù)詳解
本篇文章對(duì)MySQL的數(shù)學(xué)函數(shù)進(jìn)行了詳細(xì)的介紹。需要的朋友參考下2013-05-05
MySQL下將一個(gè)表的數(shù)據(jù)插入到另外一個(gè)表的實(shí)現(xiàn)語(yǔ)句
開(kāi)發(fā)中,我們經(jīng)常需要將一個(gè)表的數(shù)據(jù)插入到另外一個(gè)表,有時(shí)還需要指定導(dǎo)入字段,雖然這個(gè)實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,但是還是會(huì)困擾許多新手,因此專(zhuān)門(mén)發(fā)一篇文章備查。2009-09-09
mysql創(chuàng)建表設(shè)置表主鍵id從1開(kāi)始自增的解決方案
在MySQL中用很多類(lèi)型的自增ID,每個(gè)自增ID都設(shè)置了初始值,一般情況下初始值都是從0開(kāi)始,然后按照一定的步長(zhǎng)增加(一般是自增 1),下面這篇文章主要給大家介紹了關(guān)于mysql創(chuàng)建表設(shè)置表主鍵id從1開(kāi)始自增的解決方案,需要的朋友可以參考下2023-04-04
圖文詳解MySQL中兩表關(guān)聯(lián)的連接表如何創(chuàng)建索引
這篇文章通過(guò)圖文給大家介紹了關(guān)于MySQL中兩表關(guān)聯(lián)的連接表如何創(chuàng)建索引的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
mysql?in索引慢查詢(xún)優(yōu)化實(shí)現(xiàn)步驟解析
這篇文章主要為大家介紹了mysql?in慢查詢(xún)優(yōu)化實(shí)現(xiàn)步驟的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05

