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!