윈 토토 : 문서 : 9.4 : 윈 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.4 : 무지개 토토 구성 | PostgreSQL : 문서 : 9.4 : 신뢰성과 토토 로그 | 29 장. 신뢰성 및 쓰기 로그 | 무지개 토토 : 문서 : 9.4 : 회귀 테스트 |
Wal자동으로 활성화됩니다. 관리자는에 대한 디스크 공간 요구 사항을 보장하는 것 외에는 조치가 필요하지 않습니다.Wal로그가 충족되고 필요한 튜닝이 완료되었습니다 (참조섹션 29.4).
Wal로그는 디렉토리에 저장되어 있습니다pg_xlog데이터 디렉토리에서, 일련의 세그먼트 파일로서, 일반적으로 크기가 16MB 각각의 세그먼트 파일 세트로서 (그러나 크기는 변경 될 수 있습니다-With-Wal-segsize서버를 구축 할 때 옵션 구성). 각 세그먼트는 일반적으로 8kb (각각 8kb)로 나뉩니다 (이 크기는를 통해 변경할 수 있습니다.-with-blocksize옵션 구성). 로그 레코드 헤더는에 설명되어 있습니다.access/xlog.h; 레코드 내용은 기록중인 이벤트 유형에 따라 다릅니다. 세그먼트 파일은 숫자로 시작하여 숫자로 표시됩니다.000000010000000000000000. 숫자는 포장되지 않지만 가용 숫자의 재고를 소진하는 데 매우 오랜 시간이 걸립니다.
로그가 기본 데이터베이스 파일의 다른 디스크에있는 경우 유리합니다. 이것은 이동하여 달성 할 수 있습니다PG_XLOG다른 위치로의 디렉토리 (서버가 종료되는 동안) 메인 데이터 디렉토리의 원래 위치에서 새 위치까지 상징적 링크를 만듭니다..
의 목표Wal는 데이터베이스 레코드가 변경되기 전에 로그가 작성되도록하는 것이지만, 실제로 데이터를 캐시하고 아직 디스크에 저장되지 않은 경우 커널에 성공적인 쓰기를 잘못보고하는 디스크 드라이브에 의해 파괴 될 수 있습니다. 이러한 상황에서의 정전은 방해 할 수없는 데이터 손상으로 이어질 수 있습니다. 관리자는 디스크를 보유하고 있는지 확인해야합니다토토 커뮤니티'sWal로그 파일은 그러한 허위 보고서를 작성하지 않습니다. (보다섹션 29.1.)
체크 포인트가 만들어지고 로그가 플러시 된 후 파일에 체크 포인트의 위치가 저장됩니다PG_CONTROL. 따라서 복구가 시작될 때 서버가 먼저 읽습니다PG_CONTROL그리고 체크 포인트 레코드; 그런 다음 체크 포인트 레코드에 표시된 로그 위치에서 앞으로 스캔하여 REDO 작동을 수행합니다. 데이터 페이지의 전체 컨텐츠가 체크 포인트 후 첫 페이지 수정으로 로그에 저장되므로 (가정full_page_writes비활성화되지 않음), 체크 포인트가 일관된 상태로 복원되므로 모든 페이지가 변경되었습니다.
사건을 처리하려면PG_CONTROL손상되었으므로 최신 체크 포인트를 찾기 위해 기존 로그 세그먼트를 역순으로 스캔 할 가능성을 지원해야합니다. 이것은 아직 구현되지 않았습니다.PG_CONTROL는 부분 쓰기 문제가 발생하지 않을 정도로 작고 (하나의 디스크 페이지 미만),이 글을 쓰는 시점에서 읽을 수 없기 때문에 데이터베이스 실패에 대한보고는 없었습니다.PG_CONTROL자체. 그래서 그것은 이론적으로 약한 지점이지만PG_CONTROL실제로 문제가되지 않는 것 같습니다.