PostgreSQL WAL日志膨脹的處理過程
第一部分 描述
PostgreSQL由于WAL日志的機制,導(dǎo)致其在不正確配置的情況下會出現(xiàn)磁盤空間暴漲的情況,本文檔就此情景寫一般處理辦法。
第二部分 場景復(fù)現(xiàn)及處理過程
2.1 基本描述
某一客戶反映,有一個PostgreSQL數(shù)據(jù)庫的數(shù)據(jù)目錄增長非常大,500G的總磁盤空間,剩余23G,通過du -sh $PGDATA/*對數(shù)據(jù)目錄進行統(tǒng)計分析,發(fā)現(xiàn)大部分的空間都被pg_wal目錄占用,文件數(shù)量達到1w+。
2.2 查看相關(guān)配置
查看可能會造成原因的相關(guān)參數(shù),checkpoint_timeout是可能造成wal大量生成的原因之一,當(dāng)max_wal_size=20GB時,可能會出現(xiàn)在進行checkpoint之間,如果出現(xiàn)大事物或者寫入量非常大的時候,最大可能會生成(20*1024)/16=1280個wal文件
適當(dāng)調(diào)整后,發(fā)現(xiàn)由于事務(wù)量比較大,即使調(diào)小參數(shù),還是會不斷生成文件,接著查看歸檔是否出現(xiàn)問題
postgres=# show checkpoint_timeout ; checkpoint_timeout -------------------- 60min (1 row) postgres=# show max_wal_size ; max_wal_size -------------- 20GB (1 row) postgres=# show min_wal_size ; min_wal_size -------------- 80MB (1 row) postgres=# show wal_keep_size ; wal_keep_segments --------------- 128 (1 row)
2.3 查看歸檔配置
可以看到歸檔已經(jīng)開啟,檢查歸檔路徑是否存在,在pg_wal/ archive_status文件中記錄wal文件的歸檔狀態(tài)是否正常,檢查下來都沒有發(fā)現(xiàn)問題,如果說歸檔沒有成功進行,wal日志也是無法移除造成空間迅增
postgres=# show archive_mode ; archive_mode -------------- on (1 row) postgres=# show archive_command ; archive_command ------------------------------------------------------------------------------------ test ! -f /software/pgsql12/archivedir/%f && cp %p /software/pgsql12/archivedir/%f (1 row)
2.4 查看是否有備庫
查看是否有流復(fù)制環(huán)境,流復(fù)制環(huán)境中,主要靠wal日志進行主備同步,當(dāng)主備環(huán)境之間差異過大,或者出問題后,造成主備沒有同步,則會保留wal日志不進行刪除。如果有差異的話,wal_keep_segments參數(shù)會生效,它會為備庫保留相應(yīng)數(shù)量的wal日志文件、甚至更多。
postgres=# select * from pg_stat_replication ;
確認沒有備庫環(huán)境
2.5 查看是否有復(fù)制槽
是否存在無效的復(fù)制槽,備庫如果沒有進行同步或者說沒有消費wal日志,那么該復(fù)制槽不可用,wal日志也會一直保留,造成wal日志不斷增加
postgres=# select * from pg_replication_slots;
查詢到果然存在一個active狀態(tài)為f的復(fù)制槽,我們嘗試刪除該復(fù)制槽
SELECT * FROM pg_drop_replication_slot('pg_102');
刪除后,發(fā)現(xiàn)pg_wal空間不再增長,一段時間后已自動釋放
到此這篇關(guān)于PostgreSQL WAL日志膨脹的處理過程的文章就介紹到這了,更多相關(guān)PostgreSQL WAL日志膨脹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
postgresql 計算時間差的秒數(shù)、天數(shù)實例
這篇文章主要介紹了postgresql 計算時間差的秒數(shù)、天數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12postgreSQL中的內(nèi)連接和外連接實現(xiàn)操作
這篇文章主要介紹了postgreSQL中的內(nèi)連接和外連接實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01PostgreSQL實現(xiàn)交叉表(行列轉(zhuǎn)換)的5種方法示例
這篇文章主要給大家介紹了關(guān)于PostgreSQL實現(xiàn)交叉表(行列轉(zhuǎn)換)的5種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08關(guān)于PostgreSql數(shù)據(jù)庫與mysql數(shù)據(jù)庫的不同點以及注意事項
PostgreSQL和MySQL是兩種流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),它們都可以用來存儲和管理數(shù)據(jù),但是它們在某些方面有所不同,下面這篇文章主要給大家介紹了關(guān)于PostgreSql數(shù)據(jù)庫與mysql數(shù)據(jù)庫的不同點以及注意事項的相關(guān)資料,需要的朋友可以參考下2023-05-05Postgresql psql文件執(zhí)行與批處理多個sql文件操作
這篇文章主要介紹了Postgresql psql文件執(zhí)行與批處理多個sql文件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01PostgreSQL+Pgpool實現(xiàn)HA主備切換的操作
這篇文章主要介紹了PostgreSQL+Pgpool實現(xiàn)HA主備切換操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12