롤 토토미리 쓰기를 지웁니다. 로그를 기록하고 선택적으로 일부 필드를 재설정합니다.pg_control파일. 이 기능은 가끔 이러한 파일이 손상된 경우 필요합니다. 그것은 사용되어야한다 이러한 이유로 인해 서버가 시작되지 않는 경우 최후의 수단으로만 사용됩니다. 부패.
이 명령을 실행한 후 다음을 시작할 수 있습니다. 하지만 데이터베이스에는 다음이 포함될 수 있다는 점에 유의하세요. 부분적으로 커밋된 트랜잭션으로 인해 데이터가 일치하지 않습니다. 당신 즉시 데이터를 덤프하고 실행해야 합니다.initdb하고 다시 로드하세요. 새로고침한 후 확인하세요. 불일치 및 필요에 따라 수리합니다.
이 유틸리티는 다음을 설치한 사용자만 실행할 수 있습니다. 서버에 대한 읽기/쓰기 액세스가 필요하기 때문입니다.datadir. 안전상의 이유로 다음을 지정해야 합니다. 명령줄의 데이터 디렉터리입니다.롤 토토환경 변수를 사용하지 않습니다PGDATA.
만약롤 토토그렇다고 불평합니다 유효한 데이터를 확인할 수 없습니다.pg_control, 어쨌든 강제로 진행하도록 할 수 있습니다. 를 지정-f(강제) 스위치. 에서 이 경우 그럴듯한 값이 누락된 값으로 대체됩니다. 데이터. 대부분의 필드가 일치할 것으로 예상할 수 있지만 수동으로 다음 OID, 다음 거래 ID, WAL 시작 주소 및 데이터베이스 로케일 필드. 처음 3개 이 중 아래에 설명된 스위치를 사용하여 설정할 수 있습니다.롤 토토자신의 환경은 로케일 필드에서 추측한 소스입니다. 조심해랭등이 환경과 일치합니다. 그initdb실행되었습니다. 만약 당신이 이러한 모든 필드에 대해 올바른 값을 결정할 수 없습니다.-f계속 사용할 수 있지만 복구된 데이터베이스는 평소보다 훨씬 더 의심스럽게 다뤄져야 합니다 --- 즉시 덤프하고 다시 로드해야 합니다.하지 마세요모든 데이터 수정 실행 덤프하기 전에 데이터베이스에서 작업을 수행해야 합니다. 부패를 더욱 악화시킬 가능성이 있습니다.
그-o, -x, 그리고-l스위치는 다음 OID, 다음을 허용합니다. 트랜잭션 ID 및 WAL 시작 주소 값이 설정됩니다. 수동으로. 이는 다음 경우에만 필요합니다.롤 토토적절한 결정을 내릴 수 없습니다 읽기에 의한 가치pg_control. 금고 다음 거래 ID의 값은 다음을 통해 결정될 수 있습니다. 가장 큰 파일 이름에 대해$PGDATA/pg_clog, 추가 1을 곱한 다음 1048576을 곱합니다. 파일 이름은 16진수로 되어 있습니다. 일반적으로 스위치를 지정하는 것이 가장 쉽습니다. 값도 16진수로 표시됩니다. 예를 들어, 만약0011은에서 가장 큰 항목입니다.pg_clog, -x 0x1200000작동합니다(5개의 후행 0이 적절한 승수를 제공합니다). WAL 시작 주소는 파일 번호보다 커야 합니다. 현재 존재하는 곳은 다음과 같습니다.$PGDATA/pg_xlog. 이것들도 16진수이고 두 개가 있습니다. 부품. 예를 들어, 만약000000FF0000003A다음에서 가장 큰 항목입니다.pg_xlog, -l 0xFF,0x3B작동합니다. 없다 OID를 넘어서는 다음 OID를 결정하는 비교적 쉬운 방법 데이터베이스에서 가장 큰 값이지만 다행히 중요하지는 않습니다. 다음 OID 설정을 올바르게 얻으려면.
그-n(작동 없음) 스위치 지시한다롤 토토to print the 다음에서 재구성된 값pg_control그런 다음 아무것도 수정하지 않고 종료합니다. 이는 주로 디버깅 도구이지만 이전에 온전한지 확인하는 데 유용할 수 있습니다. 허용롤 토토계속하려면 진짜.