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

F.36. 토토 꽁 머니

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

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

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

F.36.1. 지원되는 버전

토토 꽁 머니는 8.3.X 이상에서 현재 주요 릴리스PostgreSQL(스냅샷 및 알파 포함) 릴리스합니다.

F.36.2.토토 꽁 머니옵션

토토 꽁 머니수락합니다 다음 명령줄 인수:

-b old_bindir
--old-bindir=old_bindir

이전 클러스터 실행 가능 디렉토리; 환경 변하기 쉬운OLDBINDIR

-B new_bindir
--new-bindir=new_bindir

새 클러스터 실행 가능 디렉토리; 환경 변하기 쉬운NEWBINDIR

-c
--확인

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

-d old_datadir
--old-datadir=old_datadir

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

-D new_datadir
--new-datadir=new_datadir

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

-g
--디버그

디버깅 활성화

-G debug_filename
--디버그파일=debug_filename

디버깅 활동을 파일로 출력

-k
--링크

파일을 새 폴더에 복사하는 대신 하드 링크를 사용하세요. 무리

-l log_filename
--로그파일=log_filename

세션 활동을 파일에 기록

-p old_port_number
--old-port=old_portnum

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

-P new_port_number
--새 포트=new_portnum

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

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

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

-v
--상세

자세한 출력 활성화

-V
--버전

버전 정보를 표시한 후 종료

-?
-h
--도움말

도움말을 표시한 후 종료

F.36.3. 업그레이드 단계

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

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

    설치 디렉토리가 다음이 아닌 경우 버전별(예:/usr/local/pgsql이동이 필요합니다 현재 PostgreSQL 설치 디렉터리이므로 새로운 것을 방해하다PostgreSQL설치. 일단 현재의PostgreSQL서버가 종료되었습니다. PostgreSQL 이름을 바꾸는 것이 안전합니다. 설치 디렉토리; 이전 디렉토리가 다음과 같다고 가정합니다./usr/local/pgsql, 할 수 있어요 하다:

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

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

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

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

  3. 새 PostgreSQL 바이너리 설치

    새 서버의 바이너리와 지원 파일을 설치하십시오. 두 클러스터 모두에 동일한 포트 번호를 사용할 수 있습니다. 일반적으로 5432입니다. 이전 클러스터와 새 클러스터는 그렇지 않기 때문입니다. 동시에 실행됩니다.

    소스 설치의 경우 새 버전을 설치하려는 경우 사용자 정의 위치에 있는 서버를 사용하려면접두사변수:

    gmake 접두사=/usr/local/pgsql.new 설치
  4. 토토 꽁 머니를 설치하고 토토 꽁 머니_support

    설치토토 꽁 머니바이너리 및토토 꽁 머니_support도서관에 새로운 PostgreSQL 클러스터.

  5. 새 PostgreSQL 클러스터 초기화

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

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

    사용된 사용자 정의 공유 개체 파일(또는 DLL)을 설치합니다. 이전 클러스터를 새 클러스터로 이동합니다. 예:pgcrypto.so, 출신 여부기여또는 다른 소스. 스키마 정의를 설치하지 마십시오. 예:pgcrypto.sql, 왜냐면 이것들은 이전 클러스터에서 업그레이드되었습니다.

  7. 인증 조정

    토토 꽁 머니다음에 연결됩니다 기존 서버와 새 서버를 여러 번 인증을 설정하려면동료inpg_hba.conf또는 다음을 사용하세요~/.pgpass파일(참조섹션 31.14).

  8. 두 서버 모두 중지

    두 데이터베이스 서버 모두 사용이 중지되었는지 확인하세요. 유닉스, 예:

    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 (PostgreSQL8.3 이하에서는 다른 서비스 이름을 사용함)
  9. 실행토토 꽁 머니

    항상 실행토토 꽁 머니새 서버의 바이너리, 예전 것이 아닙니다.토토 꽁 머니다음이 필요합니다. 이전 클러스터와 새 클러스터의 데이터 사양 및 실행 파일() 디렉토리. 사용자 및 포트 값을 지정할 수도 있습니다. 데이터를 복사하는 대신 연결하기를 원합니다( 기본).

    링크 모드를 사용하면 업그레이드 속도가 훨씬 빨라집니다 (파일 복사 없음) 그러나 액세스할 수는 없습니다. 이후에 새 클러스터를 시작하면 이전 클러스터 치받이. 링크 모드에서는 이전 버전과 새 버전도 필요합니다. 클러스터 데이터 디렉터리는 동일한 파일 시스템에 있어야 합니다. 보다토토 꽁 머니 --help전체 옵션 목록입니다.

    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"

    시작하면,토토 꽁 머니할 것이다 두 클러스터가 호환되는지 확인한 후 다음을 수행하십시오. 치받이. 당신은 사용할 수 있습니다토토 꽁 머니 --확인하다오래된 경우에도 검사만 수행합니다. 서버가 아직 실행 중입니다.토토 꽁 머니 --확인하다또한 수동 조정에 대한 개요를 제공합니다. 업그레이드 후에 만들어야 합니다.토토 꽁 머니다음에 쓰기 권한이 필요합니다. 현재 디렉토리.

    분명히, 누구도 클러스터에 접근해서는 안 됩니다 업그레이드하는 동안. 기본이 아닌 포트 사용을 고려하세요. 번호(예: 50432, 이전 클러스터와 새 클러스터에서 피해야 할 사항 업그레이드 중에 의도하지 않은 클라이언트 연결이 발생했습니다.

    데이터베이스 복원 중 오류가 발생하는 경우 개요,토토 꽁 머니종료되며 설명된 대로 이전 클러스터로 되돌려야 합니다.단계 14아래. 시도하다토토 꽁 머니다시 말하지만, 이전 클러스터를 수정해야 합니다. 토토 꽁 머니 스키마 복원이 성공했습니다. 문제가 다음과 같은 경우 contrib 모듈을 사용하려면 contrib을 제거해야 할 수도 있습니다. 이전 클러스터의 모듈을 새 클러스터에 설치합니다. 업그레이드 후 클러스터, 모듈이 그렇지 않다고 가정 사용자 데이터를 저장하는 데 사용됩니다.

  10. 복원pg_hba.conf

    수정한 경우pg_hba.conf, 원래 설정으로 복원하세요.

  11. 업그레이드 후 처리

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

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

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

    주의

    일반적으로 테이블에 접근하는 것은 안전하지 않습니다. 재구축될 때까지 재구축 스크립트에서 참조됨 스크립트 실행이 완료되었습니다. 그렇게 하면 가능하다 잘못된 결과가 나오거나 성능이 저하됩니다. 재구축 스크립트에서 참조되지 않는 테이블은 다음과 같습니다. 즉시 액세스됩니다.

  12. 통계

    최적화기 통계는 다음에 의해 전송되지 않기 때문입니다.토토 꽁 머니, 당신은 다시 생성하라는 명령을 실행하라는 지시를 받았습니다. 업그레이드가 끝나면 정보를 제공합니다.

  13. 이전 클러스터 삭제

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

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

    만약, 실행 후토토 꽁 머니, 이전 클러스터로 되돌리려는 경우 여러 가지 방법이 있습니다. 옵션:

    • 당신이 달렸다면토토 꽁 머니--확인, 아니요 이전 클러스터가 수정되었으며 언제든지 다시 사용할 수 있습니다.

    • 당신이 달렸다면토토 꽁 머니--링크, 데이터 파일 이전 클러스터와 새 클러스터 간에 공유됩니다. 당신이 새 클러스터를 시작했고 새 서버가 작성했습니다. 해당 공유 파일에 저장되어 있으며 이전 파일을 사용하는 것은 안전하지 않습니다. 무리.

    • 당신이 달렸다면토토 꽁 머니 없이 --링크또는 시작하지 않았습니다. 새 서버, 이전 클러스터는 다음을 제외하고 수정되지 않았습니다. 그건.old접미사: 에 추가됨$PGDATA/글로벌/pg_control그리고 아마도 테이블스페이스 디렉토리. 이전 클러스터를 재사용하려면 제거하다.old접미사$PGDATA/글로벌/pg_control. 8.4 이하로 업그레이드하는 경우 업그레이드로 생성된 테이블스페이스 디렉토리 및 제거하다.old접미사 테이블스페이스 디렉토리 이름; 그럼 다시 시작해도 돼 이전 클러스터.

F.36.4. 업그레이드의 제한사항에서포스트그레SQL 8.3

PostgreSQL 8.3에서 업그레이드하면 추가 제한사항이 있습니다. 이후 PostgreSQL 릴리스에서 업그레이드할 때는 존재하지 않습니다. 을 위한 예를 들어 토토 꽁 머니는 다음과 같은 경우 8.3에서 업그레이드할 때 작동하지 않습니다. 사용자 열은 다음과 같이 정의됩니다.

  • a tsquery데이터 유형

  • 데이터 유형이름그리고 그렇지 않습니다 첫 번째 열

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

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

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

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

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

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

  • 색인이 사용하는 것bpchar_pattern_ops

또한 기본 날짜/시간 저장 형식이 정수로 변경되었습니다. 후에포스트그레SQL8.3. 토토 꽁 머니는 다음에서 사용되는 날짜/시간 저장 형식을 확인합니다. 이전 클러스터와 새 클러스터가 일치합니다. 새 클러스터가 다음과 같은지 확인하세요. 구성 플래그로 빌드됨--비활성화-정수-날짜 시간.

Windows 사용자의 경우 정수가 다르기 때문에 주의하세요. 원클릭 설치 프로그램과 MSI에서 사용되는 날짜/시간 설정 설치 프로그램 버전 8.3에서만 업그레이드가 가능합니다. 버전 8.4 이상으로 원클릭 배포 원클릭 배포. 다음 버전에서는 업그레이드가 불가능합니다. MSI 설치 프로그램을 원클릭 설치 프로그램으로 전환합니다.

F.36.5. 참고

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

모든 실패, 재구축 및 재색인 사례는 다음에 의해 보고됩니다.토토 꽁 머니그것이 당신에게 영향을 미치는 경우 설치; 테이블을 재구축하기 위한 업그레이드 후 스크립트 및 색인이 자동으로 생성됩니다.

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

링크 모드를 사용하고 싶고 이전 모드를 원하지 않는 경우 새 클러스터가 시작될 때 수정될 클러스터를 만듭니다. 이전 클러스터의 복사본을 만들고 링크 모드로 업그레이드합니다. 에게 이전 클러스터의 유효한 복사본을 만들고 다음을 사용하세요.rsync이전 클러스터의 더티 복사본을 생성합니다. 서버가 실행되는 동안 이전 서버를 종료하고 달리다rsync다시 사본을 업데이트하려면 일관성을 유지하기 위해 변경사항을 적용합니다.