사설 토토미리 쓰기 로그를 지웁니다. (WAL) 및 선택적으로 저장된 다른 제어 정보를 재설정합니다. 에서pg_control파일. 이 기능은 이러한 파일이 손상된 경우 때때로 필요합니다. 그래야 한다 서버가 시작되지 않을 때 최후의 수단으로만 사용됩니다. 이런 부패.
이 명령을 실행한 후 다음을 시작할 수 있습니다. 하지만 데이터베이스에는 다음이 포함될 수 있다는 점을 명심하세요. 부분적으로 커밋된 트랜잭션으로 인해 데이터가 일치하지 않습니다. 당신 즉시 데이터를 덤프하고 실행해야 합니다.initdb하고 다시 로드하세요. 새로고침한 후 확인하세요. 불일치 및 필요에 따라 수리합니다.
이 유틸리티는 다음을 설치한 사용자만 실행할 수 있습니다. 서버(데이터에 대한 읽기/쓰기 액세스가 필요하기 때문) 디렉토리. 안전상의 이유로 데이터 디렉터리를 지정해야 합니다. 명령줄에서.사설 토토하지 않습니다 환경 변수를 사용하십시오.PGDATA.
만약사설 토토그렇다고 불평해요 유효한 데이터를 확인할 수 없습니다.pg_control, 어쨌든 강제로 진행하도록 할 수 있습니다. 를 지정-f(강제) 옵션. 이에 누락된 데이터는 그럴듯한 값으로 대체됩니다. 대부분의 필드가 일치할 것으로 예상할 수 있지만 수동 지원 다음 OID, 다음 트랜잭션 ID 및 에포크에 필요할 수 있습니다. 다음 다중 트랜잭션 ID 및 오프셋, WAL 시작 주소 필드. 이러한 필드는 아래 설명된 옵션을 사용하여 설정할 수 있습니다. 이러한 모든 항목에 대해 올바른 값을 결정할 수 없는 경우 필드,-f계속 사용할 수 있지만 복구된 데이터베이스는 그보다 훨씬 더 의심스럽게 다루어야 합니다. 평소: 즉시 덤프하고 다시 로드해야 합니다.하지 마세요모든 데이터 수정 실행 덤프하기 전에 데이터베이스에서 작업을 수행해야 합니다. 부패를 더욱 악화시킬 가능성이 있습니다.
그-o, -x, -e, -m, -O및-l옵션을 사용하면 다음 OID, 다음 트랜잭션 ID, 다음 트랜잭션 ID의 에포크, 다음 가장 오래된 다중 트랜잭션 ID, 다음 다중 트랜잭션 오프셋, WAL 시작 주소 값은 수동으로 설정됩니다. 이것들은 단지 다음과 같은 경우에 필요합니다.사설 토토할 수 없습니다 읽어서 적절한 값을 결정하십시오.pg_control. 안전한 값은 다음과 같이 결정될 수 있습니다. 다음과 같습니다:
다음 거래 ID의 안전한 값(-x)은 수치적으로 찾아보면 알 수 있습니다. 디렉터리에서 가장 큰 파일 이름pg_clog데이터 디렉토리 아래에 하나를 추가하고 그런 다음 1048576을 곱합니다. 파일 이름은 다음과 같습니다. 16진수. 일반적으로 옵션 값을 지정하는 것이 가장 쉽습니다. 16진수도. 예를 들어, 만약0011이다 에서 가장 큰 항목pg_clog, -x 0x1200000작동합니다(뒤에 0이 5개 있으면 적절한 승수).
다음 다중 트랜잭션 ID의 안전한 값(첫 번째 부분-m)는 다음을 검색하여 결정할 수 있습니다. 디렉토리에서 숫자로 가장 큰 파일 이름pg_multixact/오프셋데이터 디렉토리 아래, 1을 더한 다음 65536을 곱합니다. 반대로 안전한 값은 가장 오래된 다중 거래 ID(두 번째 부분-m)은 수치적으로 찾아보면 알 수 있습니다. 동일한 디렉터리에서 가장 작은 파일 이름에 65536을 곱합니다. 위와 같이 파일 이름은 16진수로 되어 있으므로 가장 쉬운 방법은 이는 옵션 값을 16진수로 지정하고 추가하는 것입니다. 0이 4개 있습니다.
다음 다중 트랜잭션 오프셋을 위한 안전한 값(-O)는 수치적으로 찾아보면 알 수 있습니다. 디렉터리에서 가장 큰 파일 이름pg_multixact/members데이터 디렉토리 아래, 1을 더한 후 52352를 곱합니다. 위와 같이 파일 이름은 16진수로 되어 있습니다. 저거처럼 간단한 레시피는 없어요 0을 추가하는 것 이상.
WAL 시작 주소(-l)는 다음과 같아야 합니다. 현재 존재하는 WAL 세그먼트 파일 이름보다 큽니다. 디렉토리pg_xlog데이터 아래 디렉토리. 이 이름도 16진수로 되어 있으며 세 개의 이름이 있습니다. 부품. 첫 번째 부분은"타임라인 아이디"일반적으로 동일하게 유지되어야 합니다. 예를 들어, 만약00000001000000320000004A가장 크다 입장pg_xlog, 사용-l 00000001000000320000004B이상.
참고: 사설 토토그 자체는 보인다 파일에서pg_xlog그리고 다음을 선택합니다 기본값-l마지막 기존을 넘어서는 설정 파일 이름. 따라서 수동 조정-lWAL을 알고 있는 경우에만 필요합니다. 현재 존재하지 않는 세그먼트 파일pg_xlog(예: 오프라인 아카이브의 항목) 또는 만약에 내용이pg_xlog분실되었습니다 완전히.
다음 OID를 결정하는 비교적 쉬운 방법은 없습니다. 데이터베이스에서 가장 큰 것 이상이지만 다행히도 그렇지 않습니다. 다음 OID 설정을 올바르게 수행하는 것이 중요합니다.
트랜잭션 ID 에포크는 실제로 다음의 어느 곳에도 저장되지 않습니다. 다음으로 설정된 필드를 제외한 데이터베이스사설 토토이므로 어떤 값이든 작동합니다. 데이터베이스 자체가 관련됩니다. 이 값을 조정해야 할 수도 있습니다. 다음과 같은 복제 시스템을 보장합니다.슬로니-I제대로 작동합니다. 그렇다면 적절합니다. 값은 다운스트림 상태에서 얻을 수 있어야 합니다. 복제된 데이터베이스입니다.
그-n(작업 없음) 옵션 지시사설 토토값을 인쇄하려면 에서 재구성됨pg_control그리고 나서 아무것도 수정하지 않고 종료합니다. 이것은 주로 디버깅 도구입니다. 하지만 허용하기 전에 온전한 상태를 확인하는 데 유용할 수 있습니다.사설 토토실제로 진행합니다.
그-V그리고--버전옵션 인쇄사설 토토버전을 종료하고 종료합니다. 옵션-?그리고--도움말표시 지원되는 인수를 입력하고 종료합니다.