미리 쓰기 로깅에 대해 설명
데이터베이스에서 INSERTS 또는 DELETES와 같은 변경을 수행하면 해당 변경 내용은 먼저 로그에 기록된 이후에만 디스크의 데이터 파일에 기록됩니다. 변경 내용이 데이터 파일에 커밋하기 전에 로그에 기록되기 때문에 이 작업을 미리 쓰기 로그라고 합니다. 정전과 같은 문제가 있는 경우 로그는 항상 최신 데이터를 보유하며 데이터베이스가 일관된 상태인지 확인하는 데 사용할 수 있습니다.
두 번째 이점은 변경 내용을 로그에 먼저 기록하면 테이블 및 인덱스에 대한 변경 내용을 개별적으로 기록하지 않고 일괄 처리할 수 있다는 것입니다. 이렇게 하면 테이블 및 인덱스를 최신 상태로 유지하는 데 필요한 디스크 쓰기 수가 줄어듭니다. 로그에 대한 쓰기는 순차적으로 완료되므로 빠릅니다. 모든 데이터를 로그에서 복구할 수 있으므로 더 느린 속도의 테이블 및 인덱스 쓰기를 일괄 처리로 안전하게 수행할 수 있습니다. 일반적으로 수많은 소규모 업데이트가 포함된 워크로드의 경우 성능이 향상됩니다.
참고 항목
PostgreSQL의 온-프레미스 구현의 경우 로그 파일은 pg_wal 디렉터리에 저장됩니다. Azure Database for PostgreSQL은 파일 시스템에 대한 액세스를 제공하지 않으므로 로그 파일의 물리적 스토리지에 대해 걱정할 필요가 없습니다.
미리 쓰기 로깅의 작동 방식을 제어하고 워크로드에 맞게 최적화할 수 있는 몇 가지 서버 매개 변수가 있습니다.
- commit_delay - 트랜잭션 커밋과 디스크로 로그 플러시 사이의 지연입니다.
- wal_buffers - WAL(미리 쓰기 로깅)을 위한 공유 메모리의 디스크 페이지 버퍼 수입니다.
- max_wal_size - 자동 검사점을 트리거하기 전에 WAL이 커질 수 있는 최대 크기입니다.
- wal_writer_delay - WAL 기록기가 수행하는 WAL 플러시 사이의 시간 간격입니다.
- wal_compression - WAL 파일의 전체 페이지 쓰기가 압축되는지 여부입니다.
- wal_level - WAL에 기록되는 정보의 양을 결정합니다. 허용되는 값은 REPLICA 또는 LOGICAL입니다.
특정 시점 복원
WAL(미리 쓰기 로그)의 주요 목적은 크래시가 발생하는 경우 데이터베이스 일관성 및 내구성을 보장하는 것입니다. 온-프레미스 버전의 PostgreSQL을 사용하면 로그를 보관 파일로 사용할 수 있으므로 구성 설정 archive_mode 및 archive_command를 사용하여 특정 시점으로 복원할 수 있습니다.
Azure Database for PostgreSQL은 기본 파일 시스템에 대한 액세스를 허용하지 않는 관리되는 서비스입니다. 그러나 모든 데이터베이스를 포함하여 서버의 자동 전체 백업은 포함됩니다. 이러한 백업을 통해 특정 시점으로 데이터를 다시 만들 수 있습니다. 백업은 자동으로 예약되며 하루에 한 번 수행됩니다. 복원이 필요한 경우 백업 보존에 지정한 일 수(최대 35일)까지 복원할 수 있습니다. 백업을 보존할 기간을 지정하려면
- Azure Portal에서 Azure Database for PostgreSQL 유연한 서버로 이동합니다.
- 개요 섹션에서 구성을 선택합니다.
- 백업 아래에서 백업 보존 기간(일)을 찾습니다. 슬라이더 막대를 사용하여 백업을 보존할 일 수를 선택할 수 있습니다.
- 저장을 선택하여 변경 사항을 보존합니다.