RDS for PostgreSQL을 사용하여 지연 복제 구성
개요 및 이점
RDS for PostgreSQL의 지연 복제 기능을 사용하면 의도적으로 기본 데이터베이스에서 하나 이상의 대기(읽기 전용 복제본) 서버로의 데이터 변경 복제를 지연할 수 있습니다. 이렇게 하면 모든 복제본에 즉시 전파될 수 있는 데이터 손상, 우발적인 데이터 손실 또는 잘못된 트랜잭션에 대한 중요한 보호를 제공합니다.
지연된 복제는 다음 RDS for PostgreSQL 버전에서 지원됩니다.
-
14.19 이상의 14 버전
-
15.14 이상의 15 버전
-
16.10 이상의 16 버전
-
17.6 이상의 17 버전
복제 프로세스에 시간 지연을 도입하면 전체 DB 클러스터에 영향을 미치기 전에 데이터 관련 인시던트를 감지하고 대응할 수 있는 기회를 얻을 수 있습니다. 지연 복제의 주요 이점은 다음과 같습니다.
-
실수로 인한 삭제, 업데이트 또는 기타 논리적 실수로부터 복구할 수 있습니다.
-
DB 클러스터 간에 손상된 데이터가 분산되지 않도록 버퍼를 제공합니다.
-
기존 백업 전략을 보완하는 추가 복구 시점 옵션을 제공합니다.
-
조직의 특정 요구 사항 및 위험 허용치를 기반으로 지연 기간을 구성할 수 있습니다.
지연 복제 활성화 및 구성
RDS for PostgreSQL 읽기 전용 복제본에서 지연 복제를 활성화하려면 다음 단계를 따르세요.
참고
캐스케이드된 읽기 전용 복제본의 경우 아래 설명된 것과 동일한 recovery_min_apply_delay 파라미터와 단계를 사용합니다.
지연 복제 활성화
-
사용자 지정 파라미터 그룹을 새로 생성하거나 기존 그룹을 수정합니다. 자세한 내용은 Amazon RDS DB 인스턴스용 DB 파라미터 그룹 섹션을 참조하세요.
-
파라미터 그룹에서 다음과 같이
recovery_min_apply_delay파라미터를 구성합니다.-
값을 원하는 지연 시간으로 밀리초 단위로 설정합니다. 예를 들어 1시간 지연의 경우 3,600,000입니다.
-
허용되는 범위: 0~86,400,000ms(0~24시간)
-
기본값: 0
-
-
지연된 복제에 대해 구성하려는 읽기 전용 복제본 인스턴스에 파라미터 그룹을 적용합니다.
-
변경 사항을 적용하려면 복제본 인스턴스를 재부팅합니다.
참고
recovery_min_apply_delay형식은 동적 파라미터입니다. 인스턴스에 이미 연결된 기존 파라미터 그룹을 수정하면 재부팅할 필요 없이 변경 사항이 즉시 적용됩니다. 그러나 인스턴스에 새 파라미터 그룹을 적용할 때는 변경 사항을 적용하려면 재부팅해야 합니다.
지연된 복제 복구 관리
지연 복제는 기존의 특정 시점으로 복구 방법이 충분하지 않거나 시간이 너무 많이 걸릴 수 있는 시나리오에서 특히 유용합니다.
지연된 복제 기간 동안 다음 PostgreSQL 함수를 사용하여 복구 프로세스를 관리할 수 있습니다.
-
pg_wal_replay_pause(): 지연된 복제본에서 복구 프로세스를 일시 중지하도록 요청합니다. -
pg_wal_replay_resume(): 복구 프로세스가 이전에 일시 중지된 경우 다시 시작합니다. -
pg_is_wal_replay_paused(): 복구 프로세스가 현재 일시 중지되었는지 확인합니다. -
pg_get_wal_replay_pause_state(): 복구 프로세스의 현재 상태(일시 중지, 일시 중지 요청 또는 일시 중지되지 않음)를 가져옵니다.
rds_superuser 역할이 있는 사용자는 pg_wal_replay_pause() 및 pg_wal_replay_resume()에 대한 EXECUTE 권한을 가집니다. 다른 데이터베이스 사용자가 이러한 함수에 액세스해야 하는 경우 rds_superuser 역할을 부여해야 합니다. rds_superuser 역할에 대한 자세한 내용은 rds_superuser 역할 이해 섹션을 참조하세요.
pg_is_wal_replay_paused() 및 pg_get_wal_replay_pause_state()와 같은 다른 함수에 액세스하려면 rds_superuser 역할이 필요하지 않습니다.
다음 복구 대상 파라미터를 사용하여 지연된 복제본이 복구되는 시점을 정확하게 제어할 수 있습니다. 이러한 파라미터는 정적이므로 변경 사항을 적용하려면 데이터베이스를 재부팅해야 합니다.
-
recovery_target
-
recovery_target_lsn
-
recovery_target_name
-
recovery_target_time
-
recovery_target_xid
-
recovery_target_inclusive
중요
복구 대상 파라미터는 한 번에 하나만 지정할 수 있습니다. 구성 파일에서 여러 복구 대상 파라미터를 구성하면 오류가 발생합니다.
계획 고려 사항
RDS for PostgreSQL을 사용하여 지연 복제를 계획할 때는 다음 사항을 고려하세요.
-
rdsrepladmin자격 증명 자동 교체(90일마다 발생) 중에 지연된 읽기 전용 복제본이 일시적으로REPLICATION_ERROR상태가 될 수 있습니다. 지연된 복제본에 구성된 지연을 유지하기에 충분한 WAL 로그가 있는 경우, WAL 수신기 프로세스가 일시 중지되어 소스에 WAL 누적이 발생할 수 있습니다. 스토리지가 가득 차지 않도록 복제본의 복제 상태와 소스의 스토리지 사용량을 모니터링해야 합니다. -
지연된 읽기 전용 복제본에 시스템 이벤트(예: 재부팅 또는 재시작)가 발생하면 구성된 지연 기간이 만료될 때까지 WAL 수신기 프로세스가 비활성 상태로 유지되는
REPLICATION_ERROR상태로 전환됩니다. 이 동작으로 인해 소스 인스턴스에 WAL이 누적되어 스토리지가 소진될 수 있습니다. 다음 예방 조치를 고려하세요.-
소스 인스턴스의 스토리지 사용률을 모니터링하도록 CloudWatch 경보를 구성합니다.
-
스토리지 오토 스케일링을 활성화하여 예상치 못한 WAL 증가를 처리합니다.
-
복제 슬롯당 WAL 보존을 제한하도록 소스 인스턴스의
max_slot_wal_keep_size파라미터를 설정합니다. -
복제 지연 및 슬롯 상태를 정기적으로 모니터링합니다.
-
-
지연 시간이 길어지면 복제본에 대한 WAL 로그가 증가하여 스토리지가 더 많이 소비됩니다. CloudWatch 경보를 사용하여 스토리지 공간을 모니터링하거나, 오토 스케일링을 활성화하거나, 필요한 경우 복제본을 따라잡습니다.
-
지연된 읽기 전용 복제본을 승격할 때
recovery_min_apply_delay파라미터가 적용되지 않으며, 보류 중인 모든 WAL 레코드가 즉시 적용됩니다. -
recovery_min_apply_delay파라미터는 계단식 복제 설정의 각 수준에 독립적입니다. 복제본에 지연을 설정해도 캐스케이드된 복제본의 지연에는 추가되지 않습니다.
자세한 내용은 RDS for PostgreSQL 읽기 전용 복제본 설명서와 RDS for PostgreSQL 재해 복구 설명서를 참조하세요.
제한 사항 이해
Amazon RDS for PostgreSQL의 지연 복제 기능에는 다음과 같은 제한 사항이 있습니다.
-
블루/그린 배포는 지연 복제를 구성할 때 다음과 같은 제한이 있습니다.
-
그린 소스 인스턴스 - 파라미터 그룹에 구성된 경우에도
recovery_min_apply_delay parameter는 무시됩니다. 그린 소스 인스턴스의 지연 설정은 적용되지 않습니다. -
녹색 복제본 인스턴스 -
recovery_min_apply_delay parameter가 완전히 지원되고 PostgreSQL 구성 파일에 적용됩니다. 지연 설정은 전환 워크플로 중에 예상대로 작동합니다. -
메이저 버전 업그레이드를 위한 RDS 블루/그린 배포
-
-
메이저 버전 업그레이드 중에 지연된 읽기 전용 복제본은 가동 중지 시간을 최소화하기 위해 소스 인스턴스가 업그레이드 프로세스를 진행할 수 있도록 자동으로 종료됩니다. 소스 인스턴스가 업그레이드를 완료한 후 지연된 복제본을 수동으로 다시 생성해야 합니다.
-
지연 복제는 다음 기능과 호환되지 않습니다.
-
RDS for PostgreSQL 논리적 복제
-
RDS for PostgreSQL 다중 AZ 클러스터(인바운드 및 아웃바운드 복제 모두 포함)
-
Aurora PostgreSQL
-