2016-12-14 66 views
1

我想配置一個PostgreSQL 9.6數據庫來限制pg_xlog文件夾的大小。我已經閱讀了很多有關這個問題或類似問題的帖子,但沒有我嘗試過的幫助。如何啓用自動清理pg_xlog

我爲我的Postgresql 9.6服務實例寫了一個設置腳本。它執行initdb,註冊一個windows服務,啓動它,創建一個空的數據庫並將轉儲恢復到數據庫中。腳本完成後,數據庫結構正常,數據在那裏,但xlog文件夾已包含55個文件(880 MB)。

爲了減小文件夾的大小,我嘗試將wal_keep_segments設置爲0或1,將max_wal_size設置爲200mb,減少checkpoint_timeout,將archive_mode設置爲off並將archive_command設置爲空字符串。當查詢pg_settings時,我可以看到屬性已經正確設置。

然後,我通過SQL強制檢查點,抽空數據庫,重新啓動Windows服務,並嘗試pg_archivecleanup,沒有真正的工作。我的xlog文件夾縮小到50個文件(800 mb),沒有接近我在配置中設置的200 mb限制。

我不知道還有什麼其他的嘗試。如果有人能告訴我我做錯了什麼,我會非常感激。如果需要更多信息,我會很樂意提供。

非常感謝

回答

0

PostgreSQL將不積極刪除時max_wal_size在1GB的默認值已經被分配WAL段。

無論何時WAL細分市場已滿並需要回收,減排量將逐漸發生。然後PostgreSQL將決定是否刪除該文件(如果max_wal_size被超過)或將其重命名爲新的WAL段以供將來使用。

如果你不想等那麼久,你可以通過調用pg_switch_xlog()函數強制多個WAL開關,這會減少pg_xlog中的文件數量。

+0

所以耐心就是所需要的。在創建數據庫之前,我最終修改了我的安裝腳本以包含'ALTER SYSTEM SET max_wal_size = 20'。這樣,px_log文件夾不會超過320 MB。你的回答讓我走上了正確的道路,所以我檢查了它。 – Ggilmann

+0

剛剛意識到我也不得不通過SQL重新加載配置'SELECT pg_reload_conf()' – Ggilmann