Datastream은 PostgreSQL 미리 쓰기 로그 (WAL)를 읽어 소스 테이블의 행 수준 데이터 변경사항을 캡처하고 복제합니다. 데이터베이스 서버는 각 트랜잭션 변경사항을 WAL 파일에 저장합니다. WAL 보관, 제한 시간, 복제 슬롯 매개변수를 구성하고 로그 파일 증가를 최적화하여 높은 스트림 지연 시간과 스토리지 소진을 방지할 수 있습니다.
PostgreSQL WAL 파일의 구성 매개변수 설정
PostgreSQL 데이터베이스에 다음 구성 설정을 적용하는 것이 좋습니다.
max_slot_wal_keep_size: 복제 슬롯에서 사용하는 스토리지의 양을 제한하도록 이 매개변수를 설정합니다 (PostgreSQL 13 이상에서만 사용 가능). 이는 WAL 파일 크기가 전체 스토리지를 차지하고 데이터베이스가 비정상 종료될 수 있는 장기 실행 트랜잭션에서 특히 중요합니다.statement_timeout: 장기 실행 트랜잭션으로 인한 지연 시간을 줄이려면 이 파라미터를 선택한 값으로 설정합니다.max_slot_wal_keep_size을 지원하지 않는 데이터베이스에 대한 대안으로statement_timeout를 사용할 수도 있습니다.wal_sender_timeout: 이 파라미터를0(제한 시간 중지) 또는 10분 이상의 값으로 설정합니다.
스트림을 10개 넘게 만들려는 경우 또는 계획된 스트림 수 외에 다른 리소스에서 사용하는 논리 복제 슬롯 수가 10개를 초과하는 경우 다음 매개변수를 수정해야 합니다.
max_replication_slots: 데이터베이스에 설정된 복제 슬롯 수에 따라 이 매개변수의 값을 늘립니다 (스트림당 복제 슬롯 1개 필요). 서버 시작 시에만max_replication_slots를 설정할 수 있습니다.max_wal_senders: 이 파라미터의 값을max_replication_slots파라미터 값보다 크게 늘립니다. 서버를 시작할 때만max_wal_senders를 설정할 수 있습니다.
WAL 로그 파일 최적화
PostgreSQL 소스에서 데이터를 복제할 때 스트림의 지연 시간이 길어지고 WAL 로그 파일의 크기가 급격히 증가하는 것을 방지하려면 다음 주의사항을 적용하는 것이 좋습니다.
- 장기 실행 작업은 WAL 파일의 크기를 크게 늘릴 수 있으므로 피하세요.
- 일괄 작업 중에
UNLOGGED또는TEMPORARY테이블을 사용합니다. - WAL 구성을 확인하고 체크포인트 빈도를 줄이는 것이 좋습니다. 자세한 내용은 WAL 구성을 참조하세요.
- 대규모
DELETE작업을 확인하고TRUNCATE작업으로 대체하는 것이 좋습니다. 이렇게 하면 WAL 파일 데이터를 크게 줄일 수 있지만 Datastream은TRUNCATE작업을 복제하지 않으므로 주의해야 합니다.
다음 단계
- 소스로 PostgreSQL을 사용하는 기능에 대해 자세히 알아보세요.
- 소스 PostgreSQL 데이터베이스 구성에 대해 자세히 알아보세요.