Patchen einer Source Code Installation

Ich habe eine kompilierte 12.3 Installation (wegen Verwendung von GSSAPI) auf einem CentOS 7 System, die soweit funktioniert. Aber wie kann ich hier Patches einspielen, der sonst für Upgrades zuständige Package Manager weiß ja leider nichts davon.

lG
gert

Ich habe das noch nie gemacht, aber ich würde davon ausgehen, dass Du ein git pull machen musst, in dem Verzeichnis in dem Du den Quellcode ausgecheckt hast. (RELEASE_12 Branch) und dann einfach neu bauen.

Zudem gibt es ja für jedes Release (auch die Minors) eine entsprechendes tar.gz mit den dazu gehörigen Source. https://www.postgresql.org/ftp/source/
Wenn also dann die 12.4 erscheint, sollte das entsprechende Archiv dort auch verfügbar sein.

Stimmt soweit (funktioniert auch), mit einem pg_upgrade kann man auch die Datenbank “migrieren”.

/var/lib/pgsql/12.1/bin/pg_upgrade --old-bindir=/var/lib/pgsql/12.0/bin --new-bindir=/var/lib/pgsql/12.1/bin/ --old-datadir=/var/lib/pgsql/data_old/ --new-datadir=/var/lib/pgsql/dataNew/ --check --verbose

Bei sehr vielen Clustern auf einer Installation empfiehlt sich dann dringend ein Script zu bauen.

Jetzt wäre es noch interessant, wann es ausreicht, die Datenbank einfach mit den neuen Binaries zu starten und wann ein Upgrade der DB erforderlich ist. Das kann nämlich bei größeren Datenbanken schnell sehr aufwendig werden.
Bei Major Release Wechsel wird es sich wahrschlich nicht vermeiden lassen.

lG
gert

pg_upgrade ist nur notwendig wenn man von einer Major Version zur nächsten migriert. Bei Minor Upgrades ist das nicht notwendig. Einfach binaries installieren, neu starten, fertig.

bei minor-Updates reicht immer ein Neustart nach dem Einspielen der binaries. Es kann erforderlich sein, Indexe neu zu bauen. Das passiert selten, und wenn, steht es in den release-notes.

Bei einem Major Version upgrade mit pg_upgrade werden die Konfig Dateien postgresql.conf und pg_hba.conf ja nicht mitgenommen, daher habe ich sie jetzt immer manuell kopiert.

Gibt es da eine bessere Vorgangsweise, da dadurch neue Einstellungen etwa in der postgresql.conf die mit einer neuen Version kommen würden ja überschrieben werden?

Ich mache grundsätzlich nur eine einzige Änderung in postgresql.conf: nämlich ein include auf eine “custom.conf” in der alle meine Änderungen drin stehen. Nach einem Upgrade muss man nur die custom.conf kopieren und das entsprechende include wieder einfügen.

Wenn man sich das Kopieren auch noch sparen will, kann man z.B. die custom.conf z.B. in ein Verzeichnis außerhalb des Data Directory legen (aber um das einfügen des include kommt man nicht herum)

1 Like

Genial: Besten Dank für die Anregung!

ACK, ist auch unsere Empfehlung. Wenn Du z.B. die Config von 10 nach 11 oder von 11 nach 12 kopierst wirst Du a) Konflikte haben weil Parameter entfallen sind und b) du siehst neue Parameter nicht. Das ist als eine recht schlechte Idee.

Off-Topic: Nicht nur für PostgreSQL eine Empfehlung sondern grundsätzlich. Spart man sich viel Ärger bei Updates von Programmen.