Prague PostgreSQL Testing Night

V noci z 21. na 22. května se v Praze konala lokální varianta "PostgreSQL testing night" - nočního setkání uživatelů PostgreSQL s cílem otestovat funkčnost nové verze (aktuálně se jedná o 9.0). Zůčastnilo se následujících šest nadšenců - Pavel Stěhule, Honza Matoušek, Václav Novotný, Tzvetan Tzankov, Petr Michalek a já.

PostgreSQL Testing
Night v Praze

Úkol by jasný - otestovat nové vlastnosti, nástroje a další změny ve verzi 9 (resp. první betaverzi). Vzhledem k tomu že některé nové vlastnosti (např. dlouho očekávaná asynchronní replikace) jsou testovány dlouho a vydatně, doporučoval Pavel testovat primárně fungování stávajících aplikací a případně migraci pomocí nástroje pg_upgrade (původně se jednalo o samostatně distribuovaný nástroj pg_migrator, nově se jedná o contrib modul - info viz. například zde).

Našli jsme (resp. kolegové, já jsem žádnou chybu nenašel) jednu chybu přímo v PostgreSQL (neschopnost naplánovat relativně jednoduchý dotaz s left joinem v subselectu) a několik chyb v souvisejících nástrojích (pgadmin na OS X a v pg_upgrade). Čili veskrze úspěšné testování ...

Osobně jsem k testování použil dva svoje projekty využívající PostgreSQL - scrumspace a pgmonitor, a spíše než na chyby jsem narazil spíše na několik neočekávaných zádrhelů ohledně replikace. Hot standby jsem zatím neměl možnost (resp. čas) nějak podrobněji zkoumat, a moje úvahy o využití se týkaly např. možnosti využít záložní systém pro sběr statistik v pgmonitoru, tak aby se odlehčilo hlavní databázi.

Bohužel, toto se ukázalo jako nemožné, a to ze dvou principielních důvodů které jsem nedomyslel

  • pg_stat_ a pg_statio_ tabulky se nereplikují - jsou specfické pro daný cluster, tj. každý z clusterů (primární i záložní) má v těchto systémových tabulkách vlastní data
  • ne každý select je na hot standby přípustný - například funkce "age(XID)" která vrací "stáří transakce" vyžaduje získání "aktuálního XID" což ale na hot standby nelze

Ano, toto nejsou chyby ale vlastnosti - nicméně to ale přináší i poměrně zajímavý problém. Jestliže použijete hot standby replikaci pro high-availability řešení (pokud primární DB selže, automaticky ji nahradí záložní DB běžící do té doby v recovery módu), odkud budete sbírat statistiky?

V principu byste statistiky měli sbírat ze všech databází na kterých spouštíte dotazy (tj. pokud se jedná pouze o pasivní zálohu, není to nutné). Ale jak poznáte že došlo k přepnutí na záložní DB? Ve statistikách se náhle objeví "skok" (záložní cluster má v systémových katalozích vlastní data). Jak poznat že došlo k "restartu" když funkce "pg_postmaster_start_time()" vrací okamžik startu postgresu (tj. okamžik nastartování v recovery módu, nikoliv okamžik přepnutí z recovery módu)?

Celkově vzato úspěšné testování - tak zase příště ;-)

Komentáře

K tomuto článku zatím žádné komentáře neexistují (nebo čekají na schválení).

Nový komentář

Všechny komentáře podléhají schválení - mezi odesláním komentáře a jeho zobrazením na této stránce tedy může být prodleva. Vyplníte-li e-mailovou adresu, budete o schválení či neschválení komentáře informováni.

V titulku ani v textu nejsou povoleny HTML tagy - budou automaticky odstraněny. Odstavec ukončíte prázdným řádkem.

(nepovinné)