PostgreSQL을 버전 8.4에서 9.4로 업그레이드하는 방법은 무엇입니까?


18

PostgreSQL을 버전 8.4 에서 9.4 로 업그레이드하고 싶습니다 .

문서는 매우 나에게 분명하지 않다.

  1. 업그레이드를 수행하면 기존 데이터베이스가 손실됩니까?
  2. 업그레이드 후 기존 데이터베이스를 잃어 버릴 경우 어떻게 백업 할 수 있습니까?
  3. psql을 어떻게 업그레이드 할 수 있습니까?

PostgreSQL이 CentOS 6.6 서버 에서 실행 중입니다 .


솔직히 말해서, 설명은 매우 링크 된 페이지에서 취소합니다. 덤프를하는 것은 문제가 해결되지 않은 경우에 대한 덤프가 있음을 의미합니다. 그것은 또한 당신이 그것을 잃지 않는다는 것을 의미합니다. 또한이 페이지에는 최신 버전을 실제로 설치하는 방법을 가리키는 링크가 있습니다 (예 : Ubuntu에 postgresql-client-9.4포함 된 패키지가 있습니다) psql.
dezso

@dezso psql 8.4를 제거하고 9.4로 가면 기존 데이터베이스가 손실됩니까?
Alex Jolig

3
당신이 그들을 덤프하면, 아니. 어쨌든 복구 가능성을 테스트하는 정기적 인 백업이 있어야하므로 전혀 문제가되지 않습니다. pg_upgrade또한를 사용하도록 선택하면 DB가 유지되지만이 경우에도 백업을 수행해야합니다.
dezso

" How can I backup my old databases if"- 어떤이없는 경우 . 업그레이드 후 데이터베이스는 거의 완벽하게 문제가 없지만 예상치 못한 문제가 발생하는 경우 어쨌든 이와 같은 작업을 수행 할 때 항상 새로운 (바람직하게 테스트 된) 백업을 수행해야합니다 (가장 나쁜 경우 : 전원 차단 또는 기타 하드웨어 결함으로 인해 발생할 수 있음) 뒤로 또는 앞으로 롤하기 어려운 위치에 있습니다. 정기적 인 백업 계획에 따라 추가 백업을 수행하지 않아도됩니다.
David Spillett

답변:


25

이것이 내가 문제를 해결 한 방법입니다.

Centos에서 PostgreSQL 8.4를 9.4로 업그레이드

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

백업 데이터

 7. su - postgres

 8. pg_dumpall > dump.sql

데이터 복원

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

네트워크 액세스 구성

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

PG8.4 제거

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql

3
왜 "유해 가독성"으로 내 편집을 거부했는지 잘 모르겠습니다. 실제로 명령을보다 쉽게 ​​복사 할 수 있습니다.
nhahtdh

1
이 방법을 사용하여 9.2에서 9.6으로 업그레이드했습니다. 감사 !
EisenHeim

예를 들어 pgdump를 사용하여 데이터베이스를 테라 바이트 단위의 데이터베이스로 마이그레이션하는 것은 불가능하다고 생각합니다. 다른 방법이 있습니까?
deFreitas

첫 번째 명령 인 "Yum Install PG9.4"에서 모든 것이 올바른 대문자입니까?
Dave

1
@deFreitas 조금 늦었지만 pg_upgrade> = 8.4에서 업그레이드하고 동일한 서버를 사용하는 경우 사용할 수 있습니다. pg_upgrade우분투 18에서는 1GB 데이터베이스를 복원하는 데 a pg_upgrade보다 시간이 덜 걸렸습니다 pg_dump. 단점은 동일한 머신에 2 개의 postgres 버전을 설치하고 실행해야한다는 것입니다 (물론 다른 포트를 들음).
EAmez

3

service postgresql-9.4initdb는 나를 위해 작동하지 않았다, 나는 sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb( here 발견 ) 을 사용해야했다 .

훌륭한 지침에 감사드립니다 pg_hba.conf. 파일 을 재구성해야하더라도 문제없이 9.2에서 9.4로 업데이트 할 수있었습니다 .


1

단일 postgresql94 psql 바이너리를 / usr / (local /) bin에 연결하는 것보다 대안 시스템을 사용하는 것이 좋습니다.

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

postgresql94의 바이너리, man, confs ... 링크를 CentOS의 기본 디렉토리로 만듭니다.

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