Amazon RDS의 PostgreSQL - Amazon Relational Database Service

Amazon RDS의 PostgreSQL

Amazon RDS는 여러 PostgreSQL 버전을 실행하는 DB 인스턴스를 지원합니다. 사용 가능한 버전 목록은 사용 가능한 PostgreSQL 데이터베이스 버전 섹션을 참조하세요.

참고

PostgreSQL 9.6의 지원 중단은 2022년 4월 26일로 예정되어 있습니다. 자세한 정보는 PostgreSQL 버전 9.6 지원 중단의 내용을 참조하세요.

DB 인스턴스 및 DB 스냅샷, 특정 시점으로 복원 및 백업을 만들 수 있습니다. PostgreSQL을 실행하는 DB 인스턴스는 다중 AZ 배포, 읽기 전용 복제본,프로비저닝된 IOPS를 지원하며 Virtual Private Cloud(VPC) 내부에서 생성될 수 있습니다. 또한, SSL(Secure Socket Layer)을 사용하여 PostgreSQL을 실행하는 DB 인스턴스에 연결할 수 있습니다.

DB 인스턴스를 생성하기 전에 Amazon RDS에 대한 설정 단계를 완료해야 합니다.

클라이언트 컴퓨터에서 표준 SQL 클라이언트 애플리케이션을 사용하여 인스턴스에 대한 명령을 실행할 수 있습니다. 이런 애플리케이션으로는 PostgreSQL용으로 널리 사용되는 오픈 소스 관리 및 개발 도구인 pgAdmin 또는 PostgreSQL 설치 시 포함되는 명령줄 유틸리티인 psql이 포함됩니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 호스트 액세스를 제공하지 않습니다. 또한 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다. Amazon RDS는 표준 SQL 클라이언트 애플리케이션을 사용하여 DB 인스턴스의 데이터베이스에 대한 액세스를 지원합니다. Amazon RDS에서는 Telnet 또는 SSH(Secure Shell)를 사용하여 DB 인스턴스에 대한 직접 호스트 액세스를 허용하지 않습니다.

Amazon RDS for PostgreSQL은 다수의 산업 표준을 준수합니다. 예를 들어 Amazon RDS for PostgreSQL 데이터베이스를 사용하여 HIPAA 준수 애플리케이션을 구축하고 의료 관련 정보를 저장할 수 있습니다. 여기에는 AWS와 체결한 비즈니스 제휴 계약(BAA)에 따라 보호 대상 건강 정보(PHI)를 위한 스토리지가 포함됩니다. 또한 Amazon RDS for PostgreSQL은 또한 연방 위험 및 인증 관리 프로그램(FedRAMP) 보안 요건을 충족합니다. Amazon RDS for PostgreSQL은 FedRAMP 공동 승인 위원회(JAB)로부터 AWS GovCloud (US) 리전 내에 FedRAMP High Baseline 수준의 잠정적 운영 권한(P-ATO)을 받았습니다. 지원되는 규정 준수 표준에 대한 자세한 내용은 AWS 클라우드 규정 준수를 참조하세요.

PostgreSQL 데이터를 DB 인스턴스로 가져오려면 Amazon RDS에서 PostgreSQL로 데이터 가져오기 섹션의 정보를 따릅니다.

Amazon RDS for PostgreSQL의 일반적인 관리 태스크

다음은 Amazon RDS for PostgreSQL DB 인스턴스로 수행하는 일반적인 관리 작업과 각 작업에 해당하는 문서 링크입니다.

작업 영역 관련 설명서

처음 사용 시 Amazon RDS 설정

DB 인스턴스를 생성하기 전에 몇 가지 사전 요구 사항을 완료해야 합니다. 예를 들어, DB 인스턴스는 기본적으로 인스턴스에 대한 액세스를 막는 방화벽도 함께 생성됩니다. 따라서 DB 인스턴스에 액세스하기 위한 알맞은 IP 주소와 네트워크 구성으로 보안 그룹을 만들어야 합니다.

Amazon RDS에 대한 설정

Amazon RDS DB 인스턴스 이해

프로덕션 목적으로 DB 인스턴스를 만들 경우에는 Amazon RDS에서 인스턴스 클래스, 스토리지 유형 및 프로비저닝된 IOPS이 작동하는 방식을 이해해야 합니다.

DB 인스턴스 클래스

Amazon RDS 스토리지 유형

프로비저닝된 IOPS SSD 스토리지

사용 가능한 PostgreSQL 버전 찾기

Amazon RDS는 여러 버전의 PostgreSQL을 지원합니다.

사용 가능한 PostgreSQL 데이터베이스 버전

고가용성 및 장애 조치 지원 설정

프로덕션 DB 인스턴스에서는 다중 AZ 배포를 사용해야 합니다. 다중 AZ 배포는 DB 인스턴스를 위해 향상된 가용성, 데이터 내구성 및 내결함성을 제공합니다.

고가용성을 위한 다중 AZ 배포

Amazon Virtual Private Cloud(VPC) 네트워크 이해

AWS 계정에 기본 VPC가 있는 경우에는 DB 인스턴스가 기본 VPC 내부에 자동으로 생성됩니다. 경우에 따라 계정에 기본 VPC가 없을 수 있으며 VPC에 DB 인스턴스가 필요할 수 있습니다. 이러한 경우에는 DB 인스턴스를 생성하기 전에 VPC 및 서브넷 그룹을 생성하세요.

EC2-VPC 또는 EC2-Classic 플랫폼을 사용 중인지 확인

VPC에서 DB 인스턴스를 사용한 작업

Amazon RDS PostgreSQL로 데이터 가져오기

다양한 도구를 사용하여 Amazon RDS의 PostgreSQL DB 인스턴스로 데이터를 가져올 수 있습니다.

Amazon RDS에서 PostgreSQL로 데이터 가져오기

읽기 전용 복제본(기본 및 스탠바이) 설정

RDS for PostgreSQL는 프라이머리 인스턴스와 동일한 AWS 리전과 다른 AWS 리전 모두에서 읽기 전용 복제본을 지원합니다.

읽기 전용 복제본 작업

Amazon RDS for PostgreSQL의 읽기 전용 복제본 작업

다른 AWS 리전에서 읽기 전용 복제본 생성

보안 그룹 이해

기본적으로, DB 인스턴스와 함께 인스턴스에 대한 액세스를 막는 방화벽도 생성됩니다. 해당 방화벽을 통한 액세스를 제공하기 위해 DB 인스턴스를 호스팅하는 VPC와 연결된 보안 그룹의 인바운드 규칙을 편집합니다.

일반적으로 DB 인스턴스가 EC2-Classic 플랫폼을 기반으로 하는 경우에는 DB 보안 그룹을 생성해야 합니다. 그렇지 않고 DB 인스턴스가 EC2-VPC 플랫폼을 기반으로 하는 경우에는 VPC 보안 그룹을 생성해야 합니다.

EC2-VPC 또는 EC2-Classic 플랫폼을 사용 중인지 확인

보안 그룹을 통한 액세스 제어

파라미터 그룹 및 기능 설정

DB 인스턴스의 기본 파라미터를 변경하려면 사용자 지정 DB 파라미터 그룹을 생성하고 설정을 변경하세요. DB 인스턴스를 생성하기 전인 경우, 인스턴스를 생성할 때 사용자 지정 DB 파라미터 그룹을 선택할 수 있습니다.

파라미터 그룹 작업

PostgreSQL DB 인스턴스에 연결

보안 그룹을 만들고 이를 DB 인스턴스에 연결한 후 psql 또는 pgAdmin과 같은 스탠더드 SQL 클라이언트 애플리케이션을 사용하여 DB 인스턴스에 연결할 수 있습니다.

PostgreSQL 데이터베이스 엔진을 실행하는 DB 인스턴스에 연결

PostgreSQL DB 인스턴스와 함께 SSL 사용

DB 인스턴스 백업 및 복원

DB 인스턴스를 구성하여 자동 백업을 생성하거나 수동 스냅샷을 생성한 다음 백업 또는 스냅샷에서 인스턴스를 복원할 수 있습니다.

Amazon RDS DB 인스턴스 백업 및 복원

DB 인스턴스 활동 및 성능 모니터링

CloudWatch Amazon RDS 측정치, 이벤트 및 향상된 모니터링 기능을 통해 PostgreSQL DB 인스턴스를 모니터링할 수 있습니다.

Amazon RDS 콘솔에서 지표 보기

Amazon RDS 이벤트 보기

PostgreSQL 데이터베이스 버전 업그레이드

PostgreSQL DB 인스턴스의 메이저 버전과 마이너 버전을 모두 업그레이드할 수 있습니다.

Amazon RDS용 PostgreSQL DB 엔진 업그레이드

PostgreSQL에 대한 메이저 버전 업그레이드 선택

로그 파일 작업

PostgreSQL DB 인스턴스의 로그 파일에 액세스할 수 있습니다.

PostgreSQL 데이터베이스 로그 파일

PostgreSQL DB 인스턴스에 대한 모범 사례 이해

Amazon RDS의 PostgreSQL 사용에 대한 몇 가지 모범 사례를 찾아 보십시오.

PostgreSQL로 작업하기 위한 모범 사례

다음은 PostgreSQL용 RDS의 주요 기능을 이해하고 사용하는 데 도움이 되는 이 가이드의 다른 섹션 목록입니다.

데이터베이스 미리 보기 환경 작업

Amazon RDS에 DB 인스턴스를 만들 때 그 기반이 되는 PostgreSQL 버전이 테스트를 완료하였고 Amazon에서 완전히 지원된다는 사실을 알아두십시오. PostgreSQL 커뮤니티는 새로운 버전과 새 확장을 지속적으로 릴리스합니다. 완전한 지원을 받기 전에 새 PostgreSQL 버전과 확장을 써볼 수 있습니다. 이를 위해 데이터베이스 미리 보기 환경에서 새 DB 인스턴스를 만들 수 있습니다.

데이터베이스 미리 보기 환경의 DB 인스턴스는 프로덕션 환경의 DB 인스턴스와 유사합니다. 그러나 다음과 같은 중요한 요인을 기억해 두십시오.

  • 모든 DB 인스턴스는 생성 60일 후 백업 및 스냅샷과 함께 삭제됩니다.

  • Amazon VPC 서비스 기반의 Virtual Private Cloud(VPC)에서만 DB 인스턴스를 생성할 수 있습니다.

  • M6g, M5, T3, R6g 및 R5 인스턴스 유형만 생성할 수 있습니다. RDS 인스턴스 클래스에 대한 자세한 내용은 DB 인스턴스 클래스 단원을 참조하세요.

  • 범용 SSD와 프로비저닝된 IOPS SSD 스토리지만 사용할 수 있습니다.

  • DB 인스턴스와 관련해서는 AWS Support의 지원을 받을 수 없습니다. 대신 AWS 관리형 Q&A 커뮤니티인 AWS re:Post에 질문을 게시할 수 있습니다.

  • DB 인스턴스의 스냅샷을 프로덕션 환경으로 복제할 수 없습니다.

  • 단일 AZ 배포와 다중 AZ 배포를 모두 사용할 수 있습니다.

  • 표준 PostgreSQL 덤프 및 로드 함수를 사용하여 데이터베이스 미리 보기 환경에서 데이터베이스를 내보내거나 데이터베이스 미리 보기 환경으로 데이터베이스를 가져올 수 있습니다.

미리 보기 환경에서 지원하지 않는 기능

다음 기능은 미리 보기 환경에서 사용할 수 없습니다.

  • 리전 간 스냅샷 복제

  • 리전 간 읽기 전용 복제본

미리 보기 환경에서 새 DB 인스턴스 생성

다음 절차를 이용하여 미리 보기 환경에서 DB 인스턴스를 새로 만듭니다.

미리 보기 환경에서 DB 인스턴스를 생성하려면

  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 대시보드를 선택합니다.

  3. Switch to database preview environment(데이터베이스 미리 보기 환경으로 전환)을 선택합니다.

    
                            미리 보기 환경을 선택하는 대화 상자

    데이터베이스 미리 보기 환경으로 바로 이동할 수도 있습니다.

    참고

    API 또는 CLI로 데이터베이스 미리 보기 환경에 인스턴스를 생성하려면 엔드포인트는 rds-preview.us-east-2.amazonaws.com입니다.

  4. 콘솔에 서술한 절차를 계속합니다.

PostgreSQL DB 인스턴스에 대한 제한 사항

다음은 RDS for PostgreSQL에 대한 제한 사항 목록입니다.

  • PostgreSQL DB 인스턴스는 최대 40개까지 보유할 수 있으며,

  • 스토리지 제한은 Amazon RDS DB 인스턴스 스토리지 단원을 참조하세요.

  • Amazon RDS는 시스템 유지 관리를 위해 최대 3개의 연결을 예약합니다. 사용자 연결 파라미터의 값을 지정할 경우 사용할 것으로 예상하는 연결 개수에 3을 더합니다.

사용 가능한 PostgreSQL 데이터베이스 버전

Amazon RDS는 여러 PostgreSQL 에디션을 실행하는 DB 인스턴스를 지원합니다. 새 DB 인스턴스를 생성할 때는 현재 사용 가능한 모든 PostgreSQL 버전을 지정할 수 있습니다. 메이저 버전(예: PostgreSQL 10) 및 지정된 메이저 버전에 대해 사용 가능한 모든 마이너 버전을 지정할 수 있습니다. 버전이 지정되지 않은 경우 Amazon RDS는 사용 가능한 버전(보통 최신 버전)을 기본값으로 설정합니다. 메이저 버전이 지정되었지만 마이너 버전이 지정되지 않은 경우, Amazon RDS는 고객이 지정한 메이저 버전의 최근 릴리스를 기본값으로 설정합니다.

사용 가능한 버전 목록과 새로 만든 DB 인스턴스의 기본값을 보려면 describe-db-engine-versions AWS CLI 명령을 사용합니다. 예를 들어 기본 PostgreSQL 엔진 버전을 표시하려면 다음 명령을 사용합니다.

aws rds describe-db-engine-versions --default-only --engine postgres

Amazon RDS에서 지원되는 PostgreSQL 버전에 대한 자세한 내용은 Amazon RDS for PostgreSQL 릴리스 정보를 참조하세요.

PostgreSQL 버전 9.6 지원 중단

2022년 3월 31일에 Amazon RDS는 다음 일정에 따라 PostgreSQL 9.6을 사용 중단할 계획입니다. 이에 따라 이전에 발표된 날짜인 2022년 1월 18일에서 2022년 4월 26일로 연장됩니다. 가능한 한 빨리 모든 PostgreSQL 9.6 DB 인스턴스를 PostgreSQL 12 이상으로 업그레이드해야 합니다. 먼저 마이너 버전 9.6.20 이상으로 업그레이드한 다음 중간 메이저 버전으로 업그레이드하는 대신 PostgreSQL 12로 직접 업그레이드하는 것이 좋습니다. 자세한 정보는 Amazon RDS용 PostgreSQL DB 엔진 업그레이드의 내용을 참조하세요.

작업 또는 권장 사항 날짜

PostgreSQL 커뮤니티는 PostgreSQL 9.6에 대한 지원을 중단했으며 더 이상 이 버전에 대한 버그 수정이나 보안 패치를 제공하지 않습니다.

2021년 11월 11일

RDS for PostgreSQL 9.6 DB 인스턴스를 가능한 한 빨리 PostgreSQL 12 이상으로 업그레이드를 시작합니다. 계속해서 PostgreSQL 9.6 스냅샷을 복원하고 버전 9.6으로 읽기 전용 복제본을 생성할 수 있지만 이 지원 중단 일정의 다른 중요한 날짜와 그 영향을 알고 있어야 합니다.

현재~2022년 3월 31일

이 날짜 이후에는 AWS Management Console 또는 AWS CLI에서 PostgreSQL 메이저 버전 9.6으로 새 Amazon RDS 인스턴스를 생성할 수 없습니다.

2022년 3월 31일

Amazon RDS는 PostgreSQL 9.6 인스턴스를 버전 12로 자동 업그레이드합니다. PostgreSQL 9.6 데이터베이스 스냅샷을 복원하는 경우 Amazon RDS는 복원된 데이터베이스를 PostgreSQL 12로 자동 업그레이드합니다.

2022년 4월 26일

더 이상 사용되지 않는 Amazon RDS for PostgreSQL 버전

RDS for PostgreSQL 9.5는 2021년 3월부로 지원 중단됩니다. RDS for PostgreSQL 9.5 지원 중단에 대한 자세한 내용은 Amazon RDS for PostgreSQL 버전 9.5에서 업그레이드를 참조하세요.

RDS for PostgreSQL의 지원 중단 정책에 대한 자세한 내용은 Amazon RDS FAQ를 참조하세요. PostgreSQL 버전에 대한 자세한 내용은 PostgreSQL 설명서의 Versioning Policy(버전 관리 정책)을 참조하세요.

지원되는 PostgreSQL 확장 버전

RDS for PostgreSQL는 여러 PostgreSQL 확장을 지원합니다. PostgreSQL 커뮤니티에서는 이러한 확장을 모듈이라고 부르기도 합니다. 여기에서 확장이란 PostgreSQL 엔진에서 제공하는 기능이 더욱 확장된 것을 말합니다. 해당 PostgreSQL 버전의 기본 DB 파라미터 그룹에서 Amazon RDS가 지원하는 확장 기능 목록을 확인할 수 있습니다. 또한 다음 예제에서처럼 psql 파라미터를 표시하면 rds.extensions을 사용하여 현재 확장 기능 목록을 확인할 수 있습니다.

SHOW rds.extensions;
참고

rds.extensions에서 psql 파라미터를 사용하면 마이너 버전 릴리스에서 추가된 파라미터가 잘못 표시될 수 있습니다.

Amazon RDS에서 지원되는 PostgreSQL 확장에 대한 자세한 내용은 Amazon RDS for PostgreSQL 릴리스 정보Amazon RDS에서 지원되는 PostgreSQL 확장을 참조하세요.

PostgreSQL 확장의 설치 제한

PostgreSQL DB 인스턴스에 설치할 수 있는 확장을 제한할 수 있습니다. 이렇게 하려면 rds.allowed_extensions 파라미터를 쉼표로 구분된 확장 이름의 문자열로 설정합니다. 그런 다음 해당 확장만 PostgreSQL DB 인스턴스에 설치할 수 있습니다.

rds.allowed_extensions 파라미터의 기본 문자열은 '*'입니다. 즉, 해당 엔진 버전에 사용할 수 있는 모든 확장을 설치할 수 있습니다. rds.allowed_extensions 파라미터는 동적 파라미터이므로 변경해도 데이터베이스를 다시 시작할 필요가 없습니다.

rds.allowed_extensions 파라미터를 사용하려면 PostgreSQL DB 인스턴스 엔진이 다음 버전 중 하나여야 합니다.

  • PostgreSQL 14.1 이상의 마이너 버전

  • PostgreSQL 13.2 이상의 마이너 버전

  • PostgreSQL 12.6 이상의 마이너 버전

허용되는 확장 설치를 확인하려면 다음 psql 명령을 사용합니다.

postgres=> SHOW rds.allowed_extensions; rds.allowed_extensions ------------------------ *

확장이 rds.allowed_extensions 파라미터의 목록에서 제외되기 전에 설치된 경우, 해당 확장은 정상적으로 사용할 수 있으며 ALTER EXTENSIONDROP EXTENSION 같은 명령이 계속 작동합니다. 하지만 확장이 제한되고 나면 제한된 확장에 대한 CREATE EXTENSION 명령이 실패합니다.

CREATE EXTENSION CASCADE를 사용한 확장 종속 구성 요소 설치도 제한됩니다. 확장과 해당 종속 구성 요소는 rds.allowed_extensions에 지정해야 합니다. 확장 종속 구성 요소 설치가 실패하면 전체 CREATE EXTENSION CASCADE 문이 실패합니다.

확장이 rds.allowed_extensions 파라미터에 포함되어 있지 않은 경우, 해당 확장을 설치하려고 하면 다음과 같은 오류가 표시됩니다.

ERROR: permission denied to create extension "extension-name" HINT: This extension is not specified in "rds.allowed_extensions".

PostgreSQL 신뢰할 수 있는 확장

대부분의 PostgreSQL 확장을 설치하려면 rds_superuser 권한이 필요합니다. PostgreSQL 13에서는 rds_superuser 권한을 일반 사용자에게 부여해야 할 필요성을 줄이는 신뢰할 수 있는 확장 기능이 도입되었습니다. 이 기능을 사용하면 현재 데이터베이스에 대한 CREATE 권한이 있는 사용자가 rds_superuser 역할 없이도 여러 확장을 설치할 수 있습니다. 자세한 내용은 PostgreSQL 설명서에서 SQL CREATE EXTENSION 명령을 참조하세요.

다음 목록에는 현재 데이터베이스에 대한 CREATE 권한이 있는 사용자가 rds_superuser역할 없이 설치할 수 있는 확장이 나열되어 있습니다.

Amazon RDS for PostgreSQL에서 지원되는 PostgreSQL 기능 작업

Amazon RDS for PostgreSQL는 대부분의 가장 일반적인 PostgreSQL 기능 및 거의 공통적인 기능을 지원합니다. 예를 들어 PostgreSQL에는 데이터베이스에서 일상적인 유지 관리를 수행하는 자동 autovacuum 기능이 있습니다. 이 기능은 기본적으로 활성화되어 있습니다. 이 기능을 끌 수 있지만 계속 사용하는 것이 좋습니다. 이 기능을 이해하고 제대로 작동하는지 확인하기 위해 수행할 수 있는 작업은 모든 DBA의 기본 작업입니다. autovacuum에 대한 자세한 내용은 Amazon RDS for PostgreSQL에서 PostgreSQL Autovacuum 사용 섹션을 참조하세요. 기타 일반적인 DBA 작업에 대해 자세히 알아보려면 Amazon RDS for PostgreSQL의 일반적인 DBA 태스크 섹션을 참조하세요.

RDS for PostgreSQL은 DB 인스턴스에 중요한 기능을 추가하는 확장도 지원합니다. 예를 들어 PostGIS 확장을 사용하여 공간 데이터로 작업하거나 pg_cron 확장을 사용하여 인스턴스 내에서 유지 관리를 예약할 수 있습니다. PostgreSQL 확장에 대한 자세한 내용은 Amazon RDS for PostgreSQL로 PostgreSQL 확장 사용 섹션을 참조하세요.

외부 데이터 래퍼는 RDS for PostgreSQL DB 인스턴스가 다른 상용 데이터베이스 또는 데이터 유형과 함께 작동하도록 설계된 특정 유형의 확장입니다. RDS for PostgreSQL에서 지원되는 외부 데이터 래퍼에 대한 자세한 내용은 Amazon RDS for PostgreSQL용 지원되는 외부 데이터 래퍼 작업 섹션을 참조하세요.

다음에서 RDS for PostgreSQL이 지원하는 PostgreSQL 기능 일부에 대한 정보를 확인할 수 있습니다.

RDS for PostgreSQL을 사용한 사용자 지정 데이터 유형 및 열거

PostgreSQL은 사용자 지정 데이터 형식을 만들고 열거형 작업을 지원합니다. 열거형 및 기타 데이터 유형을 생성하고 사용하는 방법에 대한 자세한 내용은 PostgreSQL 문서의 열거 형식을 참조하세요.

다음은 유형을 열거형으로 만든 다음 테이블에 값을 삽입하는 예입니다.

CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); CREATE TYPE CREATE TABLE t1 (colors rainbow); CREATE TABLE INSERT INTO t1 VALUES ('red'), ( 'orange'); INSERT 0 2 SELECT * from t1; colors -------- red orange (2 rows) postgres=> ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson'; ALTER TYPE postgres=> SELECT * from t1; colors --------- crimson orange (2 rows)

RDS for PostgreSQL용 이벤트 트리거

현재 모든 PostgreSQL 버전은 이벤트 트리거를 지원하며 사용 가능한 모든 RDS for PostgreSQL 버전도 지원합니다. 기본 사용자 계정(기본값, postgres)을 사용하여 이벤트 트리거를 생성, 수정, 이름 변경 및 삭제할 수 있습니다. 이벤트 트리거는 DB 인스턴스 레벨에서 수행되므로 인스턴스에 대한 모든 데이터베이스에 적용될 수 있습니다.

예를 들어 다음 코드는 모든 데이터 정의 언어(DDL) 명령의 끝에 현재 사용자를 인쇄하는 이벤트 트리거를 생성합니다.

CREATE OR REPLACE FUNCTION raise_notice_func() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'In trigger function: %', current_user; END; $$; CREATE EVENT TRIGGER event_trigger_1 ON ddl_command_end EXECUTE PROCEDURE raise_notice_func();

PostgreSQL 이벤트 트리거에 대한 자세한 내용은 PostgreSQL 문서의 Event Triggers 단원을 참조하세요.

Amazon RDS에서 PostgreSQL 이벤트 트리거를 사용하는 데 대한 몇 가지 제한 사항이 있습니다. 다음을 포함합니다.

  • 읽기 전용 복제본에 대한 이벤트 트리거를 생성할 수 없지만, 읽기 전용 복제 원본에 대한 이벤트 트리거는 생성할 수 있습니다. 그러면 이벤트 트리거가 읽기 전용 복제본으로 복사됩니다. 읽기 전용 복제본으로 복사된 이벤트 트리거는 변경 내용이 원본에서 푸시되더라도 읽기 전용 복제본에서 발생하지 않습니다. 하지만 읽기 전용 복제본이 승격되면 데이터베이스 작업이 있을 때 기존 이벤트 트리거가 발생합니다.

  • 이벤트 트리거를 사용하는 PostgreSQL DB 인스턴스로의 메이저 버전 업그레이드를 수행하려면 인스턴스를 업그레이드하기 전에 이벤트 트리거를 삭제해야 합니다.

RDS for PostgreSQL용 방대한 페이지

방대한 페이지는 DB 인스턴스가 공유 버퍼에서 사용하는 것과 같은 대규모 연속 메모리 청크로 작업할 때 오버헤드를 줄이는 메모리 관리 기능입니다. 이 PostgreSQL 기능은 현재 사용 가능한 모든 RDS for PostgreSQL 버전에서 지원됩니다. 애플리케이션에 방대한 페이지를 할당하려면 mmap 또는 SYSV 공유 메모리 호출을 사용합니다. RDS for PostgreSQL은 4KB 페이지 크기와 2MB 페이지 크기를 모두 지원합니다.

huge_pages 파라미터의 값을 변경하여 방대한 페이지를 활성화하거나 비활성화할 수 있습니다. 이 기능은 마이크로, 스몰, 미디엄 DB 인스턴스 클래스를 제외한 모든 DB 인스턴스 클래스에 대해 기본적으로 사용 설정되어 있습니다.

참고

db.m1, db.m2 및 db.m3 DB 인스턴스 클래스에서는 방대한 페이지가 지원되지 않습니다.

RDS for PostgreSQL는 사용 가능한 공유 메모리를 기반으로 방대한 페이지를 사용합니다. DB 인스턴스가 공유 메모리 제약 때문에 방대한 페이지를 사용할 수 없을 경우 Amazon RDS는 DB 인스턴스 시작을 금지합니다. 이 경우 Amazon RDS는 DB 인스턴스 상태를 파라미터 호환 불가 상태로 설정합니다. 이렇게 되면 huge_pages 파라미터를 off로 설정하여 Amazon RDS가 DB 인스턴스를 시작하도록 허용할 수 있습니다.

shared_buffers 파라미터가 방대한 페이지를 사용하는 데 필요한 공유 메모리 풀을 설정하는 관건입니다. shared_buffers 파라미터의 기본값은 데이터베이스 파라미터 매크로를 사용합니다. 이 매크로는 DB 인스턴스 메모리에서 사용 가능한 총 8KB 페이지 중 백분율을 설정합니다. 방대한 페이지를 사용할 때 이러한 페이지는 방대한 페이지에 할당됩니다. 공유 메모리 파라미터를 DB 인스턴스 메모리의 90% 이상을 요구하도록 설정할 경우 Amazon RDS가 DB 인스턴스를 파라미터 호환 장애 상태로 설정하므로 유의해야 합니다.

PostgreSQL 메모리 관리에 대한 자세한 내용은 PostgreSQL 설명서의 Resource Consumption(리소스 소비)을 참조하세요.

Amazon RDS for PostgreSQL에 대한 논리적 복제 수행

버전 10.4부터 Amazon RDS for PostgreSQL에서 PostgreSQL 10에 처음 도입된 게시 및 구독 SQL 구문을 지원합니다. 자세한 내용은 PostgreSQL의 논리적 복제 문서를 참조하세요.

다음에서 RDS for PostgreSQL DB 인스턴스의 논리적 복제 설정에 관한 정보를 확인할 수 있습니다.

논리적 복제 및 논리적 디코딩 이해

RDS for PostgreSQL은 PostgreSQL의 논리적 복제 슬롯을 사용하여 미리 쓰기 로그(WAL) 변경 사항 스트리밍을 지원합니다. 또한 논리적 디코딩 사용을 지원합니다. 인스턴스에 대한 논리적 복제 슬롯을 설정하고 해당 슬롯을 통해 데이터베이스 변경을 클라이언트(예: pg_recvlogical)에 스트리밍할 수 있습니다. 논리적 복제 슬롯은 데이터베이스 수준에서 생성되며 단일 데이터베이스에 대한 복제 연결을 지원합니다.

가장 일반적인 PostgreSQL 논리적 복제용 클라이언트는 Amazon EC2 인스턴스의 사용자 지정 관리형 호스트 또는 AWS Database Migration Service입니다. 논리적 복제 슬롯에는 스트림 수신기에 대한 정보가 없습니다. 또한 대상이 복제본 데이터베이스일 필요는 없습니다. 논리적 복제 슬롯을 설정하고 슬롯에서 데이터를 읽지 않을 경우 데이터가 DB 인스턴스의 스토리지에 기록되고 빠르게 가득 찰 수 있습니다.

Amazon RDS의 PostgreSQL 논리적 복제 및 논리적 디코딩은 파라미터, 복제 연결 유형 및 보안 역할에 의해 활성화됩니다. PostgreSQL DB 인스턴스의 데이터베이스에 대한 복제 연결을 설정할 수 있는 모든 클라이언트는 논리적 디코딩용 클라이언트가 될 수 있습니다.

RDS for PostgreSQL DB 인스턴스에 논리적 디코딩 사용 설정

  1. 사용 중인 사용자 계정에 다음과 같은 역할이 있는지 확인합니다.

    • 논리 복제를 설정할 수 있는 rds_superuser 역할

    • 논리적 슬롯을 관리하고 논리적 슬롯을 사용하여 데이터를 스트리밍할 수 있는 권한을 부여하는 rds_replication 역할

  2. rds.logical_replication 정적 파라미터를 1로 설정합니다. 이 파라미터를 적용하는 중에 wal_level, max_wal_senders, max_replication_slots, max_connections 파라미터 또한 설정합니다. 이러한 파라미터 변경은 WAL 생성을 강화하므로 논리적 슬롯을 사용할 때 rds.logical_replication 파라미터만 설정하면 됩니다.

  3. 정적 rds.logical_replication 파라미터가 적용되도록 DB 인스턴스를 재부팅합니다.

  4. 다음 섹션에 설명된 대로 논리적 복제 슬롯을 생성합니다. 이 프로세스에서는 디코딩 플러그인을 지정해야 합니다. 현재 RDS for PostgreSQL은 PostgreSQL과 함께 배송되는 test_decoding 및 wal2json 출력 플러그 인을 지원합니다.

PostgreSQL 논리적 디코딩에 대한 자세한 내용은 PostgreSQL 설명서를 참조하세요.

논리적 복제 슬롯 작업

SQL 명령을 사용하여 논리적 슬롯 작업을 수행할 수 있습니다. 예를 들어 다음 명령은 기본 PostgreSQL 출력 플러그인인 test_slot을 사용하여 test_decoding 논리적 슬롯을 생성합니다.

SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding'); slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)

논리적 슬롯 목록을 보려면 다음 명령을 사용합니다.

SELECT * FROM pg_replication_slots;

논리적 슬롯을 삭제하려면 다음 명령을 사용합니다.

SELECT pg_drop_replication_slot('test_slot'); pg_drop_replication_slot ----------------------- (1 row)

논리적 복제 슬롯 작업에 대한 더 많은 예제는 PostgreSQL 문서의 Logical Decoding Examples를 참조하세요.

논리적 복제 슬롯을 생성한 후 스트리밍을 시작할 수 있습니다. 다음 예에서는 스트리밍 복제 프로토콜을 통해 논리적 디코딩을 제어하는 방법을 보여 줍니다. 이 예에서는 PostgreSQL 배포판에 포함된 pg_recvlogical 프로그램을 사용합니다. 이렇게 하려면 복제 연결을 허용하도록 클라이언트 인증을 설정해야 합니다.

pg_recvlogical -d postgres --slot test_slot -U postgres --host -instance-name.111122223333.aws-region.rds.amazonaws.com -f - --start

pg_replication_origin_status 보기의 내용을 보려면 pg_show_replication_origin_status 함수를 쿼리합니다.

SELECT * FROM pg_show_replication_origin_status(); local_id | external_id | remote_lsn | local_lsn ----------+-------------+------------+----------- (0 rows)

stats_temp_directory에 대한 RAM 디스크

RDS for PostgreSQL의 파라미터 rds.pg_stat_ramdisk_size를 사용하여 PostgreSQL stats_temp_directory 저장용 RAM 디스크에 할당되는 시스템 메모리를 지정할 수 있습니다. RAM 디스크 파라미터는 Amazon RDS의 모든 PostgreSQL 버전에 사용할 수 있습니다.

특정 워크로드에서 이 파라미터를 설정하면 성능이 향상되고 I/O 요구 사항이 감소될 수 있습니다. stats_temp_directory에 대한 자세한 내용은 PostgreSQL 문서 단원을 참조하세요.

stats_temp_directory에 대한 RAM 디스크를 설정하려면 DB 인스턴스에 사용되는 파라미터 그룹에서 rds.pg_stat_ramdisk_size 파라미터를 정수 리터럴 값으로 설정합니다. 이 파라미터는 MB를 나타내므로 정수 값을 사용해야 합니다. 표현식, 공식 및 함수는 rds.pg_stat_ramdisk_size 파라미터에 유효하지 않습니다. 변경 사항을 적용하려면 DB 인스턴스를 재부팅해야 합니다. 파라미터 설정에 대한 자세한 내용은 파라미터 그룹 작업 섹션을 참조하세요.

예를 들어 다음 AWS CLI 명령은 RAM 디스크 파라미터를 256MB로 설정합니다.

aws rds modify-db-parameter-group \ --db-parameter-group-name pg-95-ramdisk-testing \ --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"

재부팅 후 다음 명령을 실행하여 stats_temp_directory의 상태를 확인합니다.

postgres=> SHOW stats_temp_directory;

명령은 다음을 반환합니다.

stats_temp_directory --------------------------- /rdsdbramdisk/pg_stat_tmp (1 row)

RDS for PostgreSQL용 테이블스페이스

RDS for PostgreSQL은 호환성을 위해 테이블스페이스를 지원합니다. 모든 스토리지가 단일 논리 볼륨에 있으므로 I/O 분할 또는 격리를 위해 테이블스페이스를 사용할 수 없습니다. AWS의 벤치마크와 경험에 따르면 단일 논리 볼륨이 대부분의 사용 사례에 가장 적합한 설정임을 알 수 있습니다.

RDS for PostgreSQL DB 인스턴스로 테이블스페이스를 생성하고 사용하려면 rds_superuser 역할이 필요합니다. RDS for PostgreSQL DB 인스턴스의 기본 사용자 계정(기본 이름, postgres)은 이 역할의 멤버입니다. 자세한 정보는 PostgreSQL 역할 및 권한 이해의 내용을 참조하세요.

테이블스페이스를 생성할 때 파일 이름을 지정하는 경우, 경로 접두사는 /rdsdbdata/db/base/tablespace입니다. 다음 예제에서는 테이블스페이스 파일을 /rdsdbdata/db/base/tablespace/data에 배치합니다. 이 예에서는 dbadmin 사용자(역할)가 존재하고 테이블스페이스 작업에 필요한 rds_superuser 역할이 부여되었다고 가정합니다.

postgres=> CREATE TABLESPACE act_data OWNER dbadmin LOCATION '/data'; CREATE TABLESPACE

PostgreSQL 테이블스페이스에 대한 자세한 내용은 Tablespaces(테이블스페이스)를 참조하세요.