Jak aktualizovat PostgreSQL na nejnovější verzi

Co nás čeká?

Tento návod vás provede krok za krokem procesem aktualizace PostgreSQL na nejnovější verzi na systémech RHEL/Rocky Linux 9. Zahrnuje zálohování databází, přidání potřebných repozitářů, instalaci nové verze, migraci dat, optimalizaci výkonu a závěrečný úklid. Návod je určen pro administrátory, kteří potřebují provést bezpečný a efektivní upgrade databázového systému PostgreSQL, a obsahuje doporučení pro specifické případy, jako je použití rozšíření TimescaleDB nebo PostGIS. Po dokončení tohoto průvodce bude vaše databáze PostgreSQL připravena na další nasazení s optimalizovaným výkonem a plně aktualizovaným prostředím.

Záloha stávající databáze

Před zahájením aktualizace databáze existují dvě možnosti zálohování. Vyberte si tu, která vám více vyhovuje:

  • Snapshot virtuálního stroje (VM): 

Pokud používáte PostgreSQL na VM, vytvoření snapshotu celé VM je rychlý a bezpečný způsob zálohy. Tato varianta je zvláště vhodná, pokud používáte různé rozšíření, jako je například TimescaleDB, kde je proces zálohování složitější a není součástí tohoto návodu. Snapshot vám umožní rychle obnovit celý systém do původního stavu, což může být výhodné v případě komplikací během upgradu.

  • Klasická záloha databáze pomocí pg_dumpall:

Tato metoda vytvoří textovou zálohu všech databází na serveru.

sudo -u postgres pg_dumpall > /cesta/k/zaloze/zaloha.sql

Důležité: Zkontrolujte, že cesta, kam zálohu ukládáte, má dostatek volného místa. Zálohu je vhodné uložit mimo databázový server (například na síťový disk nebo jiný externí úložiště), aby byla chráněna v případě selhání serveru.

Obě varianty mají své výhody, proto si vyberte tu, která lépe vyhovuje vašim potřebám a prostředí.

Přidání PostgreSQL repozitáře

Pro instalaci nejnovější verze PostgreSQL na RHEL/Rocky Linux 9 je potřeba přidat oficiální PostgreSQL repozitář. Tento krok zajistí, že budete mít přístup k nejnovějším balíčkům PostgreSQL.

Stáhněte a nainstalujte PostgreSQL repozitář RPM balíček:

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Tento balíček přidá do systému oficiální PostgreSQL repozitář.

Zakázání výchozího PostgreSQL modulu:

Distribuce RHEL a Rocky Linux mohou mít ve výchozím nastavení povolený modul PostgreSQL, který může obsahovat starší verze. Abyste zajistili, že se nainstaluje novější verze PostgreSQL z přidaného repozitáře, je třeba zakázat tento výchozí modul:

sudo dnf -qy module disable postgresql

Tímto příkazem zakážete starší moduly PostgreSQL, čímž zajistíte, že se při instalaci použije balíček z přidaného repozitáře.

Po přidání repozitáře a zakázání staršího modulu jste připraveni k instalaci nejnovější verze PostgreSQL.

Instalace nové verze PostgreSQL

Po přidání repozitáře je čas nainstalovat novou verzi PostgreSQL.

Aktualizace seznamu balíčků:

Nejprve aktualizujte seznam balíčků, aby systém získal informace o nejnovějších verzích dostupných v nově přidaném repozitáři PostgreSQL:

sudo dnf update

Instalace nové verze PostgreSQL:

Nainstalujte konkrétní verzi PostgreSQL, kterou chcete používat. Například, pokud instalujete PostgreSQL 15:

dnf install -y postgresql15-server postgresql15-contrib

Tento příkaz nainstaluje potřebné balíčky PostgreSQL serveru, včetně nástrojů pro správu a inicializaci databází.

Inicializace databáze:

Po úspěšné instalaci nové verze PostgreSQL je nutné inicializovat databázový cluster, což vytvoří potřebnou adresářovou strukturu a inicializační soubory. Použijte příkaz pro inicializaci:

sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

Nahraďte verzi „15“ odpovídajícím číslem, pokud instalujete jinou verzi PostgreSQL. Tento krok je důležitý, protože připraví prostředí pro migraci dat ze staré verze.

Poznámka: Je velmi důležité, aby nově inicializovaná databáze měla stejné nastavení jako původní databáze. To znamená, že pokud na staré verzi nebyly povoleny například kontrolní součty datových bloků (checksums), nemůžete je zapnout při inicializaci nové verze. Pokud by nastavení nového clusteru bylo odlišné, mohl by pg_upgrade selhat nebo způsobit problémy při migraci dat.

Důležité: V tomto kroku nespouštějte novou verzi PostgreSQL ihned po instalaci a inicializaci. Pokud byste novou verzi nyní spustili, mohlo by dojít ke kolizi portů, protože stará verze PostgreSQL stále běží na stejném portu (standardně port 5432). Nová verze musí zůstat vypnutá, dokud nedokončíte migraci dat a neprovedete případné úpravy portů nebo nakonfigurujete službu tak, aby běžela vedle stávající instance.

Kontrola dostupného místa na disku

Před provedením upgradu PostgreSQL je důležité zkontrolovat, zda máte dostatek volného místa na disku. Migrace dat může vyžadovat významné množství prostoru, zejména pokud máte velké databáze.

Zkontrolujte volné místo na disku pomocí příkazu:

df -h 

Tento příkaz zobrazí přehled o využití diskového prostoru na jednotlivých oddílech. Zvláštní pozornost věnujte oddílům, kde jsou umístěny databázové soubory a konfigurační soubory PostgreSQL, například /var/lib/pgsql nebo jiný specifický adresář, kde máte uložené databáze.

Odhad potřebného místa:

Upgrady a migrace mohou dočasně vyžadovat dvojnásobek místa než je aktuální velikost databází, protože se během procesu mohou vytvářet dočasné kopie a zálohy dat. Pokud tedy vaše databáze zabírá 50 GB, měli byste mít k dispozici alespoň dalších 50 GB volného místa.

Výjimka: Pokud při migraci použijete parametr -k s nástrojem pg_upgrade, nebudou se vytvářet kopie datových souborů, ale místo toho se použijí hardlinky. To znamená, že nebudete potřebovat tolik volného místa na disku a migrace bude rychlejší. Na druhou stranu, data budou sdílena mezi starým a novým clusterem, což znemožní bezpečné spuštění staré verze PostgreSQL po migraci. Stará data tedy nebudou automaticky zálohována.

Uvolnění místa (volitelně):

Pokud zjistíte, že na disku není dostatek místa, můžete zvážit následující kroky:

  • Odstranění nepotřebných souborů a starých záloh.
  • Přesun dat na externí úložiště.
  • Zvýšení kapacity disku, pokud je to možné.

Dostatečné volné místo na disku je klíčové pro úspěšný upgrade bez přerušení služby nebo ztráty dat.

Instalace rozšíření a přenos konfigurace

Před samotnou migrací dat je klíčové připravit prostředí nové verze PostgreSQL. Tento krok zahrnuje instalaci potřebných rozšíření (extensions) a přenos konfigurace ze staré verze. Správná instalace a konfigurace zajišťují, že po migraci bude databáze fungovat stejně jako předtím, včetně všech specifických nastavení a funkcí.

Instalace rozšíření

Pokud používáte rozšíření v PostgreSQL, například TimescaleDB nebo PostGIS, je důležité nainstalovat stejné verze těchto rozšíření i v nové verzi PostgreSQL. Použití nesprávné nebo nekompatibilní verze rozšíření může způsobit chyby a nestabilitu systému.

Zjištění dostupných rozšíření:

Namísto příkazu \dx použijte SQL dotaz, který vypíše všechna dostupná rozšíření v systému, včetně těch, která ještě nejsou aktivována:

sudo -u postgres psql -c "SELECT * FROM pg_available_extensions;"

Tento příkaz zobrazí seznam všech dostupných rozšíření, včetně jejich verze a stavu instalace. Například u TimescaleDB byste měli vidět něco podobného:

Instalace stejné verze TimescaleDB do nové verze PostgreSQL:

Po instalaci nové verze PostgreSQL je nutné nainstalovat stejnou verzi TimescaleDB, jakou jste používali dříve. Zajistěte, aby verze TimescaleDB byla kompatibilní s novou verzí PostgreSQL a aby byla stejná jako v původní instalaci.

Příklad instalace konkrétní verze TimescaleDB:

sudo dnf install timescaledb-2-postgresql-<verze>-<konkrétní_verze> timescaledb-2-loader-postgresql-<verze>-<konkrétní_verze>

Důležité: Ověřte, že instalovaná verze TimescaleDB odpovídá verzi, kterou jste používali před upgradem, aby nedošlo k nekompatibilitám a problémům při migraci dat.

Instalace PostGIS do nové verze PostgreSQL:

Pokud používáte PostGIS, nainstalujte ho do nové verze PostgreSQL stejným způsobem jako ostatní rozšíření:

sudo dnf install postgresql-<verze>-postgis

Zajistěte, že verze PostGIS je kompatibilní s novou verzí PostgreSQL.

Přenos konfigurace

Po instalaci rozšíření je dalším krokem přenést konfiguraci ze staré verze PostgreSQL do nové. Tím zajistíte, že všechna vlastní nastavení zůstávají zachována.

Přeneste obsah souboru postgresql.conf:

Tento soubor obsahuje nastavení serveru, jako je paměť, připojení, logování, a další. Před upgradem si uložte kopii tohoto souboru a po instalaci nové verze PostgreSQL přeneste potřebná nastavení. Zohledněte však nové změny a funkce, které mohou v nové verzi PostgreSQL přinést optimalizaci.Příklad přenosu nastavení:

sudo cp /var/lib/pgsql/<stará_verze>/data/postgresql.conf /var/lib/pgsql/<nová_verze>/data/

Po přenosu soubor zkontrolujte a upravte podle aktuální potřeby a možností nové verze.

Přeneste pravidla z pg_hba.conf:

Tento soubor definuje pravidla pro připojení k databázi a ověřování uživatelů. Přeneste vlastní pravidla do nové verze PostgreSQL:

sudo cp /var/lib/pgsql/<stará_verze>/data/pg_hba.conf /var/lib/pgsql/<nová_verze>/data/

Opět, po přenosu soubor zkontrolujte a ověřte, že pravidla odpovídají vašim bezpečnostním potřebám.

Přeneste další konfigurační soubory (pokud je máte):

Pokud používáte další vlastní konfigurační soubory nebo úpravy, nezapomeňte je přenést a aktualizovat v nové verzi.

Ověření připravenosti prostředí

Po instalaci rozšíření a přenosu konfigurace ověřte, že nové prostředí je připravené pro migraci dat. Zkontrolujte, zda jsou všechna rozšíření správně nainstalována a aktivována a zda je konfigurace správně načtena.

Nyní jste připraveni na migraci dat do nové verze PostgreSQL.

Migrace dat / Upgrade

Nyní, když je nová verze PostgreSQL nainstalována a připravena, je čas provést migraci dat ze staré verze do nové. Tento proces zahrnuje přesun datových souborů z původního datového adresáře do nového a zajištění, že všechna data a konfigurace jsou správně přenesena.

Zastavení staré verze PostgreSQL

Než začnete s migrací, je důležité zastavit běžící instanci staré verze PostgreSQL. Tento krok zajistí, že během migrace nebudou do databáze zapisována žádná nová data.

sudo systemctl stop postgresql-<stará_verze>

Nahraďte <stará_verze> číslem verze, kterou aktuálně používáte (např. postgresql-13).

Kontrola před migrací pomocí pg_upgrade --check

Před samotnou migrací dat je velmi užitečné spustit pg_upgrade s parametrem --check. Tento parametr provede kontrolu kompatibility mezi starým a novým databázovým clusterem, aniž by skutečně prováděl migraci dat. Pomůže vám identifikovat problémy, které by mohly způsobit selhání migrace, a upozorní na nastavení, která je třeba opravit.

sudo -u postgres /usr/pgsql-<nová_verze>/bin/pg_upgrade -k -b /usr/pgsql-<stará_verze>/bin -B /usr/pgsql-<nová_verze>/bin -d /var/lib/pgsql/<stará_verze>/data -D /var/lib/pgsql/<nová_verze>/data --check

Vysvětlení parametrů:

  • -k: Použití stávajících dat pomocí hardlinků, což urychluje migraci a šetří místo.
  • -b: Cesta k binárním souborům staré verze PostgreSQL.
  • -B: Cesta k binárním souborům nové verze PostgreSQL.
  • -d: Cesta k datovému adresáři staré verze PostgreSQL.
  • -D: Cesta k datovému adresáři nové verze PostgreSQL.
  • --check: Provádí kontrolu kompatibility mezi starým a novým clusterem bez provedení migrace, upozorní na případné problémy, které je třeba opravit před migrací.

Kontrola kompatibility:

  • Tento příkaz zkontroluje, zda jsou stará a nová verze PostgreSQL kompatibilní pro migraci. Pokud zjistí problémy, jako jsou nekompatibilní rozšíření, různé nastavení checksumů nebo jiná konfliktní nastavení, oznámí vám to.

Bezpečné ověření:

  • Protože --check neprovádí žádné změny, můžete ho bezpečně spustit, abyste se ujistili, že migrace proběhne hladce. Pokud se objeví nějaké problémy, můžete je opravit před skutečnou migrací.

Identifikace nastavení:

  • Parametr --check vám také pomůže identifikovat, zda jsou klíčová nastavení, jako například checksumy, nastavena stejně ve starém i novém clusteru. Tím předejdete problémům, které by mohly způsobit selhání migrace.

Doporučení:

Před tím, než spustíte skutečnou migraci pomocí pg_upgrade, vždy spusťte pg_upgrade --check, abyste odhalili případné problémy předem a mohli je vyřešit. Tento krok vám může ušetřit čas a minimalizovat riziko komplikací během migrace.

Použití pg_upgrade

Nástroj pg_upgrade je určen pro bezpečný a efektivní přesun dat ze staré verze PostgreSQL do nové. Přidáním volby -k dojde k vytvoření hardlinků mezi starými a novými datovými soubory, což znamená, že data nejsou fyzicky kopírována ani použita jako záloha. Tento postup výrazně urychluje migraci a umožňuje nové databázi okamžitě používat tato data. Pokud byste se pokusili spustit starý cluster po migraci, PostgreSQL zjistí, že data již používá nová verze, a odmítne starý cluster spustit, čímž zabrání potenciálním konfliktům a poškození dat.

Příklad příkazu pg_upgrade:

sudo -u postgres /usr/pgsql-<nová_verze>/bin/pg_upgrade -k -b /usr/pgsql-<stará_verze>/bin -B /usr/pgsql-<nová_verze>/bin -d /var/lib/pgsql/<stará_verze>/data -D /var/lib/pgsql/<nová_verze>/data

Vysvětlení parametrů:

  • -k: Použití stávajících dat pomocí hardlinků, což urychluje migraci a šetří místo.
  • -b: Cesta k binárním souborům staré verze PostgreSQL.
  • -B: Cesta k binárním souborům nové verze PostgreSQL.
  • -d: Cesta k datovému adresáři staré verze PostgreSQL.
  • -D: Cesta k datovému adresáři nové verze PostgreSQL.

Nahraďte <stará_verze> a <nová_verze> čísly verzí, které používáte. Tento příkaz provede migraci dat z původního datového adresáře do nového, přičemž zachová strukturu databáze a data.

Při použití nástroje pg_upgrade (i s parametrem -k) nedochází k přesunu dat ze starého datového adresáře do nového. Místo toho se data kopírují nebo hardlinkují (v závislosti na použití parametrů a systému souborů), a nová verze PostgreSQL používá svůj vlastní datový adresář.

Jak to funguje:

  • Bez parametru -k: Pokud nepoužijete parametr -kpg_upgrade zkopíruje data ze starého adresáře (např. /var/lib/pgsql/12/) do nového adresáře (např. /var/lib/pgsql/15/). To znamená, že data jsou přenesena do nového adresáře a starý adresář s daty může být po migraci odstraněn.
  • S parametrem -k: Při použití parametru -k s nástrojem pg_upgrade jsou data sdílena mezi starým a novým clusterem pomocí hardlinků. To znamená, že stará data nejsou fyzicky kopírována, ale oba clustery odkazují na stejné datové bloky. Při pokusu o spuštění staré verze PostgreSQL automaticky detekuje, že data již byla použita jinou verzí, a starý cluster odmítne naběhnout. Nová verze PostgreSQL však bude fungovat normálně. Tento parametr tedy šetří místo a urychluje migraci, ale nelze ho použít jako záložní mechanismus pro starou verzi, protože starý cluster nebude možné znovu spustit.

Základní podmínky pro parametr -k:

  • Souborový systém musí podporovat hardlinky: Parametr -k lze použít pouze v případě, že používáte souborový systém, který podporuje hardlinky (např. ext4, XFS apod.). Hardlinky umožňují, aby nový datový adresář odkazoval na stejné fyzické datové bloky jako starý datový adresář, což znamená, že data nejsou kopírována, ale sdílena mezi verzemi.
  • Jednotný souborový systém: Oba datové adresáře (starý i nový) musí být na stejném souborovém systému. Hardlinky totiž nemohou odkazovat na soubory na různých souborových systémech.

Výhody použití parametru -k:

  • Výrazně rychlejší migrace: Protože při použití hardlinků nedochází k fyzickému kopírování dat, migrace pomocí pg_upgrade s parametrem -k je výrazně rychlejší než standardní migrace. Data nejsou znovu zapisována na disk, což zkracuje dobu trvání procesu.
  • Nižší nároky na volné místo: Protože hardlinky odkazují na stejná data, nepotřebujete tolik volného místa na disku jako při plném kopírování dat. To vám umožní provést migraci i v prostředích s omezeným volným prostorem.

Nevýhody a na co si dát pozor při použití parametru -k

  • Sdílení dat mezi starým a novým clusterem: Když použijete parametr -k, dojde k hardlinkování dat mezi starým a novým datovým adresářem. To znamená, že i když jsou data dostupná ve dvou různých adresářích (např. /var/lib/pgsql/12//var/lib/pgsql/15/), jedná se o stejná fyzická data na disku. Po migraci však PostgreSQL automaticky detekuje, že data již byla použita jinou verzí, a starý cluster se vůbec nespustí. Tím se zabrání možným problémům, které by mohly nastat, pokud by oba clustery pracovaly nad stejnými daty.
  • Starý PostgreSQL cluster nelze znovu spustit: Po použití parametru -k není možné znovu spustit starý PostgreSQL cluster (např. PostgreSQL 12). Při pokusu o spuštění staré verze PostgreSQL automaticky detekuje, že data již byla použita jinou verzí, a starý cluster odmítne naběhnout.

Po úspěšné migraci dat můžete novou verzi PostgreSQL spustit. To můžete provést příkazem:

sudo systemctl start postgresql-<nová_verze>

Tím aktivujete novou verzi PostgreSQL, která nyní běží s migrovanými daty. Nezapomeňte také povolit automatické spuštění při startu systému, pokud jste tak ještě neučinili:

sudo systemctl enable postgresql-<nová_verze>

Nyní je vaše nová databáze připravena k plnému provozu.

Analýza a údržba databáze po migraci

Po úspěšné migraci dat je vhodné provést analýzu a optimalizaci databáze. Tento krok zajistí, že statistiky databáze jsou aktualizované a že je dosaženo optimálního výkonu.

Analýza a údržba databáze po migraci

Po migraci spusťte příkaz vacuumdb, který provede analýzu a údržbu všech databází v několika fázích. Tento příkaz pomůže zlepšit výkon databáze tím, že optimalizuje interní struktury po migraci:

sudo -u postgres /usr/pgsql-<verze>/bin/vacuumdb --all --analyze-in-stages

Tento příkaz provede analýzu databází v několika fázích, což je méně náročné na systémové prostředky než kompletní jednorázová analýza.

Výhody použití vacuumdb –analyze-in-stages

Tato možnost provádí analýzu v několika fázích, což umožňuje rychlejší přístup k validním statistikám a zároveň minimalizuje zatížení systému. Tento krok je obzvláště užitečný po migraci, kdy je potřeba aktualizovat statistiky pro optimalizaci výkonu.

Reindexace po migraci

Při migraci mezi verzemi PostgreSQL, zejména z verzí 13, 14 a 15, je důležité provést reindexaci databáze. Reindexace je klíčová z důvodu změn ve struktuře B-tree indexů, které byly postupně optimalizovány. Tento krok zajistí, že vaše indexy budou plně aktualizovány a optimalizovány pro novou verzi PostgreSQL, což může významně zlepšit výkon.

Proč reindexovat?

  • PostgreSQL 13: Tato verze přinesla zlepšení v algoritmech B-tree indexů, včetně de-duplication, což znamená, že po migraci z této verze a novějších je reindexace doporučena. Hlavními benefity těchto vylepšení jsou úspora místa na disku a lepší využití RAM, což přispívá k celkovému zlepšení výkonu databáze.
  • PostgreSQL 14 a 15: V těchto verzích došlo k dalším vylepšením, která ovlivňují efektivitu indexů. Reindexace po migraci z těchto verzí zajistí, že vaše indexy budou optimalizovány pro nové funkce a vylepšení.

Jak provést reindexaci:

Po úspěšné migraci doporučujeme spustit reindexaci celé databáze:

sudo -u postgres reindexdb --all

Kdy je reindexace nutná:

  • Migrace z PostgreSQL 13 a novější: Změny ve struktuře B-tree indexů znamenají, že reindexace po migraci z těchto verzí je důležitá pro dosažení optimálního výkonu.

Tímto krokem zajistíte, že vaše indexy jsou plně optimalizovány a že budete schopni plně využít výkonových vylepšení, která přinášejí nové verze PostgreSQL.

Optimalizace výkonu (Performance Tuning)

Po upgradu databáze je vhodné znovu přezkoumat a optimalizovat parametry pro dosažení co nejlepšího výkonu. To je zvláště důležité, pokud došlo ke zlepšení hardwarové konfigurace nebo pokud jsou v nové verzi PostgreSQL k dispozici nové funkce, které mohou výkon ovlivnit.

Paměťové nastavení

Nastavení paměťových parametrů je zásadní pro optimalizaci výkonu PostgreSQL:

  • shared_buffers: Tento parametr určuje množství paměti, kterou PostgreSQL používá pro sdílené datové bloky. Doporučuje se nastavit tento parametr na hodnotu odpovídající přibližně 25 % dostupné RAM.
  • work_mem: Tento parametr ovlivňuje množství paměti přidělené jednotlivým operacím třídění a hašování. Pro složitější dotazy nebo více souběžných uživatelů může být nutné tento parametr zvýšit.
  • maintenance_work_mem: Tento parametr určuje množství paměti přidělené údržbovým operacím, jako je například indexování a autovacuum. Zvýšení této hodnoty může urychlit tyto operace, zejména u větších databází.

Změny v kompresi:

  • WAL komprese (PostgreSQL 14 a novější): PostgreSQL 14 přidává podporu pro kompresi WAL souborů pomocí algoritmů Zstandard (ZSTD) a LZ4. To umožňuje výrazně snížit velikost WAL logů, což vede k úspoře místa na disku a potenciálně i ke zlepšení výkonu při přenosu logů přes síť.
  • TOAST komprese (PostgreSQL 15): PostgreSQL 15 zavádí podporu komprese dat v TOAST tabulkách pomocí algoritmu LZ4. TOAST (The Oversized-Attribute Storage Technique) se používá pro ukládání velkých hodnot, jako jsou velké textové řetězce nebo binární data. Komprese LZ4 je rychlá a účinná, což může vést ke snížení velikosti uložených dat a zlepšení výkonu při jejich čtení a zápisu.

Autovacuum

Autovacuum je důležitý proces, který zajišťuje údržbu databáze tím, že automaticky provádí operace, jako je odstraňování mrtvých řádků a aktualizace statistik. Po upgradu databáze byste měli zkontrolovat nastavení autovacuum a případně je upravit tak, aby odpovídala novým požadavkům na výkon.

  • Frekvence a prahové hodnoty: Pokud databáze často provádí velké množství změn, zvažte snížení prahových hodnot pro spuštění autovacuum, aby se častěji spouštělo.
  • Paralelní běh: Zvyšte počet paralelních autovacuum procesů, pokud je to možné, což může zlepšit výkon při údržbě databáze s mnoha tabulkami.

Logování

Pokud potřebujete sledovat výkon nebo ladit problémy, upravte nastavení logování. To vám umožní sledovat dotazy, které zpomalují databázi, nebo identifikovat další problémy:

  • log_min_duration_statement: Nastavte tento parametr na dobu, po kterou by měl být dotaz logován, pokud trvá déle než zadaná hodnota. Může vám to pomoci identifikovat pomalé dotazy.
  • log_checkpoints, log_autovacuum_min_duration: Tyto parametry mohou pomoci sledovat činnosti, které mohou ovlivňovat výkon, jako jsou checkpointy nebo dlouhé autovacuum operace.

Použití TimescaleDB Tuneru

Pokud používáte TimescaleDB, můžete využít jejich nástroj TimescaleDB Tuner pro automatickou optimalizaci nastavení výkonu. Tento nástroj analyzuje vaši konfiguraci a doporučí optimální nastavení pro parametry, jako jsou shared_buffers, work_mem, maintenance_work_mem a další.

Nástroj TimescaleDB Tuner můžete spustit pomocí následujícího příkazu:

timescaledb-tune

Tento nástroj projde vaši aktuální konfiguraci a poskytne doporučení pro úpravu nastavení. Kromě základních doporučení umožňuje tuner také nastavit volitelné parametry, které mohou dále optimalizovat výkon databáze. Doporučujeme projít tyto parametry a přizpůsobit je podle specifických potřeb vašeho systému a hardwarového prostředí.

Použitím těchto parametrů můžete dosáhnout optimálního nastavení databáze po upgradu a zajistit, že bude fungovat efektivně i při vyšším zatížení.

Ověření funkčnosti

Po provedení všech úprav a migrací je důležité ověřit, že nová verze PostgreSQL běží správně a že jsou všechna data dostupná. Tento krok zajistí, že migrace proběhla úspěšně a že databáze funguje podle očekávání.

Ověření verze PostgreSQL

Zkontrolujte, že nová verze PostgreSQL je správně nainstalována a spuštěna. K tomu můžete použít příkaz:

sudo -u postgres psql -c "SELECT version();"

Ujistěte se, že zobrazená verze odpovídá verzi, na kterou jste aktualizovali.

Ověření přístupu k databázi

Připojte se k databázi a zkontrolujte, že je dostupná. Ověřte, že se můžete připojit k databázi, procházet tabulky a provádět základní dotazy.

Kontrola dat

Prověřte, zda jsou všechna data správně migrována. Ověřte integritu dat a správnost konfigurace. Můžete zkontrolovat klíčové tabulky a data, která jsou pro vaše aplikace nejdůležitější.

Ověření rozšíření a funkcionalit

Ujistěte se, že všechna používaná rozšíření (např. TimescaleDB, PostGIS) jsou správně nainstalována a funkční. Zkontrolujte také, zda konfigurace zůstala konzistentní s vašimi požadavky.

Testování výkonu

Pokud jste provedli úpravy nastavení výkonu, zkontrolujte, zda se tyto změny projevily pozitivně na výkonu databáze. Spusťte několik testů, abyste zjistili, že systém běží hladce a bez problémů.

Kontrola logů

Projděte logovací soubory PostgreSQL, abyste ověřili, že během migrace ani po spuštění nové verze nedošlo k žádným chybám. Logy můžete najít v adresáři, který je specifikován v nastavení postgresql.conf (typicky /var/lib/pgsql/<verze>/data/log nebo podobné umístění). Zaměřte se na jakákoliv varování nebo chyby, které by mohly naznačovat problémy s migrací nebo výkonem.

sudo tail -f /var/lib/pgsql/<verze>/data/log/*.log

Sledujte logy a zkontrolujte, zda neobsahují žádné závažné chyby nebo varování.

Úklid po migraci a důležité poznámky

Po úspěšné migraci a ověření správné funkčnosti nové verze PostgreSQL je důležité provést úklid, aby se uvolnilo místo na disku a odstranily se staré, již nepotřebné soubory a verze PostgreSQL.

Odstranění starých datových souborů

Pokud jste použili pg_upgrade, může být vygenerován skript pro odstranění starých datových souborů. Tento skript můžete spustit následujícím příkazem:

./delete_old_cluster.sh

Poznámka: Tento příkaz trvale odstraní staré datové soubory, takže se ujistěte, že migrace proběhla úspěšně a že již nepotřebujete přístup k původním datům.

Odebrání staré verze PostgreSQL

Pokud již starou verzi PostgreSQL nepotřebujete a neplánujete ji používat v budoucnu, můžete ji odebrat ze systému:

 dnf remove postgresql<stará_verze>-server

Tímto příkazem se odstraní stará verze PostgreSQL a její balíčky.

Poznámka: Při odstraňování staré verze PostgreSQL je vhodné odstranit i všechny balíčky rozšíření (extenzí), které jsou s touto verzí spojené, pokud existují. Tím zajistíte, že na systému nezůstanou nepotřebné balíčky, které již nebudete používat.

Revize systémových služeb

Ujistěte se, že stará verze PostgreSQL není zaregistrovaná jako systémová služba, která by se mohla nechtěně spustit. Můžete to ověřit příkazem:

sudo systemctl list-unit-files | grep postgresql

Pokud vidíte služby staré verze, deaktivujte je:

sudo systemctl disable postgresql-<stará_verze>

Aktualizace dokumentace a skriptů

Pokud máte skripty nebo dokumentaci, které odkazují na starou verzi PostgreSQL, nezapomeňte je aktualizovat, aby odkazovaly na novou verzi. To zahrnuje zálohovací skripty, monitorovací nástroje, a další související konfigurace. Zvláštní pozornost věnujte následujícím oblastem:

  • Zálohovací skripty: Ujistěte se, že všechny zálohovací skripty odkazují na správnou verzi PostgreSQL a že jsou přizpůsobeny novým funkcím nebo změnám, které mohou mít vliv na proces zálohování (např. změny v podporovaných příkazech nebo optimalizace zálohování).
  • Monitorovací nástroje: Aktualizujte jakýkoli software nebo nástroje, které monitorují výkon databáze, aby byly kompatibilní s novou verzí PostgreSQL. Zkontrolujte, zda všechny monitorovací metriky a výstrahy odpovídají nové verzi a jejím parametrům.
  • Automatizační skripty: Pokud používáte skripty pro automatizaci správy databáze (např. skripty pro správu replikace, údržbu databáze nebo nasazování nových funkcí), aktualizujte je, aby byly plně kompatibilní s novou verzí PostgreSQL.

Seznámení se s novinkami a změnami

Před provedením migrace je vždy vhodné seznámit se s novinkami, změnami a očekávaným chováním nové verze PostgreSQL. Doporučujeme:

  • Číst changelog: Přečtěte si oficiální changelog PostgreSQL pro danou verzi, aby vás žádné změny nepřekvapily a abyste byli připraveni na nové funkce, změny v chování, nebo odstraněné funkce.
  • Zúčastnit se našich webinářů: Pravidelně pořádáme zdarma webináře, kde vás informujeme o novinkách v PostgreSQL a co očekávat po migraci. Je to skvělá příležitost, jak se seznámit s novými funkcemi a získat odpovědi na své otázky od odborníků.

Tento návod by měl být komplexní a pokrývat všechny důležité aspekty upgradu PostgreSQL na RHEL/Rocky Linux 9. Můžete jej přizpůsobit konkrétním potřebám a prostředí vaší organizace.