30.6. 토토 베이 Internals#

토토 베이자동으로 활성화됩니다. 관리자는에 대한 디스크 공간 요구 사항을 보장하는 것 외에는 조치가 필요하지 않습니다.토토 베이파일이 충족되고 필요한 튜닝이 완료되었습니다 (참조섹션 30.5).

토토 베이레코드는에 추가되었습니다.토토 베이파일 각 새 레코드가 작성되었습니다. 삽입 위치는 로그 시퀀스 번호 (로 설명됩니다.LSN) 토토 베이에 바이트 오프셋 인 각각의 새로운 레코드마다 단조롭게 증가합니다.LSN값은 데이터 유형으로 리턴됩니다PG_LSN. 값을 비교하여의 부피를 계산할 수 있습니다.토토 베이이를 분리하는 데이터이므로 복제 및 복구의 진행 상황을 측정하는 데 사용됩니다.

토토 베이파일은 디렉토리에 저장되어 있습니다PG_토토 베이데이터 디렉토리 아래에서, 일련의 세그먼트 파일로서, 일반적으로 16MB 크기의 세그먼트 파일로서 (그러나 크기는를 변경하여 크기를 변경할 수 있습니다-토토 베이-segsize initdb옵션). 각 세그먼트는 일반적으로 8kb (각각 8kb)로 나뉩니다 (이 크기는를 통해 변경할 수 있습니다.-with-blocksize옵션 구성). WAL 레코드 헤더는에 설명되어 있습니다.Access/Xlogrecord.h; 레코드 내용은 기록중인 이벤트 유형에 따라 다릅니다.000000010000000000000001. 숫자는 포장되지 않지만 가용 숫자의 재고를 소진하는 데 매우 오랜 시간이 걸립니다.

토토 베이이 기본 데이터베이스 파일과 다른 디스크에 위치한 경우 유리합니다. 이것은 이동하여 달성 할 수 있습니다PG_토토 베이다른 위치로의 디렉토리 (서버가 종료되는 동안) 메인 데이터 디렉토리의 원래 위치에서 새 위치까지 상징적 링크를 생성합니다.

의 목표토토 베이| 데이터베이스 레코드가 변경되기 전에 로그가 작성되도록하는 것이지만 디스크 드라이브로이를 파괴 할 수 있습니다실제로 데이터를 캐시하고 아직 디스크에 저장되지 않은 경우 커널에 성공적인 쓰기를 잘못보고합니다. 이러한 상황에서의 정전은 방해 할 수없는 데이터 손상으로 이어질 수 있습니다.PostgreSQL's토토 베이파일은 그러한 허위 보고서를 작성하지 않습니다. (보다섹션 30.1.)

체크 포인트가 만들어지고 토토 베이이 플러시 된 후 파일에 체크 포인트의 위치가 저장됩니다PG_CONTROL. 따라서 복구가 시작될 때 서버가 먼저 읽습니다PG_CONTROL그리고 체크 포인트 레코드; 그런 다음 체크 포인트 레코드에 표시된 WAL 위치에서 앞으로 스캔하여 REDO 작업을 수행합니다.full_page_writes비활성화되지 않음), 체크 포인트가 일관된 상태로 복원되기 때문에 모든 페이지가 변경되었습니다.

사례를 처리하려면PG_CONTROL손상되었으므로 최신 체크 포인트를 찾기 위해 기존 WAL 세그먼트를 역순으로 스캔 할 가능성을 지원해야합니다. 이것은 아직 구현되지 않았습니다.PG_CONTROL는 부분 쓰기 문제가 발생하지 않을 정도로 작고 (하나의 디스크 페이지 미만),이 글을 쓰는 시점에서 읽을 수 없기 때문에 데이터베이스 고장에 대한보고는 없었습니다.PG_CONTROL자체. 그래서 그것은 이론적으로 약한 지점이지만PG_CONTROL실제로 문제가되지 않는 것 같습니다.

정정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면