이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 토토 베이버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

pg_upgrade

이름

pg_upgrade- 업그레이드 aPostgreSQL서버 인스턴스

시놉시스

pg_upgrade -B Oldbindir -B Newbindir -d Olddatadir -d Newdatadir [옵션...]

설명

pg_upgrade(이전에 전화pg_migrator)는 데이터 저장을 허용합니다PostgreSQL데이터 파일PostgreSQL일반적으로 필요한 데이터 덤프/다시로드가없는 주요 버전PostgreSQL. 그렇지 않습니다

Major PostgreSQL은 정기적으로 새로운 기능을 추가합니다pg_upgrade이 사실을 사용하여 빠르게 수행하십시오pg_upgrade그렇지 않습니다

pg_upgrade최선을 다합니다pg_upgrade.

pg_upgrade는 8.3.x에서 나중에 업그레이드를 지원합니다PostgreSQL9700_9742

옵션

pg_upgrade

-B Old_bindir
-old-bindir =Old_bindir

이전 클러스터 실행 디렉토리; 환경pgbinold

-B new_bindir
--new-bindir =new_bindir

새 클러스터 실행 디렉토리; 환경pgbinnew

-c
-체크

클러스터 만 확인하고 데이터를 변경하지 마십시오

-d Old_datadir
-old-datadir =Old_datadir

이전 클러스터 데이터 디렉토리; 환경 변수pgdataold

-d new_datadir
--new-datadir =new_datadir

새 클러스터 데이터 디렉토리; 환경 변수pgdatanew

-K
-link

새로 파일을 복사하는 대신 하드 링크 사용

-o 옵션
-old-options 옵션

옛날 옵션으로 직접 전달되는 옵션Postgres명령

-o 옵션
--new-options 옵션

옵션을 새로 전달할 수있는 옵션Postgres명령

-p Old_port_number
-old-port =Old_portnum

이전 클러스터 포트 번호; 환경 변수pgportold

-p new_port_number
--- 뉴 포트 =new_portnum

새 클러스터 포트 번호; 환경 변수pgportnew

-r
-retain

성공 후에도 SQL 및 로그 파일을 유지합니다

-u user_name
--user =user_name

클러스터의 슈퍼 사용자 이름; 환경 변수pguser

-v
-Versbose

장황 내부 로깅 활성화

-v
-버전

버전 정보 표시, 종료

-?
-h
-help

도움말 표시, 종료

usage

이것은 업그레이드를 수행하는 단계입니다.pg_upgrade:

  1. 선택적으로 이전 클러스터를 이동

    버전 별 설치를 사용하는 경우/opt/postgresql/9.1, 당신은 필요하지 않습니다

    설치 디렉토리가 버전 별이 아닌 경우/usr/local/pgsqlPostgreSQL설치. 일단PostgreSQL서버/usr/local/pgsql, 당신은 할 수 있습니다 :

    mv/usr/local/pgsql /usr/local/pgsql.old

    디렉토리의 이름을 바꾸려면

  2. 소스 설치의 경우 새로 구축하십시오

    새 PostgreSQL 소스를 빌드구성pg_upgrade확인PG_CONTROLDATA만들기

  3. 새 Postgresql Binaries 설치

    새 서버의 바이너리 및 지원 파일을 설치하십시오.

    소스 설치, 새 설치하려는 경우접두사변수 :

    gmake prefix =/usr/local/pgsql.new install
  4. pg_upgrade 및 pg_upgrade_support 설치

    설치pg_upgrade이진 및pg_upgrade_support새로운 도서관

  5. 새 PostgreSQL 클러스터 초기화

    새 클러스터 초기화initdb. 다시, 호환 사용initdb이전 클러스터와 일치하는 플래그.

  6. 사용자 정의 공유 객체 파일 설치

    pgcrypto.so, 출신 여부Contrib또는 다른 소스. 하다pgcrypto.sql

  7. 인증 조정

    pg_upgrade피어inpg_hba.conf또는 A 사용~/.pgpass파일 (참조섹션 31.15).

  8. 두 서버 중지

    두 데이터베이스 서버를 사용 중지했는지 확인하십시오

    PG_CTL -D /OPT/POSTGRESQL/8.4 정지

    또는 Windows에서 적절한 서비스 이름을 사용하여 :

    넷 스톱 Postgresql-8.4

    또는

    넷 스톱 pgsql-8.3 (PostgreSQL8.3 이상 다른 서비스 이름을 사용했습니다)
  9. runpg_upgrade

    항상 실행pg_upgrade새 서버의 바이너리,pg_upgrade사양이 필요합니다bin19444_19587

    링크 모드를 사용하면 업그레이드가 훨씬 빠릅니다.pg_upgrade -help전체 목록

    Windows 사용자의 경우 로그인해야합니다Postgres사용자를 설정하고 적절합니다

    runas /user : postgres "cmd.exe"

    그리고 런pg_upgrade인용 된 디렉토리 포함 (예 :

    pg_upgrade.exe

    일단 시작,pg_upgrade의지pg_upgrade낡은 경우에도 수표 만 수행합니다pg_upgrade수동 조정을 간략하게 설명합니다-link옵션-체크링크 모드 별 점검을 활성화합니다.pg_upgrade쓰기가 필요합니다

    분명히, 아무도 클러스터에 액세스하지 않아야합니다pg_upgrade서버 실행 기본값

    데이터베이스 스키마를 복원하는 동안 오류가 발생하는 경우pg_upgrade나가면 당신은 할 것입니다14 단계아래.pg_upgrade다시, 당신은 할 것입니다

  10. 복원pg_hba.conf

    수정 된 경우pg_hba.conf,Postgres.

  11. 업그레이드 후 처리

    업그레이드 후 처리가 필요한 경우 pg_upgrade

    psql-username postgres -파일 script.sql postgres

    스크립트를 순서대로 실행할 수 있으며 삭제할 수 있습니다.

    주의

    일반적으로 테이블에 액세스하는 것은 안전하지 않습니다

  12. 통계

    Optimizer 통계가 전송되지 않기 때문에pg_upgrade, 당신은 지시를받습니다

  13. 오래된 클러스터 삭제

    업그레이드에 만족하면 삭제할 수 있습니다.pg_upgrade완료. 이전 설치를 삭제할 수도 있습니다bin, 공유).

  14. 오래된 클러스터로 되돌아가는

    실행 후pg_upgrade,

    • 당신이 달렸다면pg_upgradewith-체크, 수정이 없었습니다

    • 당신이 달렸다면pg_upgradewith-link, 데이터 파일은입니다

    • 당신이 달렸다면pg_upgrade 없음 -link또는 새로운 것을 시작하지 않았습니다.OLD접미사가 추가되었습니다$ pgdata/global/pg_control. 재사용.OLD접미사$ pgdata/global/pg_control; 당신은 할 수 있습니다

노트

pg_upgrade지원하지 않습니다Reg*OID 참조 시스템 데이터 유형 :Regproc, Regrocedure, Regoper, Regoperator, RegConfigRegdictionary. (Regtype할 수 있습니다

모든 고장, 재건 및 Reindex 사례는에보고됩니다.pg_upgrade그들이 당신에게 영향을 미치는 경우

배포 테스트의 경우 이전의 스키마 전용 사본을 작성하십시오.

pre-를 업그레이드하는 경우PostgreSQL9.2 클러스터를 사용하는 클러스터pg_upgrade및 구성을 전달하십시오-d.

비 디폴트를 사용하는 이전 서버를 사용하는 경우pghostTO

로그-쉽 대기 서버 (섹션 25.2) 업그레이드 할 수 없습니다rsyncrsync섹션) 이전 대기 클러스터를 덮어 쓰는 것.

링크 모드를 사용하고 싶고 이전을 원하지 않는다면rsync서버가있는 동안 이전 클러스터의 더러운 사본을 작성하려면rsync변경 사항이있는 사본을 다시 업데이트하려면postmaster.pid, 문서화 된대로섹션.

PostgreSQL에서 업그레이드하는 제한 사항 8.3

업그레이드FromPostgreSQL 8.3에는 추가 제한 사항이 없습니다

  • a tsquery데이터 유형

  • 데이터 유형이름

그러한 열을 떨어 뜨려 업그레이드해야합니다

pg_upgrade가 작동하지 않으면ltreeContrib 모듈이 a

pg_upgrade는 다음과 같은 경우 테이블 재 구축이 필요합니다.

  • 사용자 열은 데이터 유형입니다TSVECTOR

pg_upgrade는 다시 명령이 필요합니다.

  • 인덱스는 유형 해시 또는 gin입니다.

  • 색인 사용bpchar_pattern_ops

또한 기본 DateTime 스토리지 형식은 정수로 변경되었습니다PostgreSQL8.3.-disable-integer-datetimes.

Windows 사용자의 경우 다른 정수로 인해 주목하십시오