pg_upgrade - 업그레이드 apostgresql서버 인스턴스
pg_upgrade
-B
Oldbindir
[-B
Newbindir
]-d
OldConfigdir
-d
NewConfigdir
[옵션
...]
pg_upgrade(이전에 전화pg_migrator)에 저장된 데이터가를 허용합니다.PostgreSQL나중에 업그레이드 할 데이터 파일PostgreSQL예를 들어 주요 버전 업그레이드 (예 : 12.14 ~ 13.10 또는 14.9 ~ 15.5)에 필요한 데이터 덤프/복원이없는 주요 버전. 예를 들어 12.7 ~ 12.8 또는 14.1 ~ 14.5 사이의 사소한 버전 업그레이드에는 필요하지 않습니다.
Major PostgreSQL은 종종 시스템 테이블의 레이아웃을 변경하는 새로운 기능을 정기적으로 추가하지만 내부 데이터 저장 형식은 거의 변경되지 않습니다..pg_upgrade이 사실을 사용하여 새 시스템 테이블을 만들고 기존 사용자 데이터 파일을 재사용하여 빠른 업그레이드를 수행합니다. 미래의 주요 릴리스가 이전 데이터 형식을 읽을 수없는 방식으로 데이터 저장 형식을 변경하면pg_upgrade그러한 업그레이드에는 사용할 수 없습니다. (커뮤니티는 그러한 상황을 피하려고 시도 할 것입니다.)
pg_upgrade32/64 비트 바이너리를 포함하여 호환 가능한 컴파일 타임 설정을 확인하여 구형 및 새 토토 핫가 이진과 호환되는지 확인하기 위해 최선을 다합니다. 모든 외부 모듈도 이진 호환되는 것이 중요하지만을 확인할 수는 없습니다.pg_upgrade.
pg_upgrade9.2.x에서 현재의 주요 릴리스로 업그레이드를 지원합니다.postgresql, 스냅 샷 및 베타 릴리스를 포함한
pg_upgrade다음 명령 줄 인수를 수락합니다 :
-B
bindir
-old-bindir =
bindir
기존 PostgreSQL 실행 디렉토리; 환경 변수pgbinold
-B
bindir
--new-bindir =
bindir
새로운 PostgreSQL 실행 디렉토리; 기본값은 디렉토리입니다.pg_upgrade거주; 환경 변수pgbinnew
-c
-체크
토토 핫 만 확인하고 데이터를 변경하지 마십시오
-d
configdir
-old-datadir =
configdir
이전 데이터베이스 토토 핫 구성 디렉토리; 환경 변수pgdataold
-d
configdir
--new-datadir =
configdir
새 데이터베이스 토토 핫 구성 디렉토리; 환경 변수pgdatanew
-jnjobs
-jobs =njobs
사용할 동시 연결 및 프로세스/스레드 수
-K
-link
새 토토 핫에 파일을 복사하는 대신 하드 링크 사용
-n
-no-sync
기본적으로pg_upgrade
업그레이드 된 클러스터의 모든 파일이 디스크에 안전하게 작성 될 때까지 기다립니다. 이 옵션은pg_upgrade
대기하지 않고 반환하려면 더 빠르지 만 후속 운영 체제 충돌로 인해 데이터 디렉토리가 손상 될 수 있음을 의미합니다. 일반적 으로이 옵션은 테스트에 유용하지만 생산 설치에는 사용해서는 안됩니다.
-o
옵션
-old-options
옵션
구식으로 직접 전달되는 옵션Postgres
명령; 다중 옵션 호출이 추가 됨
-o
옵션
--new-options
옵션
옵션을 새로운 사람에게 직접 전달할 옵션Postgres
명령; 다중 옵션 호출이 추가 됨
-p
포트
-old-port =
포트
이전 클러스터 포트 번호; 환경 변수pgportold
-p
포트
--- 뉴 포트 =
포트
새 클러스터 포트 번호; 환경 변수pgportnew
-r
-retain
성공적인 완료 후에도 SQL 및 로그 파일 유지
-s
dir
--- 소켓 디르 =
dir
업그레이드하는 동안 우체국 마스터 소켓에 사용할 디렉토리; 기본값은 현재 작업 디렉토리입니다. 환경 변수pgsocketdir
-u
사용자 이름
--username =
사용자 이름
클러스터의 설치 사용자 이름; 환경 변수PGUSER
-v
-Versbose
장황 내부 로깅 활성화
-v
-버전
버전 정보 표시, 종료
-클론
효율적인 파일 클로닝 사용 (또한“Reflinks”일부 시스템에서) 새 토토 핫에 파일을 복사하는 대신. 이로 인해 데이터 파일이 거의 나오지 않아의 속도 이점을 제공 할 수 있습니다.-K
/-link
기존 토토 핫를 그대로 두는 동안.
파일 클로닝은 일부 운영 체제 및 파일 시스템에서만 지원됩니다. 선택되었지만 지원되지 않으면pg_upgraderun은 오류가 발생합니다. 현재 BTRFS 및 XFS (Reflink 지원으로 생성 된 파일 시스템)와 APFS가있는 MACOS에서 Linux (4.5 이상)에서 지원됩니다..
--copy
파일을 새 토토 핫로 복사하십시오. 이것은 기본값입니다. (참조-link
, -클론
, -코피 파일 범위
및--swap
.)
-코피 파일 범위
사용Copy_File_Range
시스템은 효율적인 복사를 요청합니다. 일부 파일 시스템에서 이것은와 유사한 결과를 제공합니다.-클론
, 물리적 디스크 블록을 공유하고 다른 사람들에게는 여전히 블록을 복사 할 수 있지만 최적화 된 경로를 통해 그렇게합니다. 현재 Linux 및 FreeBSD에서 지원됩니다.
-No-Statics
이전 토토 핫에서 새 토토 핫로 통계를 복원하지 마십시오.
-Set-Char-Signedness =
옵션
새 토토 핫의 기본 숯 서명을 수동으로 설정합니다. 가능한 값은서명
and부호없는
.
C 언어에서의 기본 서명char
유형 (명시 적으로 지정되지 않은 경우)은 플랫폼마다 다릅니다. 예를 들어,char
기본값으로서명 char
X86 CPUS이지만부호없는 char
ARM CPUS.
부터 시작PostgreSQL18, 데이터베이스 클러스터는 자체 기본 숯 서명 설정을 유지하며, 이는 기본 기본 숯으로 표시된 플랫폼에서 일관된 동작을 보장하는 데 사용할 수 있습니다. 기본적으로pg_upgrade기존 토토 핫에서 업그레이드 할 때 Char Signedness 설정을 보존합니다. 그러나에서 업그레이드 할 때PostgreSQL17 이상,pg_upgrade그것이 건축 된 플랫폼의 숯 서명을 채택합니다.
이 옵션을 사용하면 상속 된 값을 재정의하는 새 클러스터의 기본 숯 서명을 명시 적으로 설정할 수 있습니다. 이 옵션이 관련된 두 가지 특정 시나리오가 있습니다.
업그레이드 후 다른 플랫폼으로 마이그레이션하려는 경우이 옵션을 사용해서는 안됩니다. 이 경우 기본 동작이 옳습니다. 대신이 플래그없이 원래 플랫폼에서 업그레이드를 수행 한 다음 나중에 클러스터를 마이그레이션하십시오. 이것은 권장되고 가장 안전한 접근법입니다.
클러스터를 이미 다른 문자 서명 (예 : X86 기반 시스템에서 ARM 기반 시스템으로)을 갖춘 플랫폼으로 마이그레이션 한 경우이 옵션을 사용하여 원래 플랫폼의 기본 문자 서명과 일치하는 서명을 지정해야합니다. 또한 데이터 파일 마이그레이션과 실행 사이에 데이터 파일을 수정하지 않는 것이 필수적입니다.pg_upgrade
. pg_upgrade
새 플랫폼에서 토토 핫를 시작하는 첫 번째 작업이어야합니다.
-swap
데이터 디렉토리를 이전 토토 핫에서 새 토토 핫로 이동하십시오. 그런 다음 카탈로그 파일을 새 토토 핫의 생성 된 파일로 바꾸십시오. 이 모드는 성능이 뛰어날 수 있습니다-link
, -클론
, --copy
및-코피 파일 범위
, 특히 많은 관계가있는 토토 핫에서.
그러나이 모드는 이전 토토 핫에 많은 쓰레기 파일을 생성하여 파일 동기화 단계를 연장 할 수 있습니다.--- sync-method = syncfs
사용됩니다. 따라서 사용하는 것이 좋습니다-sync-method = fsync
with--swap
.
또한 파일 전송 단계가 시작되면 이전 토토 핫가 파괴적으로 수정되므로 더 이상 안전하지 않습니다. 보다17 단계자세한 내용.
-sync-method =
메소드
로 설정된 시점fsync
, 기본값 인pg_upgrade
업그레이드 된 토토 핫의 데이터 디렉토리에서 모든 파일을 재귀 적으로 열고 동기화합니다. 파일 검색은 WAL 디렉토리 및 각 구성된 테이블 스페이스의 기호 링크를 따릅니다.
On Linux,syncfs
대신 운영 체제에 업그레이드 된 클러스터의 데이터 디렉토리, WAL 파일 및 각 테이블 스페이스가 포함 된 전체 파일 시스템을 동기화하도록 요청하는 데 사용될 수 있습니다. 보다복구 _init_sync_method사용할 때 알아야 할 경고에 대한 정보syncfs
.
이 옵션은 효과가 없습니다.-no-sync
사용됩니다.
-?
-help
도움말 표시, 종료
이것은 업그레이드를 수행하는 단계입니다.pg_upgrade:
업그레이드 단계논리 복제 토토 핫여기에서는 다루지 않습니다. 참조스포츠 토토 베트맨 : 문서 : 18 : 29.13. 치받이자세한 내용.
이전 토토 핫를 선택적으로 이동
버전 별 설치 디렉토리를 사용하는 경우 (예 :/opt/postgresql/18
, 이전 클러스터를 이동할 필요가 없습니다. 그래픽 설치자는 모두 버전 별 설치 디렉토리를 사용합니다.
설치 디렉토리가 버전 별이 아닌 경우 (예 :/usr/local/pgsql
, 현재 PostgreSQL 설치 디렉토리를 이동하여 새로운 것을 방해하지 않도록해야합니다PostgreSQL설치. 일단 현재PostgreSQL서버가 종료되면 PostgreSQL 설치 디렉토리의 이름을 바꾸는 것이 안전합니다. 이전 디렉토리가라고 가정합니다./usr/local/pgsql
, 당신은 할 수 있습니다 :
mv/usr/local/pgsql /usr/local/pgsql.old
디렉토리의 이름을 바꾸려면
소스 설치의 경우 새 버전을 빌드
새 PostgreSQL 소스를 빌드하십시오.구성
이전 토토 핫와 호환되는 플래그.pg_upgrade확인PG_CONTROLDATA
업그레이드를 시작하기 전에 모든 설정이 호환되도록합니다.
새 Postgresql Binaries 설치
새 서버의 바이너리 및 지원 파일을 설치하십시오.pg_upgrade기본 설치에 포함되어 있습니다.
소스 설치의 경우, 새 서버를 사용자 정의 위치에 설치하려면 사용하십시오.prefix
변수 :
접두사 만들기 =/usr/local/pgsql.new install
새 PostgreSQL 클러스터 초기화
|initdb
. 다시, 호환 사용initdb
이전 토토 핫와 일치하는 플래그. 많은 미리 빌드 설치 업체 가이 단계를 자동으로 수행합니다. 새 토토 핫를 시작할 필요가 없습니다.
확장자 공유 객체 파일 설치
많은 확장 및 사용자 정의 모듈에서Contrib
또는 다른 소스, 공유 객체 파일 (또는 dlls)을 사용하십시오 (예 :pgcrypto.so
. 기존 클러스터가 사용 된 경우 새 서버 바이너리와 일치하는 공유 객체 파일은 일반적으로 운영 체제 명령을 통해 새 클러스터에 설치해야합니다. 스키마 정의를로드하지 마십시오 (예 :확장 생성 pgcrypto
, 이들은 이전 클러스터에서 복제되기 때문입니다. 확장 업데이트를 사용할 수있는 경우pg_upgrade이 보고서를보고하고 나중에 업데이트 할 수있는 스크립트를 작성합니다.
정의 전체 텍스트 검색 파일 복사
Old에서 새 토토 핫로의 맞춤형 전체 텍스트 검색 파일 (사전, 동의어, 시소러스, 단어 중지)을 복사합니다.
인증 조정
pg_upgrade
이전 및 새 서버에 여러 번 연결되므로 인증을 설정할 수 있습니다.피어
inpg_hba.conf
또는 A 사용~/.pgpass
파일 (참조메이저 토토 사이트 : 문서 : 18 : 32.16. 암호 파일).
두 서버 중지
두 데이터베이스 서버 모두 UNIX에서 사용이 중지되어 있는지 확인하십시오 (예 :.
PG_CTL -D/OPT/PostGRESQL/12 정지 pg_ctl -d/opt/postgresql/18 stop
또는 Windows에서 적절한 서비스 이름을 사용하여 :
넷 스톱 PostgreSQL-12 Net Stop Postgresql-18
스트리밍 복제 및 로그쉽 대기 서버는이 종료 중에 실행 중이므로 모든 변경 사항을받습니다.
대기 서버 업그레이드 준비
섹션에 요약 된 메소드를 사용하여 대기 서버를 업그레이드하는 경우11 단계, 기존 대기 서버가 실행하여 잡히는지 확인하십시오PG_CONTROLDATA이전 기본 및 대기 클러스터에 대한. 확인“최신 체크 포인트 위치”값은 모든 클러스터에서 일치합니다. 또한 확인하십시오Wal_Level
로 설정되지 않았습니다최소
inpostgresql.conf
새 기본 토토 핫의 파일.
runpg_upgrade
항상 실행pg_upgrade이전 서버가 아닌 새 서버의 이진.pg_upgrade이전 및 새 토토 핫의 데이터 및 실행 파일의 사양이 필요합니다 (bin
) 디렉토리. 사용자 및 포트 값을 지정할 수도 있고 기본 사본 동작 대신 데이터 파일을 연결, 클로닝 또는 교체 하려는지 여부
링크 모드를 사용하는 경우 업그레이드가 훨씬 빠르며 (파일 복사 없음) 디스크 공간을 적게 사용하지만 업그레이드 후 새 클러스터를 시작하면 이전 클러스터에 액세스 할 수 없습니다. 링크 모드는 또한 이전 및 새 클러스터 데이터 디렉토리가 동일한 파일 시스템에 있어야합니다. (테이블 스페이스 및PG_WAL
다른 파일 시스템에있을 수 있습니다.) 클론 모드는 동일한 속도와 디스크 공간 장점을 제공하지만 새 클러스터가 시작되면 이전 클러스터를 사용할 수 없게하지 않습니다. 클론 모드는 또한 이전 및 새 데이터 디렉토리가 동일한 파일 시스템에 있어야합니다. 이 모드는 특정 운영 체제 및 파일 시스템에서만 사용할 수 있습니다. 많은 관계가있는 경우 스왑 모드가 가장 빠를 수 있지만 파일 전송 단계가 시작되면 이전 클러스터에 액세스 할 수 없습니다. 스왑 모드는 또한 이전 및 새 클러스터 데이터 디렉토리가 동일한 파일 시스템에 있어야합니다.
설정-jobs
~ 2 이하의 pg_upgrade는 여러 데이터베이스 및 테이블 스페이스를 병렬로 처리 할 수 있습니다. 좋은 출발점은 기계의 CPU 코어 수입니다. 이 옵션은 멀티-다베이스 및 멀티 테이블 스페이스 서버의 업그레이드 시간을 실질적으로 줄일 수 있습니다.
Windows 사용자의 경우 관리 계정에 로그인 한 다음 실행해야합니다pg_upgrade인용 된 디렉토리 포함 (예 :
pg_upgrade.exe -Old-datadir "c :/program files/postgresql/12/data" -New-Datadir "C :/Program Files/Postgresql/18/Data" --old-bindir "c :/program files/postgresql/12/bin" --new-bindir "c :/program files/postgresql/18/bin"
일단 시작,pg_upgrade
두 클러스터가 호환되는지 확인한 다음 업그레이드를 수행합니다. 사용할 수 있습니다pg_upgrade -Check
이전 서버가 여전히 실행중인 경우에도 수표 만 수행하려면pg_upgrade -check
업그레이드 후해야 할 수동 조정을 개요합니다. 링크, 클론, 카피 파일 범위 또는 스왑 모드를 사용하려는 경우 옵션을 사용해야합니다.-link
, -클론
, -코피 파일 범위
또는-swap
with-체크
모드 별 점검을 활성화하려면pg_upgrade
현재 디렉토리에서 쓰기 권한이 필요합니다.
분명히 업그레이드하는 동안 아무도 토토 핫에 액세스하지 않아야합니다.pg_upgrade의도하지 않은 클라이언트 연결을 피하기 위해 포트 50432에서 서버 실행 기본값. 기존 클러스터와 새 클러스터가 동시에 실행되지 않기 때문에 업그레이드 할 때 두 클러스터에 동일한 포트 번호를 사용할 수 있습니다. 그러나 이전 실행 서버를 확인할 때는 이전 및 새 포트 번호가 달라야합니다.
데이터베이스 스키마를 복원하는 동안 오류가 발생하는 경우pg_upgrade
나가면 rement.17 단계아래. 시도하려면pg_upgrade
다시, pg_upgrade 스키마 복원이 성공할 수 있도록 이전 클러스터를 수정해야합니다. 문제가 A 인 경우Contrib
모듈, 제거해야 할 수도 있습니다.Contrib
기존 클러스터의 모듈 및 업그레이드 후 새 클러스터에 설치하여 모듈이 사용자 데이터를 저장하는 데 사용되지 않는다고 가정합니다..
스트리밍 스트리밍 복제 및 로그쉽 대기 서버 업그레이드
링크 모드를 사용하고 스트리밍 복제가있는 경우 (참조섹션 26.2.5) 또는 로그-쉽핑 (참조PostgreSQL : 문서 : 18 : 26.2. 로그쉽 스포츠 토토 서버) 대기 서버를 따라 다음 단계를 따라 빠르게 업그레이드 할 수 있습니다. 당신은 달리지 않을 것입니다pg_upgrade대기 서버에서rsync1 차. 아직 서버를 시작하지 마십시오.
당신이 그렇게했다면아님링크 모드 사용, 사용하고 싶지 않거나 사용하고 싶지 않습니다rsync또는 더 쉬운 솔루션을 원 하거나이 섹션의 지침을 건너 뛰고 대기 서버를 한 번 간단히 재현하십시오pg_upgrade완성 및 새 기본이 실행 중입니다.
대기 서버에 새 PostgreSQL 바이너리 설치
모든 대기 서버에 새 바이너리 및 지원 파일이 설치되어 있는지 확인하십시오.
새로운 대기 데이터 디렉토리가 수행해야합니다아님존재
새로운 대기 데이터 디렉토리가 수행해야합니다not존재하거나 비어 있습니다. 만약에initdb실행중인 대기 서버의 새로운 데이터 디렉토리를 삭제합니다.
확장자 공유 객체 파일 설치
새 기본 토토 핫에 설치 한 새 대기에 동일한 확장자 공유 객체 파일을 설치합니다.
대기 서버 중지
대기 서버가 여전히 실행중인 경우 위의 지침을 사용하여 지금 중지하십시오.
구성 파일 저장
예를 들어 보관 해야하는 이전 Standbys의 구성 디렉토리에서 구성 파일을 저장합니다 (예 :postgresql.conf
(및 그에 포함 된 파일),postgresql.auto.conf
, pg_hba.conf
, 이것들은 다음 단계에서 덮어 쓰거나 제거되기 때문에
runrsync
링크 모드를 사용하면 대기 서버를 빠르게 업그레이드 할 수 있습니다rsync. 이를 달성하려면 이전 및 새 데이터베이스 토토 핫 디렉토리 위에있는 기본 서버의 디렉토리에서에서 실행하십시오.기본각 대기 서버의 경우 :
rsync --archive-delete-hard-links-size-no-no-incursive old_cluster new_cluster remote_dir
여기서Old_Cluster
및New_Cluster
기본의 현재 디렉토리와 관련이 있으며Remote_dir
is위대기의 구식 및 새로운 클러스터 디렉토리. 기본 및 대기의 지정된 디렉토리 아래의 디렉토리 구조는 일치해야합니다. 상담rsync원격 디렉토리 지정에 대한 자세한 내용은 예를 들어,
rsync -archive-delete-hard-links-size-no-no-recursive/opt/postgresql/12 \ /opt/postgresql/18 standby.example.com:/opt/postgresql
명령이 무엇을 사용할 것인지 확인할 수 있습니다rsync's-드라이 런
옵션. 하는 동안rsync적어도 하나의 대기에 대해 기본에서 실행해야합니다. 실행할 수 있습니다rsync업그레이드 된 대기에서 업그레이드 된 대기는 업그레이드 된 대기를 시작하지 않는 한 다른 대기를 업그레이드하기 위해 업그레이드 된 대기에서.
이것이하는 일은pg_upgrade의 기본 서버의 이전 및 새 클러스터에 파일을 연결하는 링크 모드. 그런 다음 대기 클러스터에서 일치하는 파일을 찾아 대기의 새 클러스터에서 링크를 만듭니다. 기본에 연결되지 않은 파일은 기본에서 대기로 복사됩니다. (일반적으로 작습니다.) 이것은 빠른 대기 업그레이드를 제공합니다. 안타깝게도,rsync이 파일은 일반적으로 대기 서버에 존재하지 않기 때문에 임시 및 미등성 테이블과 관련된 파일을 불필요하게 복사합니다.
테이블 스페이스가 있으면 비슷한 실행을해야합니다rsync각 테이블 스페이스 디렉토리의 명령 (예 :
rsync -archive-delete-hard-links-- size-no-no-incursive/pg_tblsp/pg_12_201909212 \ /vol1/pg_tblsp/pg_18_202307071 standby.example.com:/vol1/pg_tblsp
이사 한 경우PG_WAL
데이터 디렉토리 외부,rsync해당 디렉토리에서도 실행해야합니다.
스트리밍 복제 및 로그쉽 대기 서버 구성
로그 배송에 대한 서버를 구성합니다. (실행할 필요가 없습니다pg_backup_start ()
andpg_backup_stop ()
또는 대기는 여전히 1 차와 동기화되므로 파일 시스템 백업을 가져옵니다.) 이전 기본이 버전 17.0 이전에있는 경우 기본의 슬롯이 새 대기에 복사되지 않으므로 이전 대기의 모든 슬롯을 수동으로 재현해야합니다. 기존 기본이 버전 17.0 이상인 경우 기본의 논리 슬롯 만 새 대기로 복사되지만 이전 대기의 다른 슬롯은 복사되지 않으므로 수동으로 재현해야합니다..
복원pg_hba.conf
수정 된 경우PG_HBA.conf
, 원래 설정을 복원하십시오. 이전 클러스터와 일치하도록 새 클러스터의 다른 구성 파일을 조정해야 할 수도 있습니다 (예 :postgresql.conf
(및 그에 포함 된 파일),postgresql.auto.conf
.
새 서버 시작
이제 새 서버를 안전하게 시작할 수 있습니다.rsync'ED 대기 서버.
업그레이드 후 처리
업그레이드 후 처리가 필요한 경우 PG_UPGRADE는 완료되면 경고를 발행합니다. 또한 관리자가 실행 해야하는 스크립트 파일을 생성합니다. 스크립트 파일은 업그레이드 후 처리가 필요한 각 데이터베이스에 연결됩니다. 각 스크립트는 다음을 사용하여 실행해야합니다.
psql -username = postgres -file = script.sql postgres
스크립트는 어떤 순서로든 실행할 수 있으며 실행되면 삭제할 수 있습니다.
일반적으로 재건 스크립트가 완성 될 때까지 재건 스크립트로 참조 된 테이블에 액세스하는 것은 안전하지 않습니다. 그렇게하면 잘못된 결과 또는 성능 저하가 발생할 수 있습니다. 재건 스크립트에서 참조되지 않은 테이블에 즉시 액세스 할 수 있습니다.
통계
-NO-Statics
옵션이 지정되어 있습니다.pg_upgrade
대부분의 최적화 통계를 이전 클러스터에서 새 클러스터로 전송합니다. 그러나 명시 적으로 생성 된 것과 같은 일부 통계는 전송되지 않을 수 있습니다.통계 작성또는 확장자에 의해 추가 된 사용자 정의 통계.
모든 통계가 전송되지 않기 때문에PG_UPGRADE
, 업그레이드가 끝날 때 해당 정보를 재생하도록 명령을 실행하도록 지시 받게됩니다. 새 클러스터와 일치하도록 연결 매개 변수를 설정해야 할 수도 있습니다.
먼저 사용vacuumdb-all-analyze-in-stages-미스 스테이트 전용
관계없이 관계에 대한 최소 최적화 통계를 신속하게 생성합니다. 그런 다음 사용vacuumdb-all -Analyze-Only
모든 관계가 진공 및 분석을 유발하기위한 누적 통계를 업데이트했는지 확인합니다. 두 명령의 경우 사용-Jobs
속도를 높일 수 있습니다. 만약에VACUUM_COST_DELAY
0이 아닌 값으로 설정되어 있으므로 통계 생성 속도를 높이기 위해pgoptions
, 예 :pgoptions = '-c Vacuum_cost_delay = 0'Vacuumdb ...
.
오래된 토토 핫 삭제
업그레이드에 만족하면에 언급 된 스크립트를 실행하여 이전 토토 핫의 데이터 디렉토리를 삭제할 수 있습니다.pg_upgrade
완료. (이전 데이터 디렉토리 안에 사용자 정의 테이블 스페이스가 있으면 자동 삭제가 불가능합니다.) 이전 설치 디렉토리 (예 :를 삭제할 수도 있습니다.bin
, 공유
).
오래된 토토 핫로 되돌아가는
실행 후pg_upgrade
, 기존 클러스터로 되돌려 놓으려면 몇 가지 옵션이 있습니다.
-체크
옵션이 사용되었고, 오래된 클러스터는 수정되지 않았습니다. 다시 시작할 수 있습니다.
그렇지 않은 경우-link
NOR-swap
사용되었고, 오래된 클러스터는 수정되지 않았다; 다시 시작할 수 있습니다.
-link
옵션이 사용되었고, 구식 클러스터와 새 클러스터간에 데이터 파일이 공유 될 수 있습니다.
ifpg_upgrade
링크가 시작되기 전에 중단 된 오래된 토토 핫는 수정되지 않았습니다. 다시 시작할 수 있습니다.
그렇게했다면not새 토토 핫를 시작하면 링크가 시작될 때 a를 제외하고 이전 토토 핫가 수정되지 않았습니다..OLD
접미사가 추가되었습니다$ pgdata/global/pg_control
. 이전 클러스터를 재사용하려면를 제거하십시오..OLD
접미사$ pgdata/global/pg_control
; 그런 다음 이전 토토 핫를 다시 시작할 수 있습니다.
새 클러스터를 시작한 경우 공유 파일에 작성되었으며 이전 클러스터를 사용하는 것은 안전하지 않습니다. 이 경우 기존 클러스터를 백업에서 복원해야합니다.
--swap
옵션이 사용되었고, 이전 클러스터가 파괴적으로 수정 될 수 있습니다 :
ifpg_upgrade
기존 토토 핫가 더 이상 시작하기에 안전하지 않다고보고하기 전에 중단되며, 이전 토토 핫는 수정되지 않았다. 다시 시작할 수 있습니다.
ifpg_upgrade
이전 클러스터가 더 이상 시작하기에 안전하지 않다고보고했으며, 이전 클러스터는 파괴적으로 수정되었습니다. 이 경우 기존 클러스터를 백업에서 복원해야합니다.
일부 환경 변수는 명령 줄 옵션에 대한 기본값을 제공하는 데 사용될 수 있습니다 :
pgbinold
기존 PostgreSQL 실행 디렉토리; 옵션-B
/-old-bindir
.
pgbinnew
새로운 PostgreSQL 실행 디렉토리; 옵션-B
/--new-bindir
.
pgdataold
이전 데이터베이스 클러스터 구성 디렉토리; 옵션-d
/-old-datadir
.
pgdatanew
새 데이터베이스 클러스터 구성 디렉토리; 옵션-d
/--new-datadir
.
pgportold
이전 클러스터 포트 번호; 옵션-p
/-old-port
.
pgportnew
새 클러스터 포트 번호; 옵션-p
/--- 뉴 포트
.
pgsocketdir
업그레이드하는 동안 우체국 마스터 소켓에 사용할 디렉토리; 옵션-s
/-소켓 디르
.
pguser
Cluster의 설치 사용자 이름; 옵션-u
/-username
.
pg_upgrade내에 저장된 스키마 덤프와 같은 다양한 작업 파일을 만듭니다pg_upgrade_output.d
새 토토 핫의 디렉토리에서. 각 실행은 ISO 8601 (에 따라 형식으로 이름이 지정된 새 하위 디렉토리를 만듭니다.%y%m%dt%h%m%s
), 생성 된 모든 파일이 저장된 곳.pg_upgrade_output.d
그리고 포함 된 파일이 자동으로 제거됩니다.pg_upgrade성공적으로 완료합니다. 그러나 문제가 발생하면 파일이 유용한 디버깅 정보를 제공 할 수 있습니다.
pg_upgrade구식 및 새로운 데이터 디렉토리에서 단기간 우체국 장을 출시합니다. 이 Postmasters와의 통신을위한 임시 UNIX 소켓 파일은 기본적으로 현재 작업 디렉토리에서 작성됩니다. 어떤 상황에서는 현재 디렉토리의 경로 이름이 너무 길어 유효한 소켓 이름이 될 수 있습니다. 이 경우를 사용할 수 있습니다.-s
경로 이름이 짧은 일부 디렉토리에 소켓 파일을 넣는 옵션. 보안의 경우 다른 사용자가 디렉토리를 읽을 수 있거나 쓸 수 없습니다. (이것은 Windows에서 지원되지 않습니다.)
모든 고장, 재건 및 Reindex 사례는보고됩니다.pg_upgrade설치에 영향을 미치는 경우; 업그레이드 후 스크립트 테이블 및 인덱스를 재구성하기위한 스크립트가 자동으로 생성됩니다. 많은 클러스터의 업그레이드를 자동화하려는 경우 동일한 데이터베이스 스키마가있는 클러스터에 모든 클러스터 업그레이드에 대해 동일한 업그레이드 단계가 필요하다는 것을 알 수 있습니다. 업그레이드 후 단계는 사용자 데이터가 아닌 데이터베이스 스키마를 기반으로하기 때문입니다.
배포 테스트를 위해서는 이전 토토 핫의 스키마 전용 사본을 작성하고 더미 데이터를 삽입하고 업그레이드합니다..
pg_upgrade이 테이블 열이 포함 된 데이터베이스의 업그레이드를 지원하지 않습니다Reg*
OID 참조 시스템 데이터 유형 :
RegCollation |
RegConfig |
Regdictionary |
regnamespace |
Regoper |
Regoperator |
Regproc |
레지비어 |
(regclass
, Resprole
및Regtype
업그레이드 할 수 있습니다.)
링크 모드를 사용하려는 경우 새 클러스터가 시작될 때 이전 클러스터를 수정하지 않으려면 클론 모드 사용을 고려하십시오. 사용할 수없는 경우 이전 클러스터의 사본을 작성하여 링크 모드에서 업그레이드하십시오. 이전 클러스터의 유효한 사본을 만들려면 사용rsync
서버가 실행되는 동안 이전 토토 핫의 더러운 사본을 작성하려면 이전 서버를 종료하고 실행합니다rsync -checksum
다시 변경하여 사본을 업데이트하려면 다시 일관되게합니다. (-Checksum
rsync
1 초의 파일 수정 시간 세분치 만 있습니다.) 일부 파일을 제외 할 수 있습니다 (예 :postmaster.pid
, 문서화 된대로섹션 25.3.4. 파일 시스템이 파일 시스템 스냅 샷 또는 복사기 쓰기 파일 사본을 지원하는 경우이를 사용하여 기존 클러스터 및 테이블 스페이스의 백업을 만들 수 있습니다. 스냅 샷과 사본은 동시에 또는 데이터베이스 서버가 다운되어 있어야합니다..