◎筆記-設定mysql binlog 保留時間

前言:

上個月安裝了一套Observium網路設備監控工具,一開始因為測試心態,而且也覺得日後不會再增加其他服務在這台機器上,所以規劃磁碟容量時只給了20GB,結果設備加進來後撐不到7天就用掉了19GB,只好被迫重做一次,同時也開始懷疑怎麼容量會用這麼兇?所以在第二次重裝後,磁碟容量配到了160GB,且在後台修改了log保存時間,system log、alart log…許許多多的log設定預設都是1-3個月,我統一調整為7天,然後持續觀察磁碟空間使用情形。在又經過3周左右時間後,發現磁碟容量還是持續不斷擴張得很快,底下紀錄時間大約就是持續3周後,160GB的空間已經使用掉65GB,照這種速度肯定一個學期都撐不過硬碟就爆了。

進到ubuntu server查詢磁碟使用量的確如observium顯示用掉了66GB,但目前仍舊不知是哪裡的問題導致。

繼續查詢observium使用的容量發現目錄才5.6G,根本就沒用很多空間呀

查來查去,發現最佔用空間的目錄是在/var底下

層層抽絲剝繭後找出來是在/var/lib/mysql目錄

在mysql目錄下大約每隔70分鐘左右不等時間就自動產出一個檔案名稱為binlog.xxxxxx流水號的檔案,而且每個檔案容量大約100MB,下圖已經累積到binlog.000470,就表示有470個100MB的binlog檔案,而且每70分鐘左右就會增加一個新的100MB。照這種擴充速度硬碟劃再大都鐵定會不夠用。

6月12這一天共產生了21個100MB左右的binlog檔,也就是說binlog一天差不多要吃掉2GB空間

查了一下得知binlog是mysql資料庫進行還原時用的檔案,可以設定檔案保留時間,也可以做到逾期之後手動/自動刪除,但不建議直接使用rm指令手動刪,應該要透過mysql的工具使用purge進行刪除。但想想還是設定時程讓系統自行運作才是長久之道,首先進入mysql…

# mysql -u root -p

目前預計binlog保留時間為七天,保留時間可以設為日數或秒數,但我測試設定日數卻沒生效所以改用秒數,一天有86400秒,所以七天就是604800秒。

#mysql> set global  binlog_expire_logs_seconds=604800;

設定之後輸入底下指令確認內容
#mysql> show variables like '%expire_logs%';

經過七天觀察後,在6/21時回來看結果,6月13與之前的binlog檔案已消失,6月14的檔案是從binlog.000010開始命名~收工。

最後這是經過第三次重做系統,把磁碟重新規畫為100GB後的結果,在binlog保留時間為七日的條件下,每天新增2GB左右的檔案會在七天後自動清除,observiun所需磁碟容量大約就能控制在30GB以內,扣掉七天份的binlog檔案14GB,observium+ubuntu server用掉的空間大約13GB,且不會再有快速消耗磁碟空間的問題。

發佈留言