윈 토토[-f] [-n] [-oOID] [-xxid] [-exid_epoch] [-mMXID] [-omxoff] [-lTimelineId,fileId,SEG]Datadir
윈 토토쓰기를 지우는 것 로그 (WAL) 및 선택적으로 다른 제어 정보를 재설정합니다 에 저장PG_CONTROL파일. 이것 이러한 파일이 발생하면 기능이 필요합니다 부패했다. 그것은 최후의 수단으로 만 사용해야합니다. 그러한 부패로 인해 서버가 시작되지 않습니다.
이 명령을 실행 한 후에는 서버이지만 데이터베이스에 포함될 수 있음을 명심하십시오. 부분적으로 커밋 된 트랜잭션으로 인한 일관성없는 데이터. 너 즉시 데이터를 덤프해야합니다. runinitdb및 다시로드. 다시로드 후 확인하십시오 필요에 따라 불일치 및 수리.
이 유틸리티는 설치 한 사용자 만 실행할 수 있습니다. 데이터에 대한 읽기/쓰기 액세스가 필요하기 때문에 서버 예배 규칙서. 안전상의 이유로 데이터를 지정해야합니다 명령 줄의 디렉토리.윈 토토환경 변수를 사용하지 않습니다pgdata.
if윈 토토이를 불평합니다 에 대한 유효한 데이터를 결정할 수 없습니다.PG_CONTROL, 어쨌든 진행하도록 강요 할 수 있습니다 지정-f(힘) 스위치. ~ 안에 이 사례는 그럴듯한 값이 누락 된 것으로 대체됩니다. 데이터. 대부분의 필드는 일치 할 것으로 예상 될 수 있지만 매뉴얼 다음 OID, 다음 거래 ID에 대한 지원이 필요할 수 있습니다. 그리고 Epoch, 다음 Multitransaction ID 및 Offset, WAL 시작 주소 및 데이터베이스 로케일 필드. 이 중 처음 6 개는 할 수 있습니다 아래에서 논의 된 스위치를 사용하여 설정해야합니다.윈 토토의 자체 환경이 소스입니다 로케일 필드에서의 추측; 조심하세요Lang등은 환경과 일치합니다.initdb가 실행되었습니다 이 모든 필드에 대한 올바른 값을 결정하려면-f여전히 사용될 수 있지만 복구 된 데이터베이스 평소보다 더 많은 의심으로 치료해야합니다. 즉시 덤프 및 재 장전이 필수적입니다.do not데이터 수정을 실행합니다 덤프하기 전에 데이터베이스에서의 작업은 부패를 악화시킬 가능성이 높습니다.
the-o, -x, -e, -m, -o및-l스위치는 다음 OID, 다음 트랜잭션 ID를 허용합니다 트랜잭션 ID의 시대, 다음 Multitransaction ID, 다음 MultitrAnsaction Offset 및 WAL 시작 주소 값이 될 것입니다 수동으로 설정하십시오. 이들은 만 필요합니다윈 토토적절한 결정을 할 수 없습니다 읽기 값PG_CONTROL. 안전한 값은 다음과 같이 결정될 수 있습니다.
다음 거래 ID (의 안전한 값-x)를 찾아 결정할 수 있습니다 디렉토리에서 숫자로 가장 큰 파일 이름PG_CLOG데이터 디렉토리 아래, 하나 추가, 그런 다음 1048576을 곱합니다. 파일 이름은 16 진수. 일반적으로 스위치를 지정하는 것이 가장 쉽습니다 16 진수의 가치도 있습니다. 예를 들어, if0011에서 가장 큰 항목입니다PG_CLOG, -x 0x1200000작동합니다 (5 개의 후행 제로가 제공합니다 적절한 승수).
다음 Multitransaction ID (에 대한 안전한 값-m)를 찾아 결정할 수 있습니다 디렉토리에서 숫자로 가장 큰 파일 이름pg_multixact/오프셋데이터에 따라 디렉토리, 하나를 추가 한 다음 65536을 곱합니다 위의 파일 이름은 16 진수이므로 가장 쉬운 방법 이를 위해서는 스위치 값을 16 진수로 지정하는 것입니다. 네 개의 0을 추가하십시오.
다음 멀티 트랜잭션 오프셋의 안전한 값 (-o)는 보면 결정할 수 있습니다 디렉토리의 수치 적으로 가장 큰 파일 이름PG_MULTIXACT/회원데이터에 따라 디렉토리, 하나를 추가 한 다음 65536을 곱합니다 위의 파일 이름은 16 진수이므로 가장 쉬운 방법 이를 위해서는 스위치 값을 16 진수로 지정하는 것입니다. 네 개의 0을 추가하십시오.
WAL 시작 주소 (-l) 현재 WAL 세그먼트 파일 이름보다 커야합니다. 디렉토리에 기존PG_XLOG데이터 디렉토리 아래. 이 이름은 또한 16 진수입니다 그리고 세 부분이 있습니다. 첫 번째 부분은입니다."타임 라인 ID"일반적으로 보관해야합니다 같은. 255보다 큰 값을 선택하지 마십시오 (0xff) 세 번째 부분의 경우; 대신 증가 두 번째 부분은 세 번째 부분을 0으로 재설정합니다. 예를 들어, 만약에000000010000320000004Ais 에서 가장 큰 항목PG_XLOG, -l 0x1,0x32,0x4b작동합니다. 그러나 만약 가장 큰 항목은입니다.0000000100003A000000ff, 선택-l 0x1,0x3b, 0x0또는 그 이상.
참고 : 윈 토토자체는 파일을 봅니다PG_XLOG기본값을 선택합니다-l마지막 기존 파일을 넘어 설정 이름. 따라서 수동 조정-l알고있는 경우에만 필요합니다 현재 존재하지 않는 WAL 세그먼트 파일PG_XLOG, 예 : 오프라인 아카이브; 또는의 내용 인 경우PG_XLOG전적으로 손실되었습니다.
다음 OID를 결정할 수있는 쉬운 방법은 없습니다. 그것은 데이터베이스에서 가장 큰 것 이상이지만 다행히도 다음 설정을 얻는 것은 중요하지 않습니다. 오른쪽.
트랜잭션 ID 에포크는 실제로 어디에나 저장되지 않습니다 에 의해 설정된 필드를 제외한 데이터베이스에서윈 토토, 따라서 모든 값은만큼 작동합니다 데이터베이스 자체에 관한 것입니다. 조정해야 할 수도 있습니다 이 값은와 같은 복제 시스템을 보장하기위한이 값Slony-I올바르게 작업 - if 따라서 주에서 적절한 가치를 얻을 수 있어야합니다. 다운 스트림 복제 데이터베이스의.
the-n(작동 없음) 스위치 지시윈 토토인쇄합니다 에서 재구성 된 값PG_CONTROL그런 다음 아무것도 수정하지 않고 종료하십시오. 이것은 주로 a입니다 디버깅 도구이지만 이전의 정신 점검으로 유용 할 수 있습니다. 허용윈 토토진행합니다 진짜.