postgresql pg_ * 명령의 특정 버전 (8.4, 9.1)을 실행하는 방법 (예 : pg_dump)


11

Postgresql 버전 8.4 및 9.1이 설치되어 있습니다. 주어진 Postgresql 명령에 대해 실행할 특정 버전의 명령을 어떻게 지정합니까? (예를 들어, psql, pg_dump, pg_ctlcluster, pg_restore, ...)

8.4에서 9.1 로의 업그레이드를 준비 할 때 pg_dump를 수행하고 싶기 때문에 제 질문에 대한 동기가 생겼으며 현재 실행중인 pg_dump 버전을 알고 싶습니다.

우분투 10.04 Natty에서 실행 중입니다.

답변:


15

우분투 에 있고 패키지 에서 제공하고 표준 데비안 패키지와 함께 제공되는 Martin Pitt가 pg_wrapper설치되어 있습니다 (에서 판단 pg_ctlcluster) postgresql-common. 데비안에서도 동일하게 사용 합니다 .

Linux 시스템 which에서 쉘에서 실행 하여 실제로 선택된 실행 파일을 확인하십시오.

postgres@db:~$ which pg_dump
/usr/bin/pg_dump
postgres@db:~$ ls -l /usr/bin/pg_dump
lrwxrwxrwx 1 root root 37  4. Jun 18:57 /usr/bin/pg_dump -> ../share/postgresql-common/pg_wrapper

pg_dump는 실제로 심볼릭 링크로 pg_wrapper, 실행하는 db 클러스터에 적합한 클라이언트 프로그램 버전을 동적으로 선택합니다 pg_dump. 나는 맨 페이지를 인용한다 pg_wrapper:

이 프로그램은 / usr / lib / postgresql / version / bin의 PostgreSQL 프로그램에 해당하는 이름에 대한 링크로만 실행됩니다. 사용자에 대해 구성된 클러스터 및 데이터베이스를 결정하고 해당 명령에 지정된 옵션을 제공하여 해당 버전의 원하는 프로그램을 호출하여 해당 클러스터 및 데이터베이스에 연결합니다.

   The target cluster is selected by the following means, in descending order of precedence:
   1.  explicit specification with the --cluster option
   2.  explicit specification with the PGCLUSTER environment variable
   3.  matching entry in ~/.postgresqlrc (see postgresqlrc(5)), if that file exists
   4.  matching entry in /etc/postgresql-common/user_clusters (see user_clusters(5)), if that file exists
   5.  If only one local cluster exists, that one will be selected.
   6.  If several local clusters exist, the one listening on the default port 5432 will be selected.

   If none of these rules match, pg_wrapper aborts with an error.

설치를 망쳐 놓지 않는 한 올바른 버전을 자동으로 선택해야합니다. 옵션 --cluster을 항상 구체적으로 추가 할 수 있습니다 .


1
참고 사항 : 이것은 원격 연결에 도움이되지 않습니다. 8.3 및 9.1 클라이언트 도구가 설치되어 있으며 어떤 이유로 든 기본값은 8.3입니다. 올바른 버전을 사용하려면 / usr / lib에서 경로를 수동으로 선택해야합니다. 나는 가장 새로운 것이 기본적으로 사용될 것이라고 생각했지만, 그렇지 않은 것 같습니다.
Sami Kuhmonen

최신 것이 아니라 데이터베이스와 일치하는 것이 필요합니다. 그러나 어떤 목적으로 pg_dump의 새 버전이 더 나은 옵션 일 수 있습니다.
Erwin Brandstetter

~ / .postgreslqrc 파일에 정확히 무엇이 필요한지 명확히 설명해 주시겠습니까? 내 클라이언트 출력-> psql (8.4.21, 서버 9.1.13) 경고 : psql 버전 8.4, 서버 버전 9.1. 일부 psql 기능이 작동하지 않을 수 있습니다.
Croydon Dias

그것은 나를 위해 작동하지 않는 것 같습니다. 9.1의 서버에서 덤프를 작성했으며 9.1 및 8.4의 다른 서버에서 복원을 시도하면 파일 형식을 인식 할 수 없다는 메시지가 표시됩니다. 또한 --cluster명령 행 옵션 이 없습니다 .
Alexis Wilke 2016 년

4

나는 사용한다

PGCLUSTER=8.4/main pg_dump ...
PGCLUSTER=9.1/main pg_dump ...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.