【Greenplum】Greenplum 磁碟空間滿了資料庫宕機解決方法
一、背景
後臺一直往 Greenplum 資料庫生成資料,由於沒關注磁碟空間,導致資料儲存空間利用率達到100%,資料庫宕機無法啟動。
當然上述情況是可以通過很多方式規避的:
- 利用率達到70%時擴充套件空間
- 利用率達到70%時清理資料庫無用資料
- 在資料目錄下放置大檔案,在沒有足夠空間啟動時通過刪除大檔案獲取足夠空間啟動
- …
二、解決辦法
2.1、刪除 pg_log 目錄下的檔案
在每個節點的資料存放目錄下會生成 pg_log 目錄,如下:
pg_log 目錄下記錄的是資料庫活動日誌,一般是記錄伺服器與 DB 的狀態,比如各種 Error 資訊,定位慢查詢 SQL ,資料庫的啟動關閉資訊,發生 checkpoint 過於頻繁等的告警資訊,諸如此類。該日誌有 .csv 格式和 .log。
如果生產系統 pg_log 日誌沒有定期清理, log 日誌會輕鬆佔用 1G 以上的空間,如果資料庫宕機無法啟動,可以通過清理所有節點該目錄下的資料檔案(master 節點的 log 日誌很大, segment 節點 log 日誌稍小);清理完後,嘗試啟動資料庫,此時一般不會有問題,都能正常啟動。
這裡要注意不能刪錯 pg_xlog 和 pg_clog 目錄的資訊。pg_xlog 與 pg_clog 記錄資料庫的事務資訊,不得隨意刪除更新。
2.2、移動 base 目錄下的檔案
現場的 pg_log 保留時間太短,刪完了也無法啟動。
此時還有一種移動檔案的辦法,可以先檢視一下base目錄(資料儲存的實際目錄,和 pg_log 處在同一目錄下),找到下面數字較大的資料夾,把裡面的幾個大檔案複製備份一下,然後刪除,這樣空間就足夠啟動了,啟動資料庫後,儘快清理部分表資料後,將原來的資料檔案移動回來,保證資料完整性,否則會導致一些表不可用。
這種方法是不正規的操作,建議少用。使用前一定要做好備份工作,因為涉及刪除生產資料,一旦誤操作,可能導致資料無法恢復。
2.2、其他方法
也許還有其他的方法,後續有資料後再做記錄。
三、總結
初次使用 greenplum 沒有經驗,可能會有磁碟佔用滿的風險,後續應該注意這個問題,儘量規避,少踩一些坑。