DBAtlas · Veritabanı operasyon atlası

PostgreSQL minor sürüm güncellemesi (patch)

PostgreSQLSeviye: OrtaSüre: 20–60 dk

Aynı ana sürüm içinde minor güncelleme (ör. 17.4 → 17.x): release notes kontrolü, yedek ve geri dönüş için mevcut RPM/deb'lerin saklanması. Tek sunucuda kısa kesintiyle; streaming replication'lı cluster'da önce standby'lar, sonra switchover ile primary güncellenir (rolling); Patroni cluster'ında replica'lar patronictl restart ile, leader patronictl switchover sonrası güncellenir. Eklenti güncellemesi, doğrulama ve geri alma (downgrade) runbook'u dahil. Sonunda tüm sunucular aynı yeni minor sürümü çalıştırır ve geri dönüş için önceki sürümün dosyaları elinizde kalır.

Ana sürüm değişiyorsa (ör. 16 → 17) bu rehber değil pg-major-upgrade kullanılır; Patroni yazılımının kendi güncellemesi pg-patroni'dedir.

Yapı: 1 sunucu, primary + standby'lar ya da Patroni cluster'ı

Senaryolar

  • Minor güncelleme — Aynı ana sürüm içinde yeni minor sürüme geçiş (ör. 17.4 → 17.6): güvenlik/hata düzeltmeleri. Tek sunucuda kısa kesinti, cluster'da rolling.
  • Geri alma: önceki minor sürüme dön (downgrade) — Yeni minor sürümde hata/regresyon görüldü: kaydedilen önceki sürümün RPM/deb'leri ile geri dönülür. Veri dizini değişmez.

Başlamadan önce

  • PostgreSQL … PGDG repo'sundan kurulu ve çalışıyor (pg-install). Güncelleme aynı ana sürüm içinde yapılır; … → başka bir ana sürüm için pg-major-upgrade rehberini kullanın.
  • Mevcut sürüm ile hedef sürüm arasındaki her minor sürümün release notes'u okundu. Özellikle "Migration to Version …" bölümünde ek işlem (REINDEX, ayar değişikliği) istenip istenmediği not edildi: https://www.postgresql.org/docs/release/
  • Sunucular PGDG repo'suna ya da kurum içi mirror'a erişiyor ve mirror güncel.
  • Bakım penceresi onaylandı… (servis birkaç saniye–birkaç dakika kapalı kalır)… (switchover/restart anında bağlantılar birkaç saniye kopar)…; uygulama ekibi bilgilendirildi.
  • Son yedek başarılı… (pgbackrest info status ok)… ve sunucuların sanal makine/disk snapshot'ı alınabiliyor.
  • Tüm standby'lar streaming durumda ve gecikme yok.
  • Switchover sonrası roller değişeceği için her node'un pg_hba.conf'u diğer node'lardan replication bağlantısına izin veriyor ve … parolası tüm node'larda postgres kullanıcısının ~/.pgpass dosyasında.
  • Cluster Patroni/repmgr gibi bir HA aracıyla yönetilmiyor. Patroni yönetiyorsa Topoloji seçiminde Patroni seçin; repmgr için Notlar'a bakın. Bu yoldaki elle switchover adımları HA aracının kararlarıyla çakışır.
  • Patroni cluster'ı sağlıklı: bir Leader, tüm replica'lar streaming, Lag küçük ve Maintenance mode kapalı. … şu anki leader; replica adları Patroni üye adlarıyla aynı.
  • Değişiklik yapan patronictl komutları (restart, switchover) REST API kimlik doğrulaması ister; kullanıcı/parola tüm node'larda /etc/patroni/patroni.env dosyasında (pg-patroni kurulumu). Farklı bir düzen kullanıyorsanız patronictl'in -c ile okuduğu dosyada restapi.authentication tanımlı olmalı.
  • Güncelleme öncesinde … dizinine önceki sürümün RPM/deb dosyaları kaydedildi ve önceki sürüm numarası …/prev-version.txt dosyasında. Kayıt yoksa önceki sürümü repo'dan (EL: PGDG eski sürümleri tutar; Debian/Ubuntu: apt-archive.postgresql.org) indirmeniz gerekir.

Rehberin aşamaları

  • Ön kontrol — Mevcut sürümü kaydet · Repo'daki sürümleri listele · Release notes'u kontrol et · Kurulu eklentileri listele · Uzun işlemleri ve prepared transaction'ları kontrol et
  • Yedek ve geri dönüş noktası — Yedek al (pgBackRest) · Yedek al (pg_dumpall + snapshot) · Mevcut RPM/deb dosyalarını sakla
  • Patroni cluster'ı: ön kontrol — Cluster durumunu ve rolleri doğrula
  • Güncelleme — Checkpoint al · PostgreSQL'i durdur · Yazılımı güncelle · PostgreSQL'i başlat
  • Primary'nin güncellenmesi (kısa kesinti) — Checkpoint al · Primary'yi durdur · Yazılımı güncelle · Primary'yi başlat
  • Switchover ve eski primary'nin güncellenmesi — Replikasyonun güncel olduğunu doğrula · Uygulama yazmalarını durdur · Eski primary'yi temiz kapat ve son checkpoint'i not et · …: WAL'ın tamamen geldiğini doğrula ve promote et · Uygulamaları yeni primary'ye yönlendir · Eski primary için replication slot aç …
  • Leader: switchover ve eski leader'ın güncellenmesi — Eski leader: yazılımı güncelle · Switchover: … leader olsun · Eski leader'ı (…) yeniden başlat · Cluster'ın son durumunu doğrula
  • Eklentiler ve doğrulama — Eklentileri güncelle (ALTER EXTENSION … UPDATE) · Eklentileri güncelle (ALTER EXTENSION … UPDATE) · Release notes'taki ek işlemleri uygula · Sürümü ve durumu doğrula · Loglarda hata ara · Güncelleme sonrası yedek …
  • Geri alma (downgrade) — Önceki sürümü kontrol et · …: durdur, önceki sürümü kur, başlat · …: önceki sürümü kur ve Patroni ile yeniden başlat · Leader: önceki sürümü kur · Leader'ı devret ve eski leader'ı yeniden başlat · …Primary'yi durdur…PostgreSQL'i durdur… …
Ortamına göre adım adım planı aç →