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
이전 클러스터 실행 디렉토리; 환경pgbinold
새 클러스터 실행 디렉토리; 환경pgbinnew
클러스터 만 확인하고 데이터를 변경하지 마십시오
이전 클러스터 데이터 디렉토리; 환경 변수pgdataold
새 클러스터 데이터 디렉토리; 환경 변수pgdatanew
새로 파일을 복사하는 대신 하드 링크 사용
옛날 옵션으로 직접 전달되는 옵션Postgres명령
옵션을 새로 전달할 수있는 옵션Postgres명령
이전 클러스터 포트 번호; 환경 변수pgportold
새 클러스터 포트 번호; 환경 변수pgportnew
성공 후에도 SQL 및 로그 파일을 유지합니다
클러스터의 슈퍼 사용자 이름; 환경 변수pguser
장황 내부 로깅 활성화
버전 정보 표시, 종료
도움말 표시, 종료
이것은 업그레이드를 수행하는 단계입니다.pg_upgrade:
선택적으로 이전 클러스터를 이동
버전 별 설치를 사용하는 경우/opt/postgresql/9.1, 당신은 필요하지 않습니다
설치 디렉토리가 버전 별이 아닌 경우/usr/local/pgsqlPostgreSQL설치. 일단PostgreSQL서버/usr/local/pgsql, 당신은 할 수 있습니다 :
mv/usr/local/pgsql /usr/local/pgsql.old
디렉토리의 이름을 바꾸려면
소스 설치의 경우 새로 구축하십시오
새 PostgreSQL 소스를 빌드구성pg_upgrade확인PG_CONTROLDATA만들기
새 Postgresql Binaries 설치
새 서버의 바이너리 및 지원 파일을 설치하십시오.
소스 설치, 새 설치하려는 경우접두사변수 :
gmake prefix =/usr/local/pgsql.new install
pg_upgrade 및 pg_upgrade_support 설치
설치pg_upgrade이진 및pg_upgrade_support새로운 도서관
새 PostgreSQL 클러스터 초기화
새 클러스터 초기화initdb. 다시, 호환 사용initdb이전 클러스터와 일치하는 플래그.
사용자 정의 공유 객체 파일 설치
pgcrypto.so, 출신 여부Contrib또는 다른 소스. 하다pgcrypto.sql
인증 조정
pg_upgrade피어inpg_hba.conf또는 A 사용~/.pgpass파일 (참조섹션 31.15).
두 서버 중지
두 데이터베이스 서버를 사용 중지했는지 확인하십시오
PG_CTL -D /OPT/POSTGRESQL/8.4 정지
또는 Windows에서 적절한 서비스 이름을 사용하여 :
넷 스톱 Postgresql-8.4
또는
넷 스톱 pgsql-8.3 (PostgreSQL8.3 이상 다른 서비스 이름을 사용했습니다)
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다시, 당신은 할 것입니다
복원pg_hba.conf
수정 된 경우pg_hba.conf,Postgres.
업그레이드 후 처리
업그레이드 후 처리가 필요한 경우 pg_upgrade
psql-username postgres -파일 script.sql postgres
스크립트를 순서대로 실행할 수 있으며 삭제할 수 있습니다.
주의 |
일반적으로 테이블에 액세스하는 것은 안전하지 않습니다 |
통계
Optimizer 통계가 전송되지 않기 때문에pg_upgrade, 당신은 지시를받습니다
오래된 클러스터 삭제
업그레이드에 만족하면 삭제할 수 있습니다.pg_upgrade완료. 이전 설치를 삭제할 수도 있습니다bin, 공유).
오래된 클러스터로 되돌아가는
실행 후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, RegConfig및Regdictionary. (Regtype할 수 있습니다
모든 고장, 재건 및 Reindex 사례는에보고됩니다.pg_upgrade그들이 당신에게 영향을 미치는 경우
배포 테스트의 경우 이전의 스키마 전용 사본을 작성하십시오.
pre-를 업그레이드하는 경우PostgreSQL9.2 클러스터를 사용하는 클러스터pg_upgrade및 구성을 전달하십시오-d.
비 디폴트를 사용하는 이전 서버를 사용하는 경우pghostTO
로그-쉽 대기 서버 (섹션 25.2) 업그레이드 할 수 없습니다rsyncrsync섹션) 이전 대기 클러스터를 덮어 쓰는 것.
링크 모드를 사용하고 싶고 이전을 원하지 않는다면rsync서버가있는 동안 이전 클러스터의 더러운 사본을 작성하려면rsync변경 사항이있는 사본을 다시 업데이트하려면postmaster.pid, 문서화 된대로섹션.
업그레이드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 사용자의 경우 다른 정수로 인해 주목하십시오