이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 토토 베이버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

사설 토토

이름

사설 토토 -- 업그레이드 a포스트그레SQL서버 인스턴스

시놉시스

사설 토토 -b oldbindir -B newbindir -d olddatadir -D newdatadir [옵션...]

설명

사설 토토(이전 명칭pg_migrator)는 다음에 저장된 데이터를 허용합니다.포스트그레SQL데이터 파일이 나중에 업그레이드됨포스트그레SQL일반적으로 필요한 데이터 덤프/재로드가 없는 주요 버전 주요 버전 업그레이드(예: 8.4.7부터 현재 메이저까지 의 출시포스트그레SQL. 그렇지 않다 마이너 버전 업그레이드에 필요합니다. 9.0.1에서 9.0.4로.

주요 PostgreSQL 릴리스에는 정기적으로 새로운 기능이 추가됩니다. 시스템 테이블의 레이아웃을 변경하지만 내부 데이터는 저장 형식은 거의 변경되지 않습니다.사설 토토이 사실을 사용하여 빠른 수행을 수행합니다. 새로운 시스템 테이블을 생성하고 기존 테이블을 재사용하여 업그레이드 사용자 데이터 파일. 향후 주요 릴리스에서 데이터가 변경되는 경우 이전 데이터 형식을 읽을 수 없게 만드는 방식으로 저장 형식을 변경합니다.사설 토토다음에는 사용할 수 없습니다. 그런 업그레이드. (커뮤니티에서는 이러한 행위를 방지하려고 노력할 것입니다. 상황.)

사설 토토최선을 다합니다 이전 클러스터와 새 클러스터가 바이너리 호환되는지 확인하세요. ~에 의해 32/64비트를 포함하여 호환 가능한 컴파일 시간 설정 확인 바이너리. 모든 외부 모듈도 바이너리여야 합니다. 호환 가능하지만 확인할 수는 없습니다.사설 토토.

사설 토토는 8.3.X 이상에서 현재 버전으로의 업그레이드를 지원합니다. 주요 릴리스PostgreSQL, 스냅샷 및 알파 릴리스를 포함합니다.

옵션

사설 토토수락합니다 다음 명령줄 인수:

-b old_bindir
--old-bindir=old_bindir

이전 PostgreSQL 실행 가능 디렉토리; 환경 변수PGBINOLD

-B new_bindir
--new-bindir=new_bindir

새로운 PostgreSQL 실행 가능 디렉토리; 환경 변수PGBINNEW

-c
--확인

클러스터만 확인하고 데이터는 변경하지 마세요.

-d old_datadir
--old-datadir=old_datadir

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

-D new_datadir
--new-datadir=new_datadir

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

-j
--작업

사용할 동시 프로세스 또는 스레드 수

-k
--링크

새 클러스터에 파일을 복사하는 대신 하드 링크 사용

-o 옵션
--이전 옵션 옵션

이전 버전으로 직접 전달되는 옵션포스트그레스명령

-O 옵션
--새로운 옵션 옵션

새 항목에 직접 전달되는 옵션포스트그레스명령

-p old_port_number
--old-port=old_portnum

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

-P new_port_number
--새 포트=new_portnum

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

-r
--유지

성공적인 완료 후에도 SQL 및 로그 파일 유지

-u 사용자_이름
--사용자=사용자_이름

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

-v
--상세

자세한 내부 로깅 활성화

-V
--버전

버전 정보를 표시한 후 종료

-?
-h
--도움말

도움말을 표시한 후 종료

사용법

다음은 업그레이드를 수행하는 단계입니다.사설 토토:

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

    버전별 설치 디렉토리를 사용하는 경우, 예:/opt/PostgreSQL/9.1, 그럴 필요는 없습니다. 이전 클러스터를 이동합니다. 그래픽 설치 프로그램은 모두 사용합니다. 버전별 설치 디렉터리입니다.

    설치 디렉토리가 특정 버전이 아닌 경우, 예:/usr/local/pgsql이동이 필요합니다 방해하지 않도록 현재 PostgreSQL 설치 디렉터리 새로운 것과 함께PostgreSQL설치. 일단 현재PostgreSQL서버가 종료되었으므로 다음을 수행하는 것이 안전합니다. PostgreSQL 설치 디렉터리의 이름을 바꿉니다. 오래된 것으로 가정 디렉토리는/usr/local/pgsql, 할 수 있어요 하다:

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

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

  2. 소스 설치의 경우 새 버전을 빌드하세요.

    다음을 사용하여 새로운 PostgreSQL 소스를 구축하세요.구성이전 버전과 호환되는 플래그 무리.사설 토토확인하겠습니다pg_controldata모든 설정을 확인하려면 업그레이드를 시작하기 전에 호환됩니다.

  3. 새 PostgreSQL 바이너리 설치

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

    소스 설치의 경우, 새 서버를 맞춤 위치를 사용하려면접두사변수:

    gmake 접두사=/usr/local/pgsql.new 설치
  4. 사설 토토 및 사설 토토_support 설치

    설치사설 토토바이너리 그리고사설 토토_support도서관 새로운 PostgreSQL 설치.

  5. 새 PostgreSQL 클러스터 초기화

    다음을 사용하여 새 클러스터를 초기화하십시오.initdb. 다시 말하지만, Compatible을 사용하세요.initdb이전 클러스터와 일치하는 플래그입니다. 많은 사전 빌드된 설치 프로그램은 이 단계를 자동으로 수행합니다. 그럴 필요는 없다 새 클러스터를 시작합니다.

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

    이전 버전에서 사용되는 사용자 정의 공유 개체 파일(또는 DLL)을 설치합니다. 새 클러스터로 클러스터링합니다. 예:pgcrypto.so, 출신 여부기여또는 다른 소스. 설치하지 마십시오 스키마 정의, 예:pgcrypto.sql, 이전 클러스터에서 업그레이드될 것이기 때문입니다.

  7. 인증 조정

    사설 토토이전 및 새 서버를 여러 번 사용하므로 인증을 설정해야 할 수도 있습니다. 에게동료pg_hba.conf또는 다음을 사용하세요~/.pgpass파일(참조섹션 31.15).

  8. 두 서버 모두 중지

    Unix에서 두 데이터베이스 서버가 모두 중지되었는지 확인하세요. 예:

    pg_ctl -D /opt/PostgreSQL/8.4 중지
    pg_ctl -D /opt/PostgreSQL/9.0 중지

    또는 Windows에서는 적절한 서비스 이름을 사용합니다.

    NET STOP postgresql-8.4
    NET STOP postgresql-9.0

    또는

    NET STOP pgsql-8.3 (포스트그레SQL8.3 이하에서는 다른 서비스 이름을 사용함)
  9. 실행사설 토토

    항상 실행사설 토토이전 서버가 아닌 새 서버의 바이너리.사설 토토다음의 사양이 필요합니다. 이전 및 새 클러스터의 데이터 및 실행 파일() 디렉토리. 사용자를 지정할 수도 있습니다. 포트 값 및 데이터를 복사하는 대신 연결하려는지 여부 (기본값).

    링크 모드를 사용하면 업그레이드가 훨씬 빨라집니다(파일 없음) 복사) 디스크 공간을 덜 사용하지만 다음을 수행할 수는 없습니다. 이후 새 클러스터를 시작하면 이전 클러스터에 액세스할 수 있습니다. 치받이. 링크 모드에서는 이전 클러스터 데이터와 새 클러스터 데이터도 필요합니다. 디렉터리는 동일한 파일 시스템에 있어야 합니다. (테이블스페이스 및pg_xlog다른 파일 시스템에 있을 수 있습니다.) 참조사설 토토 --help전체 목록 보기 옵션.

    --작업옵션은 다중 CPU를 허용합니다 파일 복사/링크, 덤프 및 링크에 사용되는 코어 데이터베이스 스키마를 병렬로 다시 로드합니다. 시작하기 좋은 곳은 CPU 코어 및 테이블스페이스 수의 최대치입니다. 이 옵션은 다중 데이터베이스 서버 업그레이드 시간을 대폭 단축 다중 프로세서 컴퓨터에서 실행 중입니다.

    Windows 사용자의 경우 관리자 계정으로 로그인해야 합니다. 계정을 만든 다음 셸을 시작합니다.포스트그레스사용자를 선택하고 적절한 경로를 설정하세요:

    RUNAS /USER:postgres "CMD.EXE"
    설정 경로=%PATH%;C:\Program Files\PostgreSQL\9.0\bin;

    그런 다음 실행사설 토토와 함께 인용된 디렉토리, 예:

    사설 토토.exe
            --old-datadir "C:/Program Files/PostgreSQL/8.4/data"
            --new-datadir "C:/Program Files/PostgreSQL/9.0/data"
            --old-bindir "C:/Program Files/PostgreSQL/8.4/bin"
            --new-bindir "C:/Program Files/PostgreSQL/9.0/bin"

    일단 시작하면,사설 토토확인하겠습니다 두 클러스터가 호환되는 경우 업그레이드를 수행합니다. 당신은 할 수 있습니다 사용사설 토토 --check만 수행하려면 이전 서버가 아직 실행 중이더라도 확인합니다.사설 토토 --check또한 모든 매뉴얼의 개요를 설명합니다. 업그레이드 후에 조정해야 할 사항이 있습니다. 만약 당신이 링크 모드를 사용하려면 다음을 사용해야 합니다.--링크옵션--확인에 링크 모드별 검사를 활성화합니다.사설 토토현재 쓰기 권한이 필요합니다. 예배 규칙서.

    당연히, 작업 중에는 누구도 클러스터에 접근해서는 안 됩니다. 치받이.사설 토토기본값은 의도하지 않은 클라이언트를 방지하기 위해 포트 50432에서 서버 실행 사이. 두 클러스터 모두에 동일한 포트 번호를 사용할 수 있습니다. 이전 클러스터와 새 클러스터는 동일하지 않기 때문에 업그레이드를 수행할 때 동시에 실행됩니다. 그러나 오래된 운행을 확인할 때 서버의 경우 이전 포트 번호와 새 포트 번호는 달라야 합니다.

    데이터베이스 스키마를 복원하는 동안 오류가 발생하는 경우,사설 토토종료되며 다음 작업을 수행해야 합니다. 설명된 대로 이전 클러스터로 되돌립니다.14단계아래. 시도하다사설 토토다시 수정해야 합니다. 이전 클러스터이므로 사설 토토 스키마 복원이 성공합니다. 만약 문제는 contrib 모듈입니다. Contrib 모듈을 제거해야 할 수도 있습니다. 이전 클러스터의 contrib 모듈을 새 클러스터에 설치합니다. 업그레이드 후 클러스터, 모듈이 사용되지 않는다고 가정 사용자 데이터를 저장합니다.

  10. 복원pg_hba.conf

    수정한 경우pg_hba.conf, 복원 원래 설정입니다. 다른 조정이 필요할 수도 있습니다. 이전 클러스터와 일치하도록 새 클러스터의 구성 파일, 예를 들어postgresql.conf.

  11. 업그레이드 후 처리

    업그레이드 후 처리가 필요한 경우 사설 토토는 완료되면 경고를 발행합니다. 또한 스크립트 파일도 생성됩니다. 관리자가 실행해야 합니다. 스크립트 파일은 업그레이드 후 처리가 필요한 각 데이터베이스에 연결합니다. 각 스크립트는 다음을 사용하여 실행되어야 합니다.

    psql --사용자 이름 postgres --file script.sql postgres

    스크립트는 어떤 순서로든 실행될 수 있으며 일단 삭제될 수 있습니다. 실행되었습니다.

    주의

    일반적으로 재구축에서 참조된 테이블에 액세스하는 것은 안전하지 않습니다. 재구축 스크립트 실행이 완료될 때까지 스크립트를 실행합니다. 그렇게 해서 잘못된 결과나 성능 저하가 발생할 수 있습니다. 테이블은 아님 재구축 스크립트에서 참조된 항목은 즉시 액세스할 수 있습니다.

  12. 통계

    최적화기 통계는 다음에 의해 전송되지 않기 때문입니다.사설 토토, 명령을 실행하라는 메시지가 표시됩니다. 업그레이드가 끝나면 해당 정보를 다시 생성합니다. 당신은 아마도 새 클러스터와 일치하도록 연결 매개변수를 설정해야 합니다.

  13. 이전 클러스터 삭제

    업그레이드에 만족하면 이전 버전을 삭제할 수 있습니다. 언급된 스크립트를 실행하여 클러스터의 데이터 디렉터리를 삭제합니다.사설 토토완료되었습니다. 삭제할 수도 있습니다 이전 설치 디렉터리(예:, 공유).

  14. 이전 클러스터로 되돌리는 중

    만약, 실행 후사설 토토당신이 원하잖아요 이전 클러스터로 되돌리려면 몇 가지 옵션이 있습니다.

    • 당신이 달렸다면사설 토토--확인, 이전 버전은 수정되지 않았습니다. 클러스터를 만들어 언제든지 재사용할 수 있습니다.

    • 당신이 달렸다면사설 토토함께--링크, 데이터 파일은 이전 파일과 새로운 클러스터. 새 클러스터를 시작한 경우 새 서버에는 해당 공유 파일에 기록되었으며 이전 파일을 사용하는 것은 안전하지 않습니다. 무리.

    • 당신이 달렸다면사설 토토 없이 --링크또는 새 서버를 시작하지 않았습니다. 이전 서버는 연결이 시작된 경우 a를 제외하고는 클러스터가 수정되지 않았습니다..old접미사가 추가됨$PGDATA/글로벌/pg_control. 오래된 것을 재사용하려면 클러스터, 아마도 제거 가능.old접미사 에서$PGDATA/글로벌/pg_control; 당신은 할 수 그런 다음 이전 클러스터를 다시 시작합니다.

참고

사설 토토지원하지 않음 이를 포함하는 데이터베이스 업그레이드reg*OID 참조 시스템 데이터 유형:regproc, regprocedure, regoper, regoperator, regconfig, 그리고regdictionary. (regtype업그레이드할 수 있습니다.)

모든 실패, 재구축 및 재색인 사례는 다음에 의해 보고됩니다.사설 토토그것이 당신에게 영향을 미치는 경우 설치; 테이블과 인덱스를 재구축하기 위한 업그레이드 후 스크립트 자동으로 생성됩니다. 자동화하려는 경우 많은 클러스터를 업그레이드하려면 다음과 같은 클러스터를 찾아야 합니다. 동일한 데이터베이스 스키마에는 동일한 업그레이드 후 단계가 필요합니다. 모든 클러스터 업그레이드; 이는 업그레이드 후 단계가 다음과 같기 때문입니다. 사용자 데이터가 아닌 데이터베이스 스키마를 기반으로 합니다.

배포 테스트를 위해 이전 버전의 스키마 전용 복사본을 생성하십시오. 클러스터를 만들고, 더미 데이터를 삽입하고, 업그레이드하세요.

사전 버전을 업그레이드하는 경우-PostgreSQL9.2 클러스터는 구성 파일 전용 디렉터리인 경우 실제 데이터를 전달해야 합니다. 디렉토리 위치사설 토토, 구성 디렉터리 위치를 서버에 전달합니다. 예:-d /실제 데이터 디렉토리 -o '-D /구성 디렉터리'.

기본값이 아닌 서버를 사용하는 9.1 이전 서버를 사용하는 경우 Unix 도메인 소켓 디렉토리 또는 기본값과 다른 기본값 새 클러스터의 기본값, 설정PGHOST에 이전 서버의 소켓 위치를 가리킵니다. (이것은 관련이 없습니다 윈도우.)

로그 전달 대기 서버(섹션 25.2)을(를) 업그레이드할 수 없습니다. 서버는 쓰기를 허용해야 합니다. 가장 간단한 방법은 업그레이드하는 것입니다. 기본 및 사용rsync재건축하기 위해 대기. 달릴 수 있다rsync그 동안 기본이 다운되었거나 기본 백업의 일부입니다(섹션 24.3.2) 이전 대기 클러스터를 덮어씁니다.

링크 모드를 사용하고 싶고 이전 모드를 원하지 않는 경우 새 클러스터가 시작될 때 수정될 클러스터, 복사본 만들기 이전 클러스터를 링크 모드에서 업그레이드합니다. 유효하게 만들려면 이전 클러스터의 복사본, 사용rsync에 서버가 실행되는 동안 이전 클러스터의 더티 복사본을 생성합니다. 그런 다음 이전 서버를 종료하고 실행하십시오.rsync다시 변경 사항이 있는 복사본을 업데이트하려면 일관되게 만드십시오. 일부 파일을 제외하고 싶을 수도 있습니다(예:postmaster.pid, 문서에 설명된 대로섹션 24.3.3.

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

업그레이드 중fromPostgreSQL 8.3에는 다음 경우에 존재하지 않는 추가 제한 사항이 있습니다. 이후 PostgreSQL 릴리스에서 업그레이드. 예를 들어, 사설 토토 사용자 열이 정의된 경우 8.3에서 업그레이드할 수 없습니다. 처럼:

  • a tsquery데이터 유형

  • 데이터 유형이름이것은 처음이 아닙니다 열

그러한 열을 삭제하고 수동으로 업그레이드해야 합니다.

사설 토토는 다음과 같은 경우에는 작동하지 않습니다.트리contrib 모듈이 데이터베이스에 설치되어 있습니다.

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

  • 사용자 열은 데이터 유형입니다.ts벡터

사설 토토는 다음과 같은 경우 재색인이 필요합니다.

  • 색인은 해시 또는 GIN 유형입니다.

  • 색인이 사용하는 것bpchar_pattern_ops

또한 기본 날짜/시간 저장 형식이 정수로 변경되었습니다. 후에PostgreSQL8.3. 사설 토토 이전 및 새 항목에서 사용된 날짜/시간 저장 형식을 확인합니다. 클러스터가 일치합니다. 새 클러스터가 다음을 사용하여 구축되었는지 확인하세요. 플래그 구성--비활성화-정수-날짜 시간.

Windows 사용자의 경우 정수 날짜 시간이 다르기 때문에 주의하세요. 그래픽 설치 프로그램과 MSI 설치 프로그램에서 사용하는 설정입니다. 설치 프로그램 버전 8.3에서만 업그레이드할 수 있습니다. 설치 프로그램 배포판 버전 8.4 이상으로 배포됩니다. MSI 설치 프로그램에서 새 설치 프로그램으로 업그레이드할 수 없습니다. 그래픽 설치 프로그램.