Postgresql
我可以在實時生產系統中進行 Vacuumlo、vacuumdb 和重新索引,而不會在 postgres 數據庫中停機嗎
我們使用 Postgres 數據庫 (9.3) 作為我們的生產數據庫。它正在生成巨大的 lo 對象。因此,規模增長非常快。所以我們需要經常做數據庫清理。為了移除這些 lo 對象,我們需要很長的停機時間。
為了清理數據庫,我們按順序執行以下步驟:
- Vacuumlo 數據庫名稱
- Vacuumdb 數據庫名稱 -t pg_largeobject
- Vacuumdb 數據庫名稱 -t pg_largeobject_metadata
- reindexdb -t pg_largeobject 數據庫名稱
- reindexdb -t pg_largeobject_metadata 數據庫名稱
我們可以在沒有任何停機時間的情況下線上(在夜間)進行上述操作嗎?
“reindexdb” 採用最嚴格的鎖定,並且是唯一可能導致停機的東西。
除非您有證據表明有必要,否則請停止執行“reindexdb”。為了讓你擺脫困境,可能有必要這樣做一次,但每次你做“vacuumlo”時都不應該這樣做。