Upgrade PostGIS extension z dev verze

Upgrade PostGIS extension z dev verze
« kdy: 10. 03. 2025, 10:33:45 »
Ahoj!
Na serveru se mi do Docker image nejakou nestastnou shodou okolnosti dostala extension PostGIS ve verzi 3.2.0.dev, nad kterou se nasledne postavila kupa uzivatelskych objektu.
Pri patchovani jsem narazil na to, ze dostupna verze extension uz je novejsi (3.5.0), bohuzel se mi nedari prijit na zadny zpusob, jak stavajici extension updatovat. Vzdy skoncim na informaci, ze z dane verze neni k dispozici zadna cesta pro update na novou verzi. Rad bych se vyhnul odstavce spojene s exportem/importem dat (instance neni uplne mala a zabere to cas) a tak bych se jeste rad zkusil zeptat zkusenejsich. Existuje nejaka moznost, jak provest update extension nebo me dump zkratka nemine?
Diky moc za pripadne napady!


Re:Upgrade PostGIS extension z dev verze
« Odpověď #1 kdy: 13. 03. 2025, 09:56:45 »
Bez nároku, že to bude fungovat, ale co cluster?
Teda díky pojmenování je Postgres Cluster něco malinko jinýho, ale co bych otestoval je druhý server jako slave, novější verze postgis a do něj syncnout data. A pak to jenom překlopit s minimální odstávkou.

Asi to bude chtít pár pokusů, ale mohlo by to projít. Od klávesnice nevím, co ti ten pg_basebackup vlastně všechno přenese a jestli nebude potřeba před nastartováním nějak poladit konfiguraci, aby tam byla novější verze pgvector.

Jinak pokud jsi tohle nikdy nedělal, bude to chvilku bolet, ale hledáš pojem "Streaming replication".

Mě snad nejvíc času zabralo si všimnout toho, jak se server stane standby.
HINT: A server enters standby mode if a standby.signal file exists in the data directory when the server is started.

https://wiki.postgresql.org/wiki/Streaming_Replication

Good luck a případně dej vědět, jak to dopadlo.

Re:Upgrade PostGIS extension z dev verze
« Odpověď #2 kdy: 13. 03. 2025, 14:37:59 »
Ahoj!
Na serveru se mi do Docker image nejakou nestastnou shodou okolnosti dostala extension PostGIS ve verzi 3.2.0.dev, nad kterou se nasledne postavila kupa uzivatelskych objektu.
Pri patchovani jsem narazil na to, ze dostupna verze extension uz je novejsi (3.5.0), bohuzel se mi nedari prijit na zadny zpusob, jak stavajici extension updatovat. Vzdy skoncim na informaci, ze z dane verze neni k dispozici zadna cesta pro update na novou verzi. Rad bych se vyhnul odstavce spojene s exportem/importem dat (instance neni uplne mala a zabere to cas) a tak bych se jeste rad zkusil zeptat zkusenejsich. Existuje nejaka moznost, jak provest update extension nebo me dump zkratka nemine?
Diky moc za pripadne napady!

Používáme hlavně Oracle, ale koncept může být stejný. Máme hot standby kam se replikuje vse, co se v hlavni db uděla.

Zkus si vytvorit takovou hot standby a pak až bude vše ok, tak na ni přesuň provoz.

Určitě si hlídej jestli jsou geometrie validní a asi bych udělal rebuild indexů. Toto může ušetřit hodně nervů :)

Re:Upgrade PostGIS extension z dev verze
« Odpověď #3 kdy: 16. 03. 2025, 00:37:52 »
Kolegove, diky za napad!. Souhlasim s tim, ze by to nejspise mohlo byt elegantni reseni, kterym bych se vyhnul potrebe exportu/importu, bohuzel v mem prostredi nemam k dispozici moznost si postavit repliku (korporat, takze oddeleni kompetenci, security pravidla atd.).

Re:Upgrade PostGIS extension z dev verze
« Odpověď #4 kdy: 16. 03. 2025, 10:31:57 »
Kolegove, diky za napad!. Souhlasim s tim, ze by to nejspise mohlo byt elegantni reseni, kterym bych se vyhnul potrebe exportu/importu, bohuzel v mem prostredi nemam k dispozici moznost si postavit repliku (korporat, takze oddeleni kompetenci, security pravidla atd.).

Napadla me jeste jedna vec. Jak resi Postgresql extensions? Je mozne mit ruzne verze v ruznych databazich?

Tady vypada, ze by to mohlo jit
https://gis.stackexchange.com/questions/229004/is-it-possible-for-2-or-more-postgis-extensions-to-coexist


Jestli by to opravdu slo, tak bych postupoval takto

1. prelozit  3.2.0 finalni verzi - tim ziskas velmi podobnou funkcionalitu jak mas s  3.2.0.dev
2. udelat novou db v ramci stejneho serveru a pouzit 3.2.0 (bez dev)
3. vse tam pretahat, provest validaci geometrii a mozna prepocitat spatial indexy
4. zacit pouzivat novou db
5. pak uz by mel jit upgrade postgis 3.2.0 na novejsi verzi, ten upgrade by pak mel udelat i dalsi kroky,pokud jsou potreba.

Urcite bych nesel rovnou na novejsi verzi z te dev. Mas docela stesti dokonce jeste podporuji i 3.1 (https://postgis.net/tags/3.2/)

Doporucuji nekde nejdriv vyzkouset, postgis pouzivam velmi rekreacne.


Re:Upgrade PostGIS extension z dev verze
« Odpověď #5 kdy: 18. 03. 2025, 16:01:46 »
Určitě jde mít víc extenzí různých verzí v různých DB. Minimálně u partman-a mě to potkalo několikrát. Osobně tohle vnímám jako problematické, protože právěto přetahání znamená, že pokud mi v mezičase někdo zapíše, tak mám rozjetá data. Tohle replika elegantně řeší.

Pokud máš přístup na daný server jako root, tak řešení opravdu z nouze je udělat si druhý postgres server na jiném portu s jiným data directory a rozeběhnout replikaci mezi nimi v rámci jednoho VM. Ještě trochu víc práce, ale není potřeba extra VM, adresy, prostupy na FW. Pak jenom starý postgres vypnout a nový nastartovat na původním portu.

Re:Upgrade PostGIS extension z dev verze
« Odpověď #6 kdy: 18. 03. 2025, 16:43:47 »
Určitě jde mít víc extenzí různých verzí v různých DB. Minimálně u partman-a mě to potkalo několikrát. Osobně tohle vnímám jako problematické, protože právěto přetahání znamená, že pokud mi v mezičase někdo zapíše, tak mám rozjetá data. Tohle replika elegantně řeší.

Tohle neplatí univerzálně. partman je čistě plpgsql (jestli se nepletu). Hodně extenzí je napsaných v C, a pro jednoduchost buildu nemají verzi v názvu knihovny. Tudíž nepodporují souběžný běh různých verzí extenzí. U některých knihoven se řeší alespoň kompatibilní ABI, aby byl možný upgrade, ale pochybuji, že by někdo psal C extenze, tak aby plně fungoval s různými verzemi extenze. Nikde nemám nainstalovaný PostGIS, takže si to nemohu ověřit, ale vypadá to, že PostGIS je výjimka, a má verzi zadrátovanou v názvu knihovny. V mnoha ohledech je PostGIS dost specifická extenze - velikostí, komplexitou a způsobem implementace upgrade.

Re:Upgrade PostGIS extension z dev verze
« Odpověď #7 kdy: 18. 03. 2025, 16:59:00 »
Ahoj!
Na serveru se mi do Docker image nejakou nestastnou shodou okolnosti dostala extension PostGIS ve verzi 3.2.0.dev, nad kterou se nasledne postavila kupa uzivatelskych objektu.
Pri patchovani jsem narazil na to, ze dostupna verze extension uz je novejsi (3.5.0), bohuzel se mi nedari prijit na zadny zpusob, jak stavajici extension updatovat. Vzdy skoncim na informaci, ze z dane verze neni k dispozici zadna cesta pro update na novou verzi. Rad bych se vyhnul odstavce spojene s exportem/importem dat (instance neni uplne mala a zabere to cas) a tak bych se jeste rad zkusil zeptat zkusenejsich. Existuje nejaka moznost, jak provest update extension nebo me dump zkratka nemine?
Diky moc za pripadne napady!

Podle dokumentace by měl jít update z 3.1 na 3.4 https://www.enterprisedb.com/docs/postgis/latest/installing/upgrading/
a předpokládám, že upgrade z 3.4 na 3.5 bude určitě také. Bacha, tam je velká zrada. PostGIS se upgraduje skrz nějaký skript, který vygeneruje potřebná SQL (si myslím). Není to běžná extenze. Je to svět sám pro sebe. Doporučoval bych se zeptat na dedikovaném fóru nebo na https://groups.google.com/g/postgresql-cz?hl=cs kde je určitě pár lidí s dobrou znalostí jak PostGISu tak Postgresu.

Re:Upgrade PostGIS extension z dev verze
« Odpověď #8 kdy: Dnes v 13:41:15 »
Tak kdybyste nahodou nekdy nekdo resil, tak nakonec podle vseho zafungovalo nasledujici:

cd /usr/share/postgres/13/extension
ln -s postgis--TEMPLATED--TO--ANY.sql postgis--3.2.0dev--ANY.sql

Pripadne totez provest pro soubory dalsich extensions. Standardni update pres zavolani "select postgis_extensions_upgrade();" uz pak projde bez problemu a ZATIM jsem nenarazil na zadne chyby.
Tak snad jsme z toho vybruslili a pro priste budu rozhodne opatrnejsi :)

Re:Upgrade PostGIS extension z dev verze
« Odpověď #9 kdy: Dnes v 14:35:55 »
Tak kdybyste nahodou nekdy nekdo resil, tak nakonec podle vseho zafungovalo nasledujici:

cd /usr/share/postgres/13/extension
ln -s postgis--TEMPLATED--TO--ANY.sql postgis--3.2.0dev--ANY.sql

Pripadne totez provest pro soubory dalsich extensions. Standardni update pres zavolani "select postgis_extensions_upgrade();" uz pak projde bez problemu a ZATIM jsem nenarazil na zadne chyby.
Tak snad jsme z toho vybruslili a pro priste budu rozhodne opatrnejsi :)

Dobrý úlovek.

Předpokládám, že jsi udělal nejdřív změnu na Postgis 3.2.0 a teprve potom upgrade na novější?