주요 개념
PostgreSQL 서비스의 주요 개념은 다음과 같습니다.
주요 개념 | 설명 |
---|---|
인스턴스 그룹 | 인스턴스와 백업 생명주기를 관리하는 객체 |
인스턴스 | 인스턴스 그룹이 관리하는 VM으로, 가용성에 따라 Primary, Standby로 역할이 결정됨 |
인스턴스 유형 | 데이터베이스에서 사용할 가상 CPU(vCPU)와 시스템 메모리를 포함한 가상화된 하드웨어 리소스 - 워크로드에 따라 최적화된 인스턴스 유형을 선택할 수 있도록 다양한 유형을 지원 |
인스턴스 그룹/인스턴스 생명 주기 | 인스턴스 그룹/인스턴스의 다양한 생명 주기에 따라, 운영 상태와 작업 상태를 확인 및 관리 |
백업 | 데이터베이스 중단 없이 온라인으로 진행되며, 백업 생성 및 삭제 등의 관리 |
볼륨 | Block Storage 디바이스인 볼륨을 사용하여 데이터베이스를 제공 - 사용자가 직접 Block Storage를 생성하거나 구성할 필요 없음 |
네트워크와 보안 | VPC에서 네트워크와 보안 기능을 제공하며, 필요한 네트워크 요구사항에 따라 논리적으로 분리된 서비스 환경 구축 가능 - 모든 인스턴스는 VPC 환경을 제공함 |
IAM과 보안 | IAM을 통해 사용자의 역할에 맞는 접근 권한을 부여하고 PostgreSQL 리소스를 안전하게 관리 |
인스턴스 그룹
인스턴스 그룹은 인스턴스와 백업 생명주기를 관리하는 객체입니다.
PostgreSQL 인스턴스 그룹은 운영 상태와 종료 상태를 포함하는 다양한 상태값을 가지며, 사용자는 이를 확인하여 인스턴스 그룹을 관리할 수 있습니다.
인스턴스 그룹 생명 주기 및 상태값
PostgreSQL 인스턴스 그룹을 생성하면 Pending
상태로 시작되며, Provisioning
, Primary Available
상태를 거쳐 Available 상태로 전환됩니다. Available
상태의 PostgreSQL 인스턴스 그룹은 사용자가 선택한 네트워크의 엔드포인트와 포트를 통해 접근할 수 있습니다. PostgreSQL 인스턴스 그룹의 기본 포트는 5432(Primary)
, 5433(Standby)
으로 제공되며, 생성 시 1024 ~ 65535 내 원하는 포트를 지정할 수 있습니다.
인스턴스 그룹의 생명 주기
PostgreSQL 인스턴스 그룹 생명주기
상태 | 설명 |
---|---|
Pending | 인스턴스 그룹을 구성하기 위한 준비 중 - 인스턴스 그룹을 처음 만들면 Pending 상태로 시작 |
Provisioning | 인스턴스 그룹의 인스턴스를 생성하는 중, 필요한 패키지를 구성 |
Primary Available | 인스턴스 그룹의 Standby 인스턴스들이 사용할 가상의 하드웨어 리소스를 할당하고 구성하는 중으로 사용자가 정상적으로 사용할 수 있는 상태 생성이 완료된 고가용성 모드의 PostgreSQL 인스턴스 그룹의 경우, 한 개 이상의 Standby 인스턴스가 특정 원인으로 사용 불가능한 상태 *HA 구성 자체는 유지되고 있어 Primary 인스턴스는 정상적으로 사용 가능 * 예: Standby 노드 Provisioning 상태, Standby 노드 장애 및 순단 |
Switching | 고가용성 모드로 생성한 경우, 기존 Primary 노드의 문제로 인해 새롭게 다른 standby 인스턴스 중 하나가 primary로 승격되는 상태 * 예: 수동/자동 Failover |
Available | 인스턴스 그룹의 모든 인스턴스가 Running 상태, 사용자가 정상적으로 사용할 수 있는 상태 - 사용자가 선택한 네트워크의 Endpoint IP 포트를 통해 접근 - 1024 ~ 65535 범위 내 사용자가 포트 지정 가능, 기본 포트는 5432(Primary), 5433(Standby) |
Terminating | 인스턴스 그룹의 모든 인스턴스를 완전히 종료, 반납하고 인스턴스 그룹에서 수행된 백업 등 모든 리소스가 삭제되는 중인 상태 |
Terminated | 인스턴스 그룹의 모든 리소스가 삭제된 상태 |
Error | 인스턴스 그룹의 일부 인스턴스에 오류가 발생하여 일시적으로 사용할 수 없는 상태 |
Fatal | 인스턴스 그룹을 구성 중 정상 상태로 전환이 불가능한 에러 발생 - 예: VM 생성 중 실패 발생 |
인스턴스
인스턴스는 인스턴스 그룹이 관리하는 VM(Virtual Machine)입니다.
PostgreSQL 인스턴스는 CPU와 메모리를 포함해 가상화한 데이터베이스로, PostgreSQL 인스턴스 그룹에 포함되는 객체입니다. PostgreSQL 인스턴스에는 각 상태값이 존재하며, 가용성에 따라 Primary, Standby 역할 중 결정됩니다.
인스턴스 역할
인스턴스 역할 | 설명 |
---|---|
Primary | 사용자가 일반적으로 사용하는 읽기와 쓰기가 목적인 인스턴스 - 사용자는 엔드포인트를 통해서 PostgreSQL 인스턴스 사용 가능 |
Standby | Primary 장애 상황을 대비한 고가용성 목적의 인스턴스 - 인스턴스 가용성을 고가용성으로 선택했을 경우에 생성 - 읽기 전용 복제본 Read Replica 역할을 함께 수행 |
인스턴스 유형
PostgreSQL 서비스에서는 사용 목적과 예상되는 워크로드에 따라 최적화된 인스턴스 유형을 선택할 수 있도록 지원합니다.
PostgreSQL 인스턴스 그룹의 인스턴스 유형별로 관리형 데이터베이스 사양과 설정이 결정됩니다. PostgreSQL 인스턴스 그룹을 만들 때 인스턴스 유형을 선택할 수 있으며, 리소스를 사용한 만큼 비용이 청구됩니다. 고성능 컴퓨팅과 메모리에 특화된 PostgreSQL 인스턴스 유형은 추가될 예정입니다.
m2a(범용), r2a(메모리 최적화) 유형
PostgreSQL 인스턴스 유형 | 기본 vCPU (개) | Memory (GiB) |
---|---|---|
m2a.large | 2 | 8 |
m2a.xlarge | 4 | 16 |
m2a.2xlarge | 8 | 32 |
m2a.4xlarge | 16 | 64 |
m2a.8xlarge | 32 | 128 |
m2a.12xlarge | 48 | 192 |
m2a.16xlarge | 64 | 256 |
m2a.24xlarge | 96 | 384 |
r2a.large | 2 | 16 |
r2a.xlarge | 4 | 32 |
r2a.2xlarge | 8 | 64 |
r2a.4xlarge | 16 | 128 |
r2a.8xlarge | 32 | 256 |
r2a.12xlarge | 48 | 384 |
r2a.16xlarge | 64 | 512 |
r2a.24xlarge | 96 | 768 |
인스턴스 생명 주기 및 상태값
인스턴스는 Pending
상태로 시작하며, Provisioning
과 Starting
상태를 거쳐 Running
상태로 전환됩니다.
PostgreSQL 인스턴스 생명 주기
PostgreSQL 인스턴스 생명주기
상태 | 설명 |
---|---|
Pending | 인스턴스를 구성하기 위한 준비 중, 초기 상태 |
Starting | 인스턴스 구성을 위한 리소스를 생성하는 상태 |
Retarting | 인스턴스가 재시작되고 있는 상태, 사용자의 재시작 요청으로 발생 |
Warning | 인스턴스의 서비스 통신은 가능하지만, 일부 기능이 제한된 상태 |
Running | 인스턴스가 실행 중, PostgreSQL 서비스가 정상적으로 구동되고 있는 상태 |
Volume-Extending | 인스턴스의 볼륨이 확장되고 있는 상태 |
Terminating | 인스턴스를 완전히 종료하고 반납, 리소스를 삭제하는 중 |
Terminated | 인스턴스는 종료되고 리스소가 모두 삭제된 상태 |
Error | 인스턴스에 오류가 발생하여 서비스 이용이 어려운 상태 * 예: VM 내부 프로세스 문제 |
Fatal | 인스턴스가 생성 도중 실패되어 정상상태로 전환이 어려운 상태 |
인스턴스 가용성 구성 및 역할
인스턴스 가용성 구성에 따라 인스턴스 수량과 각 인스턴스의 역할이 결정됩니다.
인스턴스 가용성 구성 | 생성된 인스턴스 수량 | 설명 |
---|---|---|
단일 (Single, Primary 인스턴스) | 1개 | Primary 인스턴스 1개만 생성 |
고가용성 (HA, Primary, Standby 인스턴스) | 최대 6개 | Primary, Standby 인스턴스를 생성 - Primary 1개, Standby 1~5개 생성 |
인스턴스 가용 상태
PostgreSQL 인스턴스 간 데이터 복제에 관한 상태를 의미합니다. 가용성을 고가용성으로 선택한 인스턴스 그룹만 해당됩니다.
PostgreSQL 인스턴스 가용상태
가용 상태 | 설명 |
---|---|
Configuring | PostgreSQL 인스턴스의 데이터 복제 설정을 진행하는 상태 |
Configured | PostgreSQL 인스턴스의 데이터 복제가 정상적으로 수행되는 상태 |
Unavailable | PostgreSQL 인스턴스의 데이터 복제가 중지된 상태 |
백업
백업은 PostgreSQL 인스턴스 그룹 단위로 관리됩니다.
백업 생명 주기 및 상태값
백업은 Pending 상태로 시작하며, Processing 상태를 거쳐 Available 상태가 되면 완료됩니다.
백업 상태
PostgreSQL 백업 생명주기
상태 | 설명 |
---|---|
Pending | 백업 생성 요청 후 리소스가 생성되기 전인 백업 초기 상태 |
Processing | 백업을 생성 중인 상태 |
Available | 백업이 성공적으로 완료되어 복원에 사용할 수 있는 상태 |
Restoring | 복원에 사용 중인 상태, 삭제 불가 |
Deleting | 백업을 삭제하는 중 |
Deleted | 백업이 완전히 삭제된 상태 |
Error | 백업에 실패하여 정상적으로 백업 정보가 존재하지 않는 상태 |
Fatal | 백업 생성 중 오류가 발생해 객체 자체가 존재하지 않는 상태 |
Failover
PostgreSQL은 고가용성(HA, High Availability) 기능을 지원합니다. 인스턴스 그룹의 가용성을 고가용성으로 선택한 경우 다수의 Standby 인스턴스를 생성할 수 있으며, 장애가 발생하여 정상적인 서비스 제공이 어려운 경우 Failover를 할 수 있습니다. Auto-Fail Over와 수동 Failover를 제공하고 있습니다.
Failover시 순단 현상이 발생할 수 있습니다.
Failover 생명 주기
상태값 | 설명 |
---|---|
SWITCHING | Failover를 진행하는 중입니다. PostgreSQL 서비스를 사용할 수 없습니다. |
PRIMARY-AVAILABLE | Standby 인스턴스를 구성하는 상태입니다. |
볼륨
Block Storage 디바이스인 볼륨을 사용하여 데이터베이스를 제공합니다. 따라서 사용자가 직접 Block Storage를 생성 및 구성하는 등 관리할 필요가 없습니다.
네트워크와 보안
모든 PostgreSQL 인스턴스는 VPC 환경을 제공합니다. VPC에서 네트워크와 보안 기능을 제공하며, 필요한 네트워크 요구사항에 따라 논리적으로 분리된 서비스 환경을 구축할 수 있습니다. 자세한 설명은 VPC를 참고하시기 바랍니다.