Ciao a tutti, mentre cerco di aggiungere l’estensione “pglogical” al nostro database Postgres, noto alcune discrepanze tra la versione di postgres installata e la versione citata dai file di template e configurazione di postgres.
La versione di postgres attualmente installata è la v16.2 (rilasciata a febbraio 2024), ma i file di configurazione sono tutti ancora associati alla v13, ad esempio:
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)
o il file postgres.template, che arriva solo fino alla v13.
Questo è un problema per me solo ora perché la libreria pglogical si trova nelle cartelle v16, ma non in quelle v13. Ho provato a creare collegamenti simbolici con
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/
ma questo porta solo a questo errore:
> FATAL: could not load library "/usr/lib/postgresql/13/lib/pglogical.so":/usr/lib/postgresql/13/lib/pglogical.so: undefined symbol: shmem_request_hook
Quindi i file della libreria non sono una sostituzione 1:1 tra le diverse versioni di postgres.
Alla fine, sembra che ci sia un po’ di divario tra la versione di postgres installata e la versione che il docker launcher pensa di creare.
Il mio obiettivo finale è installare pglogical, e sarebbe ideale trovare una soluzione riproducibile quando si ricostruisce il container (cioè, file o righe che possono essere facilmente aggiunti ai file di template). Sono sicuramente in grado di fare altro lavoro DevOps necessario (poiché è un requisito per la mia organizzazione), ma sono solo curioso se altri hanno riscontrato questo divario e cosa hanno fatto al riguardo.
Grazie per aver letto!