PostgreSQL을 사용한 읽기 전용 복제본 구성 - Amazon Relational Database Service

PostgreSQL을 사용한 읽기 전용 복제본 구성

RDS for PostgreSQL은 PostgreSQL의 기본 스트리밍 복제 기능을 사용하여 소스 DB 인스턴스의 읽기 전용 복제본을 생성합니다. 이 읽기 전용 복제본 DB 인스턴스는 비동기식으로 생성된 소스 DB 인스턴스의 물리적 복제본입니다. 이는 소스 DB 인스턴스와 읽기 전용 복제본 간에 미리 쓰기 로그(WAL) 데이터를 전송하는 특수 연결에 의해 생성됩니다. 자세한 내용은 PostgreSQL 설명서에서 스트리밍 복제를 참조하세요.

PostgreSQL은 소스 DB 인스턴스에서 이루어지는 대로 이 보안 연결에 대한 데이터베이스 변경 사항을 비동기식으로 스트리밍합니다. ssl 파라미터를 1로 설정하여 클라이언트 애플리케이션에서 소스 DB 인스턴스 또는 읽기 전용 복제본으로의 통신을 암호화할 수 있습니다. 자세한 내용은 PostgreSQL DB 인스턴스와 함께 SSL 사용을 참조하세요.

PostgreSQL은 복제 역할을 사용하여 스트리밍 복제를 실행합니다. 이 역할에는 권한이 부여되지만, 데이터까지 수정하지는 못합니다. PostgreSQL은 단일 프로세스를 통해 복제를 처리합니다.

소스 DB 인스턴스의 작업 또는 사용자에게 영향을 주지 않고 PostgreSQL 읽기 전용 복제본을 생성할 수 있습니다. Amazon RDS는 서비스에 영향을 미치지 않고 소스 DB 인스턴스와 읽기 전용 복제본에 필요한 파라미터와 권한을 설정합니다. 소스 DB 인스턴스의 스냅샷이 생성되고, 이 스냅샷이 읽기 전용 복제본을 생성하는 데 사용됩니다. 향후 언제든지 읽기 전용 복제본을 삭제해도 중단이 발생하지 않습니다.

동일 리전 내의 소스 DB 인스턴스 하나에서 최대 15개까지 읽기 전용 복제본을 생성할 수 있습니다. RDS for PostgreSQL 14.1부터는 소스 DB 인스턴스에서 체인(계단식)에 최대 3가지 수준의 읽기 전용 복제본을 생성할 수도 있습니다. 자세한 내용은 RDS for PostgreSQL에서의 계단식 읽기 전용 복제본 사용 섹션을 참조하세요. 모든 경우에 소스 DB 인스턴스에는 자동 백업이 구성되어야 합니다. 이 작업을 수행하려면 DB 인스턴스의 백업 보존 기간을 0이 아닌 값으로 설정하면 됩니다. 자세한 내용은 읽기 전용 복제본 생성을 참조하세요.

소스 DB 인스턴스와 동일한 AWS 리전에 RDS for PostgreSQL DB 인스턴스의 읽기 전용 복제본을 생성할 수 있습니다. 이를 리전 내 복제라고도 합니다. 소스 DB 인스턴스와 다른 AWS 리전에서 읽기 전용 복제본을 생성할 수도 있습니다. 이를 교차 리전 복제라고도 합니다. 교차 리전 읽기 전용 복제본 설정에 대한 자세한 내용은 다른 에서 읽기 전용 복제본 생성AWS 리전 섹션을 참조하세요. 리전 내 및 교차 리전에 대한 복제 프로세스를 지원하는 다양한 메커니즘은 서로 다른 RDS for PostgreSQL 버전에서 스트리밍 복제가 작동하는 방식에 설명된 대로 RDS for PostgreSQL 버전에 따라 약간 다릅니다.

효과적인 복제를 위해서는 읽기 전용 복제본도 각각 원본 DB 인스턴스와 동일한 양의 컴퓨팅 및 스토리지 리소스를 가져야 합니다. 소스 DB 인스턴스 크기를 조정하는 경우 읽기 전용 복제본 크기도 조정됩니다.

Amazon RDS는 파라미터가 읽기 전용 복제본의 시작을 방해하는 경우 읽기 전용 복제본의 호환되지 않는 파라미터를 재정의합니다. 예를 들어 max_connections 파라미터 값이 읽기 전용 복제본보다 원본 DB 인스턴스에서 더 크다고 가정하겠습니다. 이 경우 Amazon RDS가 원본 DB 인스턴스의 파라미터 값이 동일하도록 읽기 전용 복제본의 파라미터를 업데이트합니다.

RDS for PostgreSQL 읽기 전용 복제본은 소스 DB 인스턴스의 외부 데이터 래퍼(FDW)를 통해 사용 가능한 외부 데이터베이스에 액세스할 수 있습니다. 예를 들어 RDS for PostgreSQL DB 인스턴스에서 mysql_fdw 래퍼를 사용하여 RDS for MySQL의 데이터에 액세스한다고 가정해봅니다. 이 경우 읽기 전용 복제본도 해당 데이터에 액세스할 수 있습니다. 기타 지원되는 FDW는 oracle_fdw, postgres_fdw, tds_fdw입니다. 자세한 내용은 Amazon RDS for PostgreSQL용 지원되는 외부 데이터 래퍼 작업을 참조하세요.

다중 AZ 구성을 통한 RDS for PostgreSQL 읽기 전용 복제본 사용

단일 AZ 또는 다중 AZ DB 인스턴스를 통해 읽기 전용 복제본을 생성할 수 있습니다. 다중 AZ 배포는 대기 복제본을 통해 중요 데이터의 내구성과 가용성을 개선하는 데 사용할 수 있습니다. 대기 본제본은 소스 DB가 장애 조치될 경우 워크로드를 가정할 수 있는 전담 읽기 전용 복제본입니다. 대기 복제본을 사용하여 읽기 트래픽을 처리할 수 없습니다. 단, 트래픽이 많은 다중 AZ DB 인스턴스에서 읽기 전용 쿼리를 오프로드할 목적으로 읽기 전용 복제본을 생성할 수는 있습니다. 다중 AZ 배포에 대한 자세한 내용은 Amazon RDS에 대한 다중 AZ 인스턴스 배포 섹션을 참조하세요.

다중 AZ 배포의 소스 DB 인스턴스가 대기로 장애 조치되는 경우 연결된 읽기 전용 복제본이 전환되어 대기(이제는 프라이머리)를 복제 소스로 사용합니다. RDS for PostgreSQL 버전에 따라 다음과 같이 읽기 전용 복제본을 다시 시작해야 할 수 있습니다.

  • PostgreSQL 13 이상 버전 - 재시작이 필요하지 않습니다. 읽기 전용 복제본이 새 프라이머리 복제본과 자동으로 동기화됩니다. 그러나 경우에 따라 클라이언트 애플리케이션이 읽기 전용 복제본에 대한 도메인 이름 서비스(DNS) 세부 정보를 캐시할 수 있습니다. 이 경우에는 Time-to-Live(TTL) 값을 30초 미만으로 설정합니다. 이렇게 하면 읽기 전용 복제본이 오래된 IP 주소를 보유하지 못하게 되므로 새 프라이머리 복제본과 동기화되지 않습니다. 이 방법과 기타 모범 사례에 대해 자세히 알아보려면 Amazon RDS 기본 운영 지침 섹션을 참조하세요.

  • PostgreSQL 12 및 모든 이전 버전 - 대기 복제본(현재 프라이머리)의 IP 주소와 인스턴스 이름이 다르기 때문에 대기 복제본으로 장애 조치 후 읽기 전용 복제본이 자동으로 다시 시작됩니다. 다시 시작하면 읽기 전용 복제본이 새 프라이머리 복제본과 동기화됩니다.

장애 조치에 대해 자세히 알아보려면 Amazon RDS에 대한 다중 AZ DB 인스턴스 장애 조치 섹션을 참조하세요. 다중 AZ 배포에서 읽기 전용 복제본이 작동하는 방식에 대한 자세한 내용은 DB 인스턴스 읽기 전용 복제본 작업 섹션을 참조하세요.

읽기 전용 복제본이 장애 조치를 지원하도록 하려면 Amazon RDS가 다른 가용 영역에 복제본의 대기 복제본을 만들 수 있게 읽기 전용 복제본을 다중 AZ DB 인스턴스로 생성하면 됩니다. 읽기 전용 복제본을 다중 AZ DB 인스턴스로 생성하는 작업은 원본 데이터베이스가 다중 AZ DB 인스턴스인지 여부와는 무관합니다.