pg_rewind - 동기화postgresql다른 데이터 디렉토리가있는 데이터 디렉토리
pg_rewind
[옵션
...]-d
| -타겟 -pgdata
디렉토리
--- 범퍼카 토토 -pgdata =
| 디렉토리
-범퍼카 토토 서버 =
connstr
pg_rewind는 클러스터의 타임 라인이 발산 된 후 PostgreSQL 클러스터를 동일한 클러스터의 다른 사본과 동기화하는 도구입니다. 일반적인 시나리오는 장애 조치 후 새로운 마스터를 따르는 대기로 오래된 마스터 서버를 온라인으로 가져 오는 것입니다.
결과는 대상 데이터 디렉토리를 소스 디렉토리로 바꾸는 것과 같습니다. 관계 파일에서 변경된 블록 만 복사됩니다. 다른 모든 파일은 구성 파일을 포함하여 전체로 복사됩니다. 의 장점pg_rewind새로운베이스 백업 또는과 같은 도구를 사용하여rsync,pg_rewind클러스터에서 변경되지 않은 블록을 읽을 필요가 없습니다. 이렇게하면 데이터베이스가 클 때 훨씬 빠르고 작은 블록의 일부만 클러스터마다 다릅니다.
pg_rewind범퍼카 토토 및 대상 클러스터의 타임 라인 이력을 검사하여 분기 된 지점을 결정하고 대상 클러스터에서 WAL을 찾을 것으로 예상합니다PG_WAL
디렉토리는 분기 지점까지 다시 도달합니다. 발산 지점은 대상 타임 라인, 소스 타임 라인 또는 공통 조상에서 찾을 수 있습니다. 발산 직후 대상 클러스터가 종료 된 일반적인 장애 조치 시나리오에서는 문제가되지 않지만, 발산 후 오랫동안 대상 클러스터가 실행되면 이전 WAL 파일이 더 이상 존재하지 않을 수 있습니다. 이 경우 WAL 아카이브에서로 수동으로 복사 할 수 있습니다.PG_WAL
디렉토리. 사용pg_rewind예를 들어, 대기 서버를 홍보하고, 일부 쓰기 트랜잭션을 실행 한 다음 다시 웨이 드는 대기가되기 위해 다시 송금 할 수 있습니다..
실행 후 처음으로 대상 서버가 시작된 시점pg_rewind, 복구 모드로 이동하여 발산 지점 후 범퍼카 토토 서버에서 생성 된 모든 WAL을 재생합니다. WAL 중 일부가 더 이상 범퍼카 토토 서버에서 사용할 수없는 경우pg_rewind실행되었으므로에 의해 복사 할 수 없었습니다.pg_rewind세션에서 대상 서버를 시작할 때 제공해야합니다. 이것은 a를 만들어 수행 할 수 있습니다.복구 .signal
대상 데이터 디렉토리의 파일 및 적합한 구성Restore_commandinpostgresql.conf
.
pg_rewind대상 서버에가 있어야합니다.Wal_log_hints옵션 활성화postgresql.conf
또는 클러스터가 |initdb. 이들 중 어느 것도 현재 기본적으로 켜져 있지 않습니다.full_page_writes또한 설정해야합니다on
이지만 기본적으로 활성화됩니다.
ifpg_rewind처리 중에 실패하면 대상의 데이터 폴더가 복구 될 수있는 상태가 아닐 수 있습니다. 이 경우 새로운 신선한 백업을받는 것이 좋습니다.
pg_rewind직접 쓸 수없는 파일을 찾으면 즉시 실패합니다. 예를 들어 범퍼카 토토와 대상 서버가 읽기 전용 SSL 키 및 인증서에 동일한 파일 매핑을 사용하는 경우에 발생할 수 있습니다. 이러한 파일이 대상 서버에있는 경우 실행하기 전에 제거하는 것이 좋습니다pg_rewind. 되감기를 한 후, 해당 파일 중 일부는 범퍼카 토토에서 복사되었을 수 있으며,이 경우 복사 된 데이터를 제거하고 되감기 전에 사용 된 링크 세트를 다시 복원해야 할 수도 있습니다..
pg_rewind다음 명령 줄 인수를 수락합니다 :
-d디렉토리
-타겟 -pgdata =디렉토리
이 옵션은 소스와 동기화 된 대상 데이터 디렉토리를 지정합니다. 실행하기 전에 대상 서버를 깨끗하게 종료해야합니다pg_rewind
--- 범퍼카 토토 -pgdata =디렉토리
대상을 동기화하기 위해 소스 서버의 데이터 디렉토리에 파일 시스템 경로를 지정합니다. 이 옵션은 소스 서버를 깨끗하게 종료해야합니다.
-범퍼카 토토 서버 =connstr
범퍼카 토토에 연결할 libpq 연결 문자열을 지정PostgreSQL대상을 동기화하는 서버. 연결은 정상 (복제 비 복제) 연결 여야합니다.pg_rewind소스 서버 (자세한 내용은 참고 섹션 참조) 또는 슈퍼 사용자 역할. 이 옵션은 소스 서버가 복구 모드가 아닌 실행 중이 려져야합니다.
-n
-드라이 런
실제로 대상 디렉토리 수정을 제외하고 모든 작업을 수행합니다.
-n
-no-sync
기본적으로pg_rewind
모든 파일이 디스크에 안전하게 작성 될 때까지 기다립니다. 이 옵션은pg_rewind
대기하지 않고 반환하려면 더 빠르지 만 후속 운영 체제 충돌로 인해 데이터 디렉토리가 손상 될 수 있음을 의미합니다. 일반적 으로이 옵션은 테스트에 유용하지만 생산 설치를 만들 때 사용해서는 안됩니다.
-p
-프로그램
진행 상황보고를 활성화합니다. 범퍼카 토토 클러스터에서 데이터를 복사하면서 대략적인 진행률 보고서가 켜져 있습니다.
-Debug
개발자 디버깅에 주로 유용한 인쇄 Verbose 디버깅 출력pg_rewind.
-v
-버전
버전 정보 표시 다음 종료.
-?
-help
도움말 표시, 출구
언제-범퍼카 토토 서버
옵션이 사용됩니다.pg_rewind또한 지원하는 환경 변수를 사용합니다libpq(참조PostgreSQL : 문서 : 12 : 33.14. 환경 토토 핫).
환경 변수pg_color
진단 메시지에서 색상을 사용할지 여부를 지정합니다. 가능한 값은항상
, auto
and절대
.
실행시pg_rewind온라인 클러스터를 범퍼카 토토로 사용하는데,pg_rewind소스 클러스터에서 슈퍼 사용자 대신 사용할 수 있습니다. 다음은 그러한 역할을 만드는 방법입니다.Rewind_user
여기 :
사용자 rewind_user 로그인 생성; rewind_user에 대한 함수 pg_catalog.pg_ls_dir (텍스트, 부울, 부울)에 대한 보조금; rewind_user에 대한 함수 pg_catalog.pg_stat_file (텍스트, 부울)에 대한 실행; rewind_user에 대한 함수 pg_catalog.pg_read_binary_file (텍스트)에 대한 Grant Execute; rewind_user;에 대한 기능 pg_catalog.pg_read_binary_file (텍스트, bigint, bigint, boolean)에 대한 보조금
실행시pg_rewind온라인 클러스터를 최근에 홍보 된 범퍼카 토토로 사용하여 a가 필요합니다Checkpoint
컨트롤 파일이 최신 타임 라인 정보를 반영하여 프로모션 후pg_rewind지정된 범퍼카 토토 클러스터를 사용하여 대상 클러스터가 다시 wound 할 수 있는지 확인하려면
기본 아이디어는 범퍼카 토토 클러스터에서 대상 클러스터로 모든 파일 시스템 수준 변경을 복사하는 것입니다.
범퍼카 토토 클러스터의 타임 라인 이력이 대상 클러스터에서 포기한 지점 앞에서 마지막 체크 포인트에서 시작하여 대상 클러스터의 WAL 로그를 스캔합니다. 각 WAL 레코드에 대해 터치 된 각 데이터 블록을 기록하십시오. 이로 인해 범퍼카 토토 클러스터가 포기한 후 대상 클러스터에서 변경된 모든 데이터 블록의 목록이 생성됩니다.
직접 파일 시스템 액세스를 사용하여 범퍼카 토토 클러스터에서 대상 클러스터로 변경된 모든 블록을 복사합니다.-소스 -pgdata
) 또는 SQL (-범퍼카 토토 서버
).
와 같은 다른 모든 파일 복사PG_XACT
및 소스 클러스터에서 대상 클러스터로의 구성 파일 (관계 파일을 제외한 모든 내용). 기본 백업과 마찬가지로 디렉토리의 내용PG_DYNSHMEM/
, pg_notify/
, PG_REPLSLOT/
, PG_SERIAL/
, PG_SNAPSHOTS/
, PG_STAT_TMP/
및PG_SUBTRANS/
소스 클러스터에서 복사 한 데이터에서 생략됩니다. 로 시작하는 모든 파일 또는 디렉토리PGSQL_TMP
backup_label
, TableSpace_map
, pg_internal.init
, postmaster.opts
andpostmaster.pid
.
장애 조치에서 생성 된 체크 포인트에서 시작하여 범퍼카 토토 클러스터에서 WAL을 적용하십시오. (엄격하게 말하면pg_rewindWAL을 적용하지 않으며, 백업 레이블 파일 만 만듭니다PostgreSQL해당 체크 포인트에서 모든 월을 재생하여 시작하십시오.)