안녕하세요. Postgres DB에 “pglogical” 확장 기능을 추가하는 것을 검토하고 있는데, 설치된 postgres 버전과 postgres 템플릿 및 구성 파일에 명시된 버전 사이에 불일치가 있음을 발견했습니다.
현재 설치된 postgres 버전은 v16.2(2024년 2월 출시)이지만, 구성 파일은 여전히 v13과 관련되어 있습니다. 예를 들어,
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)
또는 postgres.template 파일은 v13까지만 포함되어 있습니다.
이 문제는 현재 pglogical 라이브러리가 v16 폴더에는 있지만 v13 폴더에는 없기 때문에 저에게만 문제가 되고 있습니다. 다음 명령어로 심볼릭 링크를 시도해 보았지만,
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/
이러한 오류가 발생합니다.
FATAL: could not load library “/usr/lib/postgresql/13/lib/pglogical.so”:/usr/lib/postgresql/13/lib/pglogical.so: undefined symbol: shmem_request_hook
즉, 라이브러리 파일은 서로 다른 postgres 버전 간에 1:1로 대체할 수 없습니다.
결론적으로, 설치된 postgres 버전과 docker 런처가 빌드한다고 생각하는 버전 사이에 일부 격차가 있는 것으로 보입니다.
최종 목표는 pglogical을 설치하는 것이며, 컨테이너를 다시 빌드할 때 재현 가능한 솔루션(즉, 템플릿 파일에 쉽게 추가할 수 있는 파일이나 줄)을 찾는 것이 이상적입니다. 저는 더 많은 DevOps 작업을 수행할 수 있는 능력을 갖추고 있습니다(조직의 요구 사항이기도 합니다)만, 다른 분들도 이러한 격차에 부딪혀 보셨는지, 그리고 어떻게 해결하셨는지 궁금합니다.
읽어 주셔서 감사합니다!