openGauss資料庫xlog目錄滿問題處理

T1YSL發表於2021-09-19

openGauss資料庫xlog滿通常為以下幾個原因:
1.主備狀態不正常,存在網路問題,叢集內有當機的節點
2.xlog保留數量過多
3.邏輯複製槽失效,且未及時清理
4.開啟歸檔,但歸檔失敗導致xlog不清理

首先,確認資料庫狀態

gs_om -t query

確認主備狀態,是否存在當機的節點。
檢視是否存在down,Standby Need repair(WAL)或者unkown的狀態。

如果資料庫狀態不正常,xlog目錄100%
需要手動移走一部分xlog後,檢查資料庫狀態後將庫拉起,並排查相關問題。

如果資料庫狀態正常,僅xlog目錄大,則繼續排查其他問題。

清理:
1.找一個空間大的目錄
例如

su  - omm
cd /opengauss_bak
mkdir xlog_mv_0919

2.移走部分xlog
到xlog路徑下

cd /ogdata/data/dn1/pg_xlog

檢視xlog數量,看是否xlog保留過多

ls | wc -l

!!!為了恢復環境,移動一小部分xlog,其餘等處理之後,自己清理

生成移動xlog語句,並檢查(前1000條)

ls -ltr | head -n 1000 | awk '{print "mv "$9  " /opengauss_bak/xlog_mv_0919/"}'

3.#實際執行移動操作

ls -ltr | head -n 1000 | awk '{print "mv "$9  " /opengauss_bak/xlog_mv_0919/"}' | sh

4.移動之後df -Th看空間是否下來

5.gs_om -t query 檢視資料庫狀態

如果不正常,需要先嚐試拉起主資料庫

gs_ctl start -D /ogdata/data/dn1

然後依次拉起備機資料庫

gs_ctl start -D /ogdata/data/dn1 -M standby

備庫拉不起來則先不處理,等找到xlog目錄滿源頭後(例如主庫刪除失效邏輯複製後),考慮做build(先嚐試增量不行再用增量)

gs_ctl build -D /ogdata/data/dn1 -b incremental 
gs_ctl build -D /ogdata/data/dn1 -b full

6.登入主資料庫檢視邏輯複製槽狀態,檢視有無失效邏輯複製槽

select * from pg_replication_slots;

7.在主庫刪除失效邏輯複製槽

select * from pg_drop_replication_slot('aohdoasdaoiodiandoan');

---------aohdoasdaoiodiandoan為邏輯複製槽名字

刪除失效的邏輯複製槽,主庫和備庫的xlog目錄應該都會釋放一部分空間

8.刪除後 df -Th看空間是否下來

9.檢視 wal_keep_segments引數,該引數為Xlog日誌檔案段數量,“pg_xlog”目錄下保留事務日誌檔案的最小數目。
檢視 max_size_for_xlog_prune引數,在enable_xlog_prune開啟時生效,如果有備機斷連且xlog日誌大小大於此閾值,則回收日誌。
根據實際狀況,可進行修改。

10.檢查歸檔模式是否開啟

show archive_mode;

到歸檔目錄下,看開啟歸檔引數時,是否有歸檔。並檢查歸檔空間,排除歸檔相關問題


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2792884/,如需轉載,請註明出處,否則將追究法律責任。

相關文章