

# RDS for PostgreSQL을 사용하여 지연 복제 구성
<a name="rpg-delayed-replication"></a>

## 개요 및 이점
<a name="rpg-delayed-replication-overview"></a>

RDS for PostgreSQL의 지연 복제 기능을 사용하면 의도적으로 기본 데이터베이스에서 하나 이상의 대기(읽기 전용 복제본) 서버로의 데이터 변경 복제를 지연할 수 있습니다. 이렇게 하면 모든 복제본에 즉시 전파될 수 있는 데이터 손상, 우발적인 데이터 손실 또는 잘못된 트랜잭션에 대한 중요한 보호를 제공합니다.

지연된 복제는 다음 RDS for PostgreSQL 버전에서 지원됩니다.
+ 14.19 이상의 14 버전
+ 15.14 이상의 15 버전
+ 16.10 이상의 16 버전
+ 17.6 이상의 17 버전

복제 프로세스에 시간 지연을 도입하면 전체 DB 클러스터에 영향을 미치기 전에 데이터 관련 인시던트를 감지하고 대응할 수 있는 기회를 얻을 수 있습니다. 지연 복제의 주요 이점은 다음과 같습니다.
+ 실수로 인한 삭제, 업데이트 또는 기타 논리적 실수로부터 복구할 수 있습니다.
+ DB 클러스터 간에 손상된 데이터가 분산되지 않도록 버퍼를 제공합니다.
+ 기존 백업 전략을 보완하는 추가 복구 시점 옵션을 제공합니다.
+ 조직의 특정 요구 사항 및 위험 허용치를 기반으로 지연 기간을 구성할 수 있습니다.

## 지연 복제 활성화 및 구성
<a name="enabling-rpg-delayed-replication"></a>

RDS for PostgreSQL 읽기 전용 복제본에서 지연 복제를 활성화하려면 다음 단계를 따르세요.

**참고**  
캐스케이드된 읽기 전용 복제본의 경우 아래 설명된 것과 동일한 `recovery_min_apply_delay` 파라미터와 단계를 사용합니다.

**지연 복제 활성화**

1. 사용자 지정 파라미터 그룹을 새로 생성하거나 기존 그룹을 수정합니다. 자세한 내용은 [Amazon RDS DB 인스턴스용 DB 파라미터 그룹](USER_WorkingWithDBInstanceParamGroups.md) 섹션을 참조하세요.

1. 파라미터 그룹에서 다음과 같이 `recovery_min_apply_delay` 파라미터를 구성합니다.
   + 값을 원하는 지연 시간으로 밀리초 단위로 설정합니다. 예를 들어 1시간 지연의 경우 3,600,000입니다.
   + 허용되는 범위: 0\~86,400,000ms(0\~24시간)
   + 기본값: 0

1. 지연된 복제에 대해 구성하려는 읽기 전용 복제본 인스턴스에 파라미터 그룹을 적용합니다.

1. 변경 사항을 적용하려면 복제본 인스턴스를 재부팅합니다.
**참고**  
`recovery_min_apply_delay` 형식은 동적 파라미터입니다. 인스턴스에 이미 연결된 기존 파라미터 그룹을 수정하면 재부팅할 필요 없이 변경 사항이 즉시 적용됩니다. 그러나 인스턴스에 새 파라미터 그룹을 적용할 때는 변경 사항을 적용하려면 재부팅해야 합니다.

## 지연된 복제 복구 관리
<a name="managing-rpg-delayed-replication"></a>

지연 복제는 기존의 특정 시점으로 복구 방법이 충분하지 않거나 시간이 너무 많이 걸릴 수 있는 시나리오에서 특히 유용합니다.

지연된 복제 기간 동안 다음 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 역할 이해](Appendix.PostgreSQL.CommonDBATasks.Roles.rds_superuser.md) 섹션을 참조하세요.

`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

**중요**  
복구 대상 파라미터는 한 번에 하나만 지정할 수 있습니다. 구성 파일에서 여러 복구 대상 파라미터를 구성하면 오류가 발생합니다.

## 계획 고려 사항
<a name="rpg-delayed-replication-considerations"></a>

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 읽기 전용 복제본 설명서](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html)와 [RDS for PostgreSQL 재해 복구 설명서](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PostgreSQL.Disaster-Recovery.html)를 참조하세요.

## 제한 사항 이해
<a name="rpg-delayed-replication-limitations"></a>

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