Olá a todos, ao tentar adicionar a extensão “pglogical” ao nosso banco de dados Postgres, estou notando algumas discrepâncias entre a versão do postgres instalada e a versão citada pelos arquivos de template e configuração do postgres.
A versão do postgres atualmente instalada é a v16.2 (lançada em fevereiro de 2024), mas os arquivos de configuração ainda estão associados à v13, por exemplo:
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)
ou o arquivo postgres.template, que vai apenas até a v13.
Isso é um problema para mim agora porque a biblioteca pglogical está localizada nas pastas v16, mas não nas pastas v13. Tentei criar links simbólicos com
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/
mas isso apenas leva a este erro:
> FATAL: could not load library "/usr/lib/postgresql/13/lib/pglogical.so":/usr/lib/postgresql/13/lib/pglogical.so: undefined symbol: shmem_request_hook
Portanto, os arquivos da biblioteca não são uma substituição 1:1 entre as diferentes versões do postgres.
No final, parece haver uma lacuna entre a versão do postgres instalada e a versão que o docker launcher pensa que está construindo.
Meu objetivo final aqui é instalar o pglogical, e o ideal seria encontrar uma solução que seja reproduzível ao reconstruir o contêiner (ou seja, arquivos ou linhas que possam ser facilmente adicionados aos arquivos de template). Com certeza estou disposto a fazer mais do trabalho de DevOps necessário (já que é um requisito para minha organização), mas estou curioso se outros já encontraram essa lacuna e o que fizeram a respeito.
Obrigado por ler!