WAL文件回收

    checkpoint執行大致分爲四步:1)刷寫髒頁,即將整個share buffer的所有髒頁都刷盤;2)生成checkpoint wal記錄,並插入WAL BUFFER;3)將checkpoint前的所有wal全部刷盤;4)回收WAL文件。這裏主要介紹回收文件時需要注意的一點。尤其是磁盤空間比較緊張的場景下。

      本文介紹WAL文件回收時,需要注意的一個點。回收由函數RemoveOldXlogFiles函數完成。這個函數進行回收的時候,跳過時間線進行比較。如果_logSegNo日誌號,即當前日誌號減去變量控制需要保留的文件數後,得到的日誌文件號。比這個日誌文件號小的文件都會被刪除,即RemoveXlogFile函數的工作。

       首先需要判斷是否done文件,done文件下才會進入刪除。刪除前先保存下來刪除的文件到共享內存即XLogCtl->lastRemovedSegNo = segno。

       如果一直進行promote的話,即使有很多WAL文件,也可能因爲日誌號在保留的範圍內,從而導致不能被刪除。這種情況對於不太穩定的環境尤其需要注意。即使及時執行checkpoint,也可能會因爲這些WAL文件而撐爆磁盤空間。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章