Discourse_docker Standardvorlagen und PostgreSQL-Version sind nicht synchronisiert

Hallo zusammen, als ich versuchte, die “pglogical”-Erweiterung zu unserer Postgres-DB hinzuzufügen, bemerkte ich einige Diskrepanzen zwischen der installierten Version von Postgres und der Version, die in den Postgres-Vorlagen- und Konfigurationsdateien angegeben ist.

Die aktuell installierte Version von Postgres ist v16.2 (veröffentlicht im Februar 2024), aber die Konfigurationsdateien sind alle noch mit v13 verknüpft, z. B.

root@ip-172-31-62-223-app:/var/www/discourse# sudo -u postgres psql discourse
psql (16.2 (Debian 16.2-1.pgdg110+2), server 13.14 (Debian 13.14-1.pgdg110+2))
Type "help" for help.

discourse=# SHOW config_file;
               config_file
-----------------------------------------
 /etc/postgresql/13/main/postgresql.conf
(1 row)

oder die postgres.template-Datei, die nur bis v13 reicht.

Dies ist für mich im Moment nur ein Problem, da sich die pglogical-Bibliothek in den v16-Ordnern befindet, aber nicht in den v13-Ordnern. Ich habe versucht, Symlinks mit

for i in $(ls /usr/share/postgresql/16/extension/pglogical*); do ln -s $i /usr/share/postgresql/13/extension/$(basename $i); done
ln -s /usr/lib/postgresql/16/lib/pglogical.so /usr/lib/postgresql/13/lib/

aber das führt nur zu diesem Fehler

> FATAL: could not load library "/usr/lib/postgresql/13/lib/pglogical.so":/usr/lib/postgresql/13/lib/pglogical.so: undefined symbol: shmem_request_hook

Die Bibliotheksdateien sind also kein 1:1-Ersatz zwischen den verschiedenen Postgres-Versionen.

Am Ende scheint es eine Lücke zwischen der installierten Postgres-Version und der Version zu geben, die der Docker-Launcher zu bauen glaubt.

Mein Endziel ist es, pglogical zu installieren, und es wäre am besten, eine Lösung zu finden, die bei der Neuerstellung des Containers reproduzierbar ist (d. h. Dateien oder Zeilen, die leicht zu den Vorlagendateien hinzugefügt werden können). Ich bin definitiv bereit und in der Lage, mehr von der benötigten DevOps-Arbeit hier zu leisten (da es eine Anforderung für meine Organisation ist), bin aber nur neugierig, ob andere auf diese Lücke gestoßen sind und was sie dagegen unternommen haben.

Vielen Dank fürs Lesen!

Dumm, dumm, dumm von mir. Der Grund, warum die pglogical-Dateien dort sind, ist, dass ich Folgendes ausgeführt habe:

sudo apt-get install postgresql-16-pglogical

um sie dort zu platzieren. (Es war gestern ein langer DevOps-Tag.) Ein dpkg -L postgresql-16-pglogical hat das für mich aufgezeigt…

Das Ausführen von

sudo apt-get install postgresql-13-pglogical

hat pglogical ohne Probleme zum Laufen gebracht. Ich werde das weiter untersuchen, aber zumindest bin ich bei meiner dringenden Aufgabe nicht mehr blockiert.

Ich denke jedoch, dass der von mir oben gemachte Punkt bezüglich der Versionen in discourse_docker und postgres bestehen bleibt.

1 „Gefällt mir“

Beachten Sie, dass psql --version und docker exec data su postgres -c \"echo 'select version();'|psql\"|grep PostgreSQL|cut -d \" \" -f 3 nicht dasselbe sind.

Ich denke, dass das Image die aktuellen Client-Tools enthält (die für Leute funktionieren, die spätere Versionen von Postgres ausführen, die Discourse (wahrscheinlich) unterstützt) und dass noch nicht jeder gezwungen wurde, auf PG15 oder was auch immer der Plan ist, zu aktualisieren.

Ich möchte auch darauf hinweisen, dass das Hinzufügen dieser pglogical-Bibliothek mit Sicherheit das PostgreSQL-Upgrade beeinträchtigt, das im Januar in den Repos discourse + discourse_docker eingeführt wurde.

1 „Gefällt mir“