pg_rewind — 동기화 a포스트그레SQL데이터 디렉토리와 포크된 다른 데이터 디렉토리
pg_rewind [옵션...] { -D | --대상-pgdata } 디렉토리 { --source-pgdata= | 디렉토리--스포츠 토토-서버= }connstr
pg_rewind은 클러스터의 타임라인이 분기된 후 PostgreSQL 클러스터를 동일한 클러스터의 다른 복사본과 동기화하기 위한 도구입니다. 일반적인 시나리오는 장애 조치 후 새 마스터를 따르는 대기 서버로 이전 마스터 서버를 다시 온라인으로 전환하는 것입니다.
성공적인 되감기 후, 대상 데이터 디렉토리의 상태는 소스 데이터 디렉토리의 기본 백업과 유사합니다. 새로운 기본 백업을 수행하거나 다음과 같은 도구를 사용하는 것과는 달리rsync, pg_rewind클러스터에서 변경되지 않은 관계 블록을 비교하거나 복사할 필요가 없습니다. 기존 관계 파일에서 변경된 블록만 복사됩니다. 새 관계 파일, 구성 파일 및 WAL 세그먼트를 포함한 다른 모든 파일은 전체가 복사됩니다. 따라서 데이터베이스가 크고 클러스터 간에 블록의 작은 부분만 다를 때 되감기 작업은 다른 접근 방식보다 훨씬 빠릅니다.
pg_rewind스포츠 토토 및 대상 클러스터의 타임라인 기록을 조사하여 분기된 지점을 확인하고 대상 클러스터에서 WAL을 찾을 것으로 예상합니다.pg_wal디렉토리가 분기점까지 다시 도달합니다. 분기점은 대상 타임라인, 소스 타임라인 또는 공통 조상에서 찾을 수 있습니다. 분기 후 대상 클러스터가 곧 종료되는 일반적인 장애 조치 시나리오에서는 이는 문제가 되지 않지만, 분기 후 대상 클러스터가 오랫동안 실행된 경우 이전 WAL 파일이 더 이상 존재하지 않을 수 있습니다. 이 경우 WAL 아카이브에서 다음으로 수동으로 복사할 수 있습니다.pg_wal디렉토리 또는 실행pg_rewind와 함께-cWAL 아카이브에서 자동으로 검색하는 옵션입니다. 의 사용pg_rewind장애 조치에만 국한되지 않습니다. 예를 들어 대기 서버를 승격하고 일부 쓰기 트랜잭션을 실행한 다음 되돌려 다시 대기 서버가 될 수 있습니다.
실행 후pg_rewind, 데이터 디렉터리가 일관된 상태가 되려면 WAL 재생이 완료되어야 합니다. 대상 서버가 다시 시작되면 아카이브 복구에 들어가 분기 지점 전 마지막 체크포인트부터 소스 서버에서 생성된 모든 WAL을 재생합니다. 다음과 같은 경우 WAL 중 일부를 소스 서버에서 더 이상 사용할 수 없는 경우pg_rewind실행되었으므로 다음으로 복사할 수 없습니다.pg_rewind세션, 대상 서버가 시작될 때 사용할 수 있어야 합니다. 이는 다음을 생성하여 수행할 수 있습니다.복구.신호파일을 대상 데이터 디렉토리에 넣고 적절한 구성을 통해restore_command에postgresql.conf.
pg_rewind대상 서버에 다음 중 하나가 필요합니다.wal_log_hints옵션 활성화postgresql.conf또는 클러스터가 초기화되었을 때 활성화된 데이터 체크섬initdb. 이들 중 어느 것도 현재 기본적으로 켜져 있지 않습니다.full_page_writes또한 다음으로 설정되어야 합니다.켜짐, 그러나 기본적으로 활성화되어 있습니다.
만약pg_rewind12383_12550
다음과 같이pg_rewind구성 파일 전체를 스포츠 토토에서 복사하므로 대상 서버를 다시 시작하기 전에 복구에 사용된 구성을 수정해야 할 수도 있습니다. 특히 대상이 스포츠 토토의 대기 서버로 다시 도입되는 경우 더욱 그렇습니다. 되감기 작업이 완료된 후 복구를 구성하지 않고 서버를 다시 시작하면 대상이 다시 기본에서 분기될 수 있습니다.
pg_rewind직접 쓸 수 없는 파일을 찾으면 즉시 실패합니다. 예를 들어 스포츠 토토와 대상 서버가 읽기 전용 SSL 키 및 인증서에 대해 동일한 파일 매핑을 사용하는 경우 이런 일이 발생할 수 있습니다. 이러한 파일이 대상 서버에 있는 경우 실행하기 전에 해당 파일을 제거하는 것이 좋습니다.pg_rewind. 되감기를 수행한 후 해당 파일 중 일부가 스포츠 토토에서 복사되었을 수 있으며, 이 경우 복사된 데이터를 제거하고 되감기 전에 사용된 링크 집합을 다시 복원해야 할 수 있습니다.
pg_rewind다음 명령줄 인수를 허용합니다:
-D디렉토리--target-pgdata=디렉토리이 옵션은 소스와 동기화되는 대상 데이터 디렉토리를 지정합니다. 실행하기 전에 대상 서버를 완전히 종료해야 합니다.pg_rewind
--source-pgdata=디렉토리대상을 동기화할 원본 서버의 데이터 디렉토리에 대한 파일 시스템 경로를 지정합니다. 이 옵션을 사용하려면 원본 서버를 완전히 종료해야 합니다.
--스포츠 토토-서버=connstr스포츠 토토에 연결하기 위한 libpq 연결 문자열을 지정합니다.PostgreSQL대상을 동기화할 서버입니다. 연결은 다음에서 사용하는 기능을 실행할 수 있는 충분한 권한이 있는 역할을 가진 일반(비복제) 연결이어야 합니다.pg_rewind소스 서버(자세한 내용은 참고 섹션 참조) 또는 수퍼유저 역할. 이 옵션을 사용하려면 원본 서버가 복구 모드가 아닌 실행 중이어야 합니다.
-R--write-recovery-conf생성대기.신호다음에 연결 설정 추가postgresql.auto.conf출력 디렉토리에.--스포츠 토토-서버이 옵션에는 필수입니다.
-n--시험 실행실제로 대상 디렉토리를 수정하는 것을 제외한 모든 작업을 수행하십시오.
-N--동기화 없음기본적으로,pg_rewind모든 파일이 디스크에 안전하게 기록될 때까지 기다립니다. 이 옵션으로 인해pg_rewind기다리지 않고 반환하는 것이 더 빠르지만 후속 운영 체제 충돌로 인해 데이터 디렉토리가 손상될 수 있음을 의미합니다. 일반적으로 이 옵션은 테스트에 유용하지만 프로덕션 설치에는 사용하면 안 됩니다.
-P--진행진행 상황 보고를 활성화합니다. 이 기능을 켜면 스포츠 토토 클러스터에서 데이터를 복사하는 동안 대략적인 진행 상황 보고서가 제공됩니다.
-c--복원-대상-월사용restore_command이러한 파일을 더 이상 사용할 수 없는 경우 WAL 아카이브에서 WAL 파일을 검색하기 위해 대상 클러스터 구성에 정의됨pg_wal디렉토리.
--디버그개발자 디버깅에 가장 유용한 자세한 디버깅 출력을 인쇄합니다.pg_rewind.
--종료를 보장하지 않음pg_rewind되감기 전에 대상 서버를 완전히 종료해야 합니다. 기본적으로 대상 서버가 완전히 종료되지 않으면,pg_rewind단일 사용자 모드에서 대상 서버를 시작하여 먼저 충돌 복구를 완료한 다음 중지합니다. 이 옵션을 전달하면,pg_rewind이를 건너뛰고 서버가 완전히 종료되지 않으면 즉시 오류가 발생합니다. 이 경우 사용자는 스스로 상황을 처리해야 합니다.
-V--버전버전 정보를 표시하고 종료합니다.
-?--도움말도움말을 표시한 후 종료하세요.
언제--스포츠 토토-서버옵션이 사용되었습니다.pg_rewind또한 다음에서 지원하는 환경 변수를 사용합니다libpq(참조PostgreSQL : 문서 : 13 : 33.14. 환경 토토 베이).
환경 변수PG_COLOR진단 메시지에 색상을 사용할지 여부를 지정합니다. 가능한 값은 다음과 같습니다.항상, 자동그리고절대로.
실행 시pg_rewind온라인 클러스터를 소스로 사용, 다음에서 사용하는 기능을 실행할 수 있는 충분한 권한이 있는 역할pg_rewind19635_19737rewind_user여기:
사용자 생성 rewind_user 로그인; rewind_user에 대해 pg_catalog.pg_ls_dir(text, boolean, boolean) 함수에 대한 실행 권한 부여; rewind_user에 대해 pg_catalog.pg_stat_file(text, boolean) 함수에 대한 실행 권한 부여; rewind_user에 대해 pg_catalog.pg_read_binary_file(text) 함수에 대한 실행 권한 부여; rewind_user에 대해 pg_catalog.pg_read_binary_file(text, bigint, bigint, boolean) 함수에 대한 실행 권한 부여;
실행시pg_rewind최근 승격된 소스로 온라인 클러스터를 사용하려면 다음을 실행해야 합니다.체크포인트제어 파일이 다음에서 사용되는 최신 타임라인 정보를 반영하도록 승격한 후pg_rewind지정된 소스 클러스터를 사용하여 대상 클러스터를 되돌릴 수 있는지 확인합니다.
기본 아이디어는 모든 파일 시스템 수준 변경 사항을 원본 클러스터에서 대상 클러스터로 복사하는 것입니다.
소스 클러스터의 타임라인 기록이 대상 클러스터에서 분기된 지점 이전의 마지막 체크포인트부터 시작하여 대상 클러스터의 WAL 로그를 스캔합니다. 각 WAL 레코드에 대해 터치된 각 데이터 블록을 기록합니다. 그러면 소스 클러스터가 분기된 후 대상 클러스터에서 변경된 모든 데이터 블록의 목록이 생성됩니다. 일부 WAL 파일을 더 이상 사용할 수 없으면 다시 실행해 보세요.pg_rewind와 함께-cWAL 아카이브에서 누락된 파일을 검색하는 옵션.
직접 파일 시스템 액세스를 사용하여 원본 클러스터에서 변경된 모든 블록을 대상 클러스터로 복사합니다(--source-pgdata) 또는 SQL(--스포츠 토토-서버). 이제 관계 파일은 소스와 대상의 WAL 타임라인이 분기된 지점 이전에 마지막으로 완료된 체크포인트 순간과 해당 분기 후 대상에서 변경된 모든 블록의 소스에 대한 현재 상태와 동일한 상태에 있습니다.
새 관계 파일, WAL 세그먼트를 포함한 다른 모든 파일을 복사합니다.pg_xact및 스포츠 토토 클러스터의 구성 파일을 대상 클러스터로 전송합니다. 기본 백업과 마찬가지로 디렉터리의 내용pg_dynshmem/, pg_notify/, pg_replslot/, pg_serial/, pg_snapshots/, pg_stat_tmp/및pg_subtrans/은 스포츠 토토 클러스터에서 복사된 데이터에서 생략됩니다. 파일backup_label, 테이블스페이스_맵, pg_internal.init, postmaster.opts및postmaster.pid및로 시작하는 모든 파일 또는 디렉터리pgsql_tmp, 생략되었습니다.
만들기backup_label장애 조치 시 생성된 체크포인트에서 WAL 재생을 시작하고 구성하는 파일pg_control다음의 결과로 정의된 최소 일관성 LSN이 있는 파일pg_current_wal_insert_lsn()라이브 소스에서 되감기할 때 또는 중지된 소스에서 되감기할 때 마지막 체크포인트 LSN.
목표를 시작할 때,PostgreSQL필요한 모든 WAL을 재생하여 일관된 상태의 데이터 디렉토리를 만듭니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.