윈 토토 : 문서 : 9.4 : 윈 토토 | |||
---|---|---|---|
배트맨 토토 PostgreSQL : 문서 : 9.4 : PG_TEST_TIMEING | PostgreSQL : 문서 : 9.4 : 서버 응용 토토 핫 | postgresql : 문서 : 9.4 : 와이즈 토토 |
와이즈 토토(이전에 호출pg_migrator)에 저장된 데이터가를 허용합니다.PostgreSQL나중에 업그레이드 할 데이터 파일postgresql주요 버전 업그레이드에 일반적으로 필요한 데이터 덤프/다시로드가없는 주요 버전 (예 : 8.4.7에서 현재의 주요 릴리스까지PostgreSQL. 사소한 버전 업그레이드에는 필요하지 않습니다 (예 : 9.0.1 ~ 9.0.4.
주요 PostgreSQL은 시스템 테이블의 레이아웃을 종종 변경하는 새로운 기능을 정기적으로 추가하지만 내부 데이터 저장 형식은 거의 변경되지 않습니다.와이즈 토토이 사실을 사용하여 새 시스템 테이블을 만들고 기존 사용자 데이터 파일을 재사용하여 빠른 업그레이드를 수행합니다. 미래의 주요 릴리스가 이전 데이터 형식을 읽을 수없는 방식으로 데이터 저장 형식을 변경하면와이즈 토토그러한 업그레이드에는 사용할 수 없습니다. (커뮤니티는 그러한 상황을 피하려고 시도 할 것입니다.)
와이즈 토토구형 클러스터와 새 클러스터가 이진과 호환되는지 확인하기 위해 최선을 다합니다 (예 : 32/64 비트 바이너리를 포함하여 호환 컴파일 시간 설정을 확인함으로써. 모든 외부 모듈도 이진 호환되는 것이 중요하지만을 확인할 수는 없습니다.와이즈 토토.
와이즈 토토는 8.3.x에서 현재의 주요 릴리스까지의 업그레이드를 지원합니다.postgresql, 스냅 샷 및 알파 릴리스를 포함하여.
와이즈 토토다음 명령 줄 인수를 수락합니다 :
기존 PostgreSQL 실행 디렉토리; 환경 변수pgbinold
새로운 PostgreSQL 실행 디렉토리; 환경 변수pgbinnew
클러스터 만 확인하고 데이터를 변경하지 마십시오
이전 클러스터 데이터 디렉토리; 환경 변수pgdataold
새 클러스터 데이터 디렉토리; 환경 변수pgdatanew
사용할 동시 프로세스 또는 스레드 수
새 클러스터에 파일을 복사하는 대신 하드 링크 사용
구식으로 직접 전달되는 옵션Postgres명령
옵션을 새로운 사람에게 직접 전달할 옵션Postgres명령
이전 클러스터 포트 번호; 환경 변수pgportold
새 클러스터 포트 번호; 환경 변수pgportnew
성공적인 완료 후에도 SQL 및 로그 파일 유지
클러스터의 슈퍼 사용자 이름; 환경 변수pguser
장황 내부 로깅 활성화
버전 정보 표시, 종료
도움말 표시 다음 종료
이것은 업그레이드를 수행하는 단계입니다.와이즈 토토:
선택적으로 이전 클러스터를 이동
버전 별 설치 디렉토리를 사용하는 경우 (예 :/opt/postgresql/9.1, 이전 클러스터를 이동할 필요가 없습니다. 그래픽 설치자는 모두 버전 별 설치 디렉토리를 사용합니다.
설치 디렉토리가 버전 별이 아닌 경우 (예 :/usr/local/pgsql, 현재 PostgreSQL 설치 디렉토리를 이동하여 새로운 것을 방해하지 않도록해야합니다PostgreSQL설치. 일단 현재PostgreSQL서버가 종료되면 PostgreSQL 설치 디렉토리의 이름을 바꾸는 것이 안전합니다. 이전 디렉토리가라고 가정합니다./usr/local/pgsql, 당신은 할 수 있습니다 :
mv/usr/local/pgsql /usr/local/pgsql.old
디렉토리의 이름을 바꾸려면
소스 설치의 경우 새 버전을 빌드
|구성이전 클러스터와 호환되는 플래그.와이즈 토토확인PG_CONTROLDATA업그레이드를 시작하기 전에 모든 설정이 호환되도록합니다.
새 Postgresql Binaries 설치
새 서버의 바이너리 및 지원 파일을 설치하십시오.
소스 설치의 경우, 사용자 지정 위치에 새 서버를 설치하려면 사용하십시오.prefix변수 :
접두사 만들기 =/usr/local/pgsql.new install
와이즈 토토 및 와이즈 토토_support 설치
설치와이즈 토토이진 및와이즈 토토_support새로운 PostgreSQL 설치의 라이브러리.
새 PostgreSQL 클러스터 초기화
|를 사용하여 새 클러스터 초기화initdb. 다시, 호환 사용initdb이전 클러스터와 일치하는 플래그. 많은 미리 빌드 설치 업체 가이 단계를 자동으로 수행합니다. 새 클러스터를 시작할 필요가 없습니다.
사용자 정의 공유 객체 파일 설치
이전 클러스터에서 사용하는 사용자 정의 공유 객체 파일 (또는 DLL)을 새 클러스터에 설치합니다 (예 :pgcrypto.so, 출신 여부Contrib또는 다른 소스. 스키마 정의를 설치하지 마십시오 (예 :확장 생성 pgcrypto, 이들은 이전 클러스터에서 업그레이드되기 때문입니다. 또한 모든 맞춤형 전체 텍스트 검색 파일 (사전, 동의어, 동의어 사전, 중지 단어)도 새 클러스터에 복사해야합니다.
인증 조정
와이즈 토토이전 및 새 서버에 여러 번 연결되므로 인증을 설정할 수 있습니다.피어inpg_hba.conf또는 A 사용~/.pgpass파일 (참조토토 캔 : 문서 : 9.4 : 암호 파일).
서버 중지
두 데이터베이스 서버 모두 UNIX에서 사용이 중지되는지 확인하십시오 (예 :
PG_CTL -D /OPT/POSTGRESQL/8.4 정지 pg_ctl -d /opt/postgresql/9.0 정지
또는 Windows에서 적절한 서비스 이름을 사용하여 :
넷 스톱 PostgreSQL-8.4 Net Stop Postgresql-9.0
또는
NET STOP PGSQL-8.3 (PostgreSQL8.3 이상 다른 서비스 이름을 사용했습니다)
run와이즈 토토
항상 실행와이즈 토토이전 서버가 아닌 새 서버의 바이너리.와이즈 토토구형 및 새 클러스터의 데이터 및 실행 파일의 사양이 필요합니다 (bin) 디렉토리. 사용자 및 포트 값을 지정할 수도 있고 복사 된 대신 데이터를 연결 하려는지 여부 (기본값)..
링크 모드를 사용하는 경우 업그레이드가 훨씬 빠르며 (파일 복사 없음) 디스크 공간을 적게 사용하지만 업그레이드 후 새 클러스터를 시작하면 이전 클러스터에 액세스 할 수 없습니다. 링크 모드는 또한 이전 및 새 클러스터 데이터 디렉토리가 동일한 파일 시스템에 있어야합니다. (테이블 스페이스 및PG_XLOG다른 파일 시스템에있을 수 있습니다.) 참조와이즈 토토 -help전체 옵션 목록은
the-Jobs옵션은 여러 CPU 코어를 파일을 복사/링크하고 데이터베이스 스키마를 병렬로 덤프 및 다시로드하는 데 사용할 수 있습니다. 시작하기에 좋은 곳은 CPU 코어 및 테이블 스페이스 수의 최대입니다. 이 옵션은 멀티 프로세서 컴퓨터에서 실행되는 다중 대사 서버를 업그레이드하는 시간을 극적으로 줄일 수 있습니다.
Windows 사용자의 경우 관리 계정에 로그인 한 다음 쉘을로 시작해야합니다.Postgres사용자 및 적절한 경로를 설정하십시오 :
runas /user : postgres "cmd.exe" set path =%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업그레이드 후해야 할 수동 조정을 간략하게 설명합니다. 링크 모드를 사용하려면을 사용해야합니다.-link옵션-체크링크 모드 별 확인을 활성화합니다.와이즈 토토현재 디렉토리에서 쓰기 권한이 필요합니다.
분명히 업그레이드하는 동안 아무도 클러스터에 액세스하지 않아야합니다.와이즈 토토의도하지 않은 클라이언트 연결을 피하기 위해 포트 50432의 서버 실행 기본값. 기존 클러스터와 새 클러스터가 동시에 실행되지 않기 때문에 업그레이드 할 때 두 클러스터에 동일한 포트 번호를 사용할 수 있습니다. 그러나 이전 실행 서버를 확인할 때는 이전 및 새 포트 번호가 달라야합니다.
데이터베이스 스키마를 복원하는 동안 오류가 발생하는 경우와이즈 토토종료하면 rember.14 단계아래. 시도하려면와이즈 토토다시, 와이즈 토토 스키마 복원이 성공할 수 있도록 이전 클러스터를 수정해야합니다. 문제가 Contrib 모듈 인 경우 이전 클러스터에서 Contrib 모듈을 제거하고 업그레이드 후 새 클러스터에 설치해야 할 수도 있습니다. 모듈이 사용자 데이터를 저장하는 데 사용되지 않는다고 가정합니다..
복원PG_HBA.conf
수정 된 경우pg_hba.conf, 원래 설정을 복원하십시오. 이전 클러스터와 일치하도록 새 클러스터의 다른 구성 파일을 조정해야 할 수도 있습니다 (예 :postgresql.conf.
업그레이드 후 처리
업그레이드 후 처리가 필요한 경우 PG_UPGRADE는 완료되면 경고를 발행합니다. 또한 관리자가 실행 해야하는 스크립트 파일을 생성합니다. 스크립트 파일은 업그레이드 후 처리가 필요한 각 데이터베이스에 연결됩니다. 각 스크립트는 다음을 사용하여 실행해야합니다.
PSQL-username postgres -파일 스크립트.sql postgres
스크립트를 순서대로 실행할 수 있으며 실행되면 삭제할 수 있습니다.
주의 |
일반적으로 재건 스크립트가 완료 될 때까지 재건 스크립트로 참조 된 테이블에 액세스하는 것은 안전하지 않습니다. 그렇게하면 잘못된 결과 또는 성능 저하가 발생할 수 있습니다. 재건 스크립트에서 참조되지 않은 테이블에 즉시 액세스 할 수 있습니다. |
통계
Optimizer 통계가 전송되지 않기 때문에와이즈 토토, 업그레이드가 끝날 때 해당 정보를 재생하도록 명령을 실행하도록 지시 받게됩니다. 새 클러스터와 일치하도록 연결 매개 변수를 설정해야 할 수도 있습니다.
오래된 클러스터 삭제
업그레이드에 만족하면에 언급 된 스크립트를 실행하여 이전 클러스터의 데이터 디렉토리를 삭제할 수 있습니다.와이즈 토토완료. (이전 데이터 디렉토리 안에 사용자 정의 테이블 스페이스가 있으면 자동 삭제가 불가능합니다.) 이전 설치 디렉토리 (예 :도 삭제할 수도 있습니다.bin, 공유).
오래된 클러스터로 되돌아가는
실행 후와이즈 토토, 기존 클러스터로 되돌려 보려고합니다. 몇 가지 옵션이 있습니다.
-체크옵션이 사용되었고, 오래된 클러스터는 수정되지 않았습니다. 다시 시작할 수 있습니다.
-link옵션은not사용 된 오래된 클러스터는 수정되지 않았습니다. 다시 시작할 수 있습니다.
-link옵션이 사용되었으며, 데이터 파일은 이전 및 새 클러스터간에 공유 될 수 있습니다.
if와이즈 토토연결이 시작되기 전에 중단 된 오래된 클러스터는 수정되지 않았습니다. 다시 시작할 수 있습니다.
그렇다면not새 클러스터를 시작하면 링크가 시작될 때 a를 제외하고 이전 클러스터가 수정되지 않았습니다..OLD접미사가 추가되었습니다$ pgdata/global/pg_control. 이전 클러스터를 재사용하려면를 제거하십시오..OLD접미사$ pgdata/global/pg_control; 그런 다음 이전 클러스터를 다시 시작할 수 있습니다.
새 클러스터를 시작한 경우 공유 파일에 작성되었으며 이전 클러스터를 사용하는 것은 안전하지 않습니다. 이 경우 기존 클러스터를 백업에서 복원해야합니다.
와이즈 토토이 포함 된 데이터베이스 업그레이드를 지원하지 않습니다Reg*OID 참조 시스템 데이터 유형 :Regproc, Regrocedure, Regoper, Regoperator, RegConfig및Regdictionary. (Regtype업그레이드 할 수 있습니다.)
모든 실패, 재건 및 Reindex 사례는에 의해보고됩니다.와이즈 토토설치에 영향을 미치는 경우; 업그레이드 후 스크립트 테이블 및 인덱스를 재구성하기위한 스크립트가 자동으로 생성됩니다. 많은 클러스터의 업그레이드를 자동화하려는 경우 동일한 데이터베이스 스키마가있는 클러스터에 모든 클러스터 업그레이드에 대해 동일한 업그레이드 단계가 필요하다는 것을 알 수 있습니다. 업그레이드 후 단계는 사용자 데이터가 아닌 데이터베이스 스키마를 기반으로하기 때문입니다.
배포 테스트의 경우 이전 클러스터의 스키마 전용 사본을 작성하고 더미 데이터를 삽입하고 업그레이드합니다..
pre-를 업그레이드하는 경우PostgreSQL9.2 Cluster 구성 파일 전용 디렉토리를 사용하는 클러스터는 실제 데이터 디렉토리 위치를로 전달해야합니다.와이즈 토토, 구성 디렉토리 위치를 서버로 전달합니다 (예 :-d /real-data-directory -o '-d /configuration-directory'.
Default Unix-Domain 소켓 디렉토리를 사용하는 이전 서버 또는 새 클러스터의 기본값과 다른 기본값을 사용하는 이전 서버를 사용하는 경우pghost이전 서버의 소켓 위치를 가리 킵니다. (이것은 Windows와 관련이 없습니다.)
로그쉽 대기 서버 (PostgreSQL : 문서화 : 9.4 : 로그 선집 토토 사이트 서버) 서버가 쓰기를 허용해야하므로 업그레이드 할 수 없습니다. 가장 간단한 방법은 기본을 업그레이드하고 사용하는 것입니다rsync대기를 재건하려면. 당신은 실행할 수 있습니다rsync기본이 다운되는 동안 또는베이스 백업의 일부로 (섹션 24.3.2) 이전 대기 클러스터를 덮어 쓰는 것.
링크 모드를 사용하려면 새 클러스터가 시작될 때 이전 클러스터를 수정하지 않으려면 이전 클러스터의 사본을 작성하여 링크 모드로 업그레이드하십시오. 이전 클러스터의 유효한 사본을 만들려면 사용rsync서버가 실행중인 기존 클러스터의 더러운 사본을 작성하려면 이전 서버를 종료하고 실행합니다rsync다시 변경하여 사본을 업데이트하려면 다시 일관되게합니다. 일부 파일을 제외하고 싶을 수도 있습니다 (예 :postmaster.pid, 문서화 된대로섹션 24.3.3. 파일 시스템이 파일 시스템 스냅 샷 또는 복사기 쓰기 파일 사본을 지원하는 경우이를 사용하여 기존 클러스터 및 테이블 스페이스의 백업을 만들 수 있습니다. 스냅 샷과 사본은 동시에 또는 데이터베이스 서버가 다운되어 있어야합니다..
업그레이드FromPostgreSQL 8.3에는 이후 PostgreSQL 릴리스에서 업그레이드 할 때 추가 제한이 없습니다. 예를 들어, PG_UPGRADE는 사용자 열이 다음과 같이 정의 된 경우 8.3에서 업그레이드하는 데 작동하지 않습니다.
aTSQUERY데이터 유형
데이터 유형이름첫 번째 열이 아닙니다
그러한 열을 떨어 뜨려 수동으로 업그레이드해야합니다.
와이즈 토토가 작동하지 않으면ltreeContrib 모듈이 데이터베이스에 설치되었습니다.
와이즈 토토는 다음과 같은 경우 테이블 재 구축이 필요합니다.
사용자 열은 데이터 유형입니다TSVECTOR
와이즈 토토는 다음과 같은 경우 reindex가 필요합니다.
인덱스는 유형 해시 또는 gin입니다.
색인 사용bpchar_pattern_ops
또한 기본 DateTime 스토리지 형식은 정수로 변경되었습니다PostgreSQL8.3. 와이즈 토토는 이전 및 새 클러스터가 사용하는 DateTime 스토리지 형식이 일치하는지 확인합니다. 새 클러스터가 구성 플래그로 구축되었는지 확인하십시오-disable-integer-datetimes.
Windows 사용자의 경우 그래픽 설치 프로그램과 MSI 설치 프로그램이 사용하는 다른 정수 DateTimes 설정으로 인해 설치 프로그램 배포의 버전 8.3에서 버전 8.4 이상으로 설치 프로그램 배포 버전으로 업그레이드 할 수 있습니다. MSI 설치 프로그램에서 새로운 그래픽 설치 프로그램으로 업그레이드 할 수 없습니다.