롤 토토미리 쓰기를 지웁니다. 로그(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을 곱합니다. 위에서는 파일 이름이 16진수이므로 가장 쉬운 방법은 이를 수행하려면 스위치 값을 16진수로 지정하고 4개의 0을 추가하세요.
다음 다중 트랜잭션 오프셋을 위한 안전한 값 (-O)은 다음을 통해 확인할 수 있습니다. 디렉토리에서 수치적으로 가장 큰 파일 이름에 대해pg_multixact/members데이터 아래 디렉터리에 1을 더한 다음 65536을 곱합니다. 위에서는 파일 이름이 16진수이므로 가장 쉬운 방법은 이를 수행하려면 스위치 값을 16진수로 지정하고 4개의 0을 추가하세요.
WAL 시작 주소(-l) 현재 WAL 세그먼트 파일 이름보다 커야 합니다. 디렉토리에 존재함pg_xlog데이터 디렉토리 아래. 이 이름은 16진수로도 표시됩니다. 세 부분으로 구성됩니다. 첫 번째 부분은"타임라인 ID"일반적으로 유지되어야 합니다. 동일합니다. 255()보다 큰 값을 선택하지 마십시오.0xFF) 세 번째 부분; 대신 증가 두 번째 부분을 삭제하고 세 번째 부분을 0으로 재설정합니다. 예를 들어, 만일00000001000000320000004A이것은 에서 가장 큰 항목pg_xlog, -l 0x1,0x32,0x4B작동합니다; 하지만 만약에 가장 큰 항목은 다음과 같습니다.000000010000003A000000FF, 선택-l 0x1,0x3B,0x0또는 그 이상.
참고: 롤 토토자체는 다음의 파일을 봅니다pg_xlog기본값을 선택합니다-l마지막 기존 파일 이후 설정 이름. 따라서 수동 조정-l당신이 알고 있는 경우에만 필요합니다 현재 존재하지 않는 WAL 세그먼트 파일 중pg_xlog(예: 오프라인 아카이브; 또는 다음의 내용인 경우pg_xlog완전히 사라졌습니다.
다음 OID를 결정하는 비교적 쉬운 방법은 없습니다. 이는 데이터베이스에서 가장 큰 것보다 크지만 다행히 다음 OID 설정을 얻는 것은 중요하지 않습니다. 그렇죠.
트랜잭션 ID 에포크는 실제로 어디에도 저장되지 않습니다 다음으로 설정된 필드를 제외한 데이터베이스에서롤 토토, 따라서 어떤 값이든 지금까지는 작동합니다. 데이터베이스 자체가 관련됩니다. 조정해야 할 수도 있습니다. 이 값은 다음과 같은 복제 시스템을 보장하기 위한 것입니다.슬로니-I제대로 작동 — 만약 따라서 국가로부터 적절한 값을 얻을 수 있어야 합니다. 다운스트림 복제 데이터베이스의.
그-n(작동 없음) 스위치 지시한다롤 토토인쇄하려면 다음에서 재구성된 값pg_control그런 다음 아무것도 수정하지 않고 종료합니다. 이는 주로 디버깅 도구이지만 이전에 온전한지 확인하는 데 유용할 수 있습니다. 허용롤 토토진행하다 진짜.
그-V그리고--버전옵션 인쇄롤 토토버전을 종료하고 종료합니다. 옵션-?그리고--도움말지원되는 인수를 표시하고 종료합니다.