Postgresql

我可以在實時生產系統中進行 Vacuumlo、vacuumdb 和重新索引,而不會在 postgres 數據庫中停機嗎

  • May 7, 2019

我們使用 Postgres 數據庫 (9.3) 作為我們的生產數據庫。它正在生成巨大的 lo 對象。因此,規模增長非常快。所以我們需要經常做數據庫清理。為了移除這些 lo 對象,我們需要很長的停機時間。

為了清理數據庫,我們按順序執行以下步驟:

  1. Vacuumlo 數據庫名稱
  2. Vacuumdb 數據庫名稱 -t pg_largeobject
  3. Vacuumdb 數據庫名稱 -t pg_largeobject_metadata
  4. reindexdb -t pg_largeobject 數據庫名稱
  5. reindexdb -t pg_largeobject_metadata 數據庫名稱

我們可以在沒有任何停機時間的情況下線上(在夜間)進行上述操作嗎?

“reindexdb” 採用最嚴格的鎖定,並且是唯一可能導致停機的東西。

除非您有證據表明有必要,否則請停止執行“reindexdb”。為了讓你擺脫困境,可能有必要這樣做一次,但每次你做“vacuumlo”時都不應該這樣做。

引用自:https://dba.stackexchange.com/questions/237522