View a markdown version of this page

Aurora Global Database에서 외부 테이블 사용 - Amazon Aurora

Aurora Global Database에서 외부 테이블 사용

Aurora Global Database는 리전별 설정을 사용한 분석 쿼리 실행을 지원합니다. 이 섹션에서는 교차 리전 분석 쿼리를 구성하는 방법, 자동으로 복제되는 리소스, 재해 복구 시나리오를 계획하는 방법을 설명합니다.

글로벌 데이터베이스에서 aurora_analytics 사용

외부 테이블은 Amazon S3, Amazon S3 Tables 또는 AWS Glue Data Catalog의 Apache Iceberg 데이터나 Parquet 데이터를 가리키는 PostgreSQL 테이블 정의입니다. 데이터는 Aurora에 복사되지 않습니다. 오직 다음 항목만 기본 DB 클러스터에서 각 보조 DB 클러스터로 복제됩니다.

  • aurora_analytics 확장 설치

  • 외부 테이블 정의(DDL)

다음 항목은 복제되지 않으며 보조 DB 클러스터가 포함된 모든 리전에서 독립적으로 프로비저닝해야 합니다.

  • DB 클러스터에 연결된 IAM 역할

  • Amazon S3, AWS Glue 또는 Amazon S3 Tables에 대한 액세스 권한을 부여하는 IAM 정책

  • 이러한 서비스에 연결하는 데 사용되는 VPC 네트워킹(엔드포인트 또는 NAT)

글로벌 데이터베이스 설정

1단계: 모든 리전에서 IAM 정책 및 역할 생성

IAM 역할 연결은 기본 DB 클러스터와 보조 DB 클러스터 간에 복제되지 않습니다. 기본 또는 보조 DB 클러스터가 포함된 모든 리전에서 AuroraAnalytics 기능 이름을 사용하여 IAM 역할을 생성하고 연결해야 합니다.

  1. 데이터에 대한 읽기 액세스 권한을 부여하는 IAM 정책을 생성합니다. 필요한 권한은 데이터 형식에 따라 다릅니다. 자세한 내용은 섹션을 참조하세요IAM 정책 참조

  2. rds.amazonaws.com이 신뢰하는 IAM 역할을 생성하고 정책을 연결합니다.

  3. 역할을 해당 리전의 DB 클러스터에 연결합니다.

    aws rds add-role-to-db-cluster \ --db-cluster-identifier <cluster-in-this-region> \ --role-arn arn:aws:iam::<account-id>:role/AuroraAnalyticsRole \ --feature-name AuroraAnalytics
  4. 역할 상태가 활성으로 표시될 때까지 기다립니다.

참고

역할이 연결된 직후(또는 인스턴스가 시작되거나 승격된 후)에는 외부 테이블에 대한 쿼리에서 일시적으로 credential to access AWS service is unavailable 오류가 반환될 수 있습니다. 외부 테이블에서 쿼리를 실행하기 전에 역할 상태가 활성이 될 때까지 기다립니다.

2단계: 모든 리전에서 네트워킹 설정

VPC 구성 역시 복제되지 않습니다. 각 DB 클러스터(기본 클러스터 및 모든 보조 클러스터)의 VPC 내에 필요한 서비스로 향하는 네트워크 경로를 마련하여, DB 클러스터가 쿼리 처리를 위해 외부 테이블 데이터에 접근할 수 있도록 해야 합니다. 각 보조 클러스터의 네트워크 구성이 외부 테이블이 위치한 리전으로의 접근을 허용하는지 확인하세요.

각 리전에 필요한 VPC 엔드포인트
서비스 엔드포인트 유형 용도
Amazon S3(com.amazonaws.<region>.s3) Gateway 모든 Amazon S3 및 Amazon S3 Tables 데이터 액세스
AWS Glue (com.amazonaws.<region>.glue) 인터페이스 AWS Glue Data Catalog 액세스(Iceberg 테이블)
AWS STS (com.amazonaws.<region>.sts) 인터페이스 IAM 역할 자격 증명 검색

AWS Glue 및 AWS STS 인터페이스 엔드포인트의 경우 프라이빗 DNS를 활성화하고 VPC CIDR에서 인바운드 TCP 443을 허용합니다.

3단계: 기본 클러스터에 확장 설치

기본 DB 클러스터의 라이터 DB 인스턴스에 연결하고 외부 테이블을 생성할 각 데이터베이스에 확장을 설치합니다.

CREATE EXTENSION aurora_analytics;

확장은 각 보조 DB 클러스터에 자동으로 복제됩니다.

4단계: 기본 클러스터에서 외부 테이블 생성

기본 DB 클러스터의 라이터 DB 인스턴스에서 해당 데이터를 가리키는 외부 테이블을 생성합니다.

-- Parquet via S3 URI CREATE FOREIGN TABLE ft_orders () SERVER aurora_analytics_server OPTIONS (location 's3://my-bucket/orders/', format 'parquet', region 'us-east-1'); -- Iceberg via Glue ARN CREATE FOREIGN TABLE ft_transactions () SERVER aurora_analytics_server OPTIONS (location 'arn:aws:glue:us-east-1:123456789012:table/mydb/transactions', format 'iceberg');

Aurora는 DDL을 각 보조 DB 클러스터로 복제하므로 해당 클러스터에서도 외부 테이블을 쿼리할 수 있습니다.

5단계: 보조 클러스터에서 확인

보조 DB 클러스터에 연결하고 복제 및 읽기 액세스를 확인합니다.

SELECT extname, extversion FROM pg_extension WHERE extname = 'aurora_analytics'; SELECT count(*) FROM ft_orders;

외부 테이블의 리전 고정

외부 테이블을 생성하면 해당 테이블의 데이터 location 및 Region이 테이블 정의에 저장되고 글로벌 데이터베이스의 모든 DB 클러스터에 복제됩니다. 따라서 모든 DB 클러스터가 동일한 위치에서 데이터를 읽게 됩니다.

이는 다음을 의미합니다.

  • 각 보조 DB 클러스터는 테이블 정의에 지정된 리전에서 외부 테이블 데이터를 읽습니다.

  • 해당 리전이 보조 클러스터의 리전과 다를 경우 교차 리전 읽기가 발생하며, 이로 인해 데이터 전송 비용과 지연 시간이 추가됩니다.

  • 각 보조 클러스터의 IAM 역할 및 네트워크 구성은 외부 테이블이 위치한 리전으로의 연결을 허용해야 합니다.

참고

Amazon S3 다중 리전 액세스 포인트(MRAP)는 외부 테이블 위치로 지원되지 않습니다. Aurora PostgreSQL은 location 옵션에서 s3:// URI, AWS Glue Table ARN 및 Amazon S3 Tables ARN만 허용합니다. MRAP ARN 및 MRAP 호스트 이름은 location 옵션에 유효하지 않습니다.

DR 준비에 대한 일반 지침

보조 DB 클러스터에 대해 1~2단계의 리전별 설정을 완료한 후, DB 클러스터가 외부 테이블 데이터에 어떻게 액세스할지 결정합니다.

  • 교차 리전 읽기 허용: 이 접근 방식은 원래 리전이 정상 상태이고, 계획된 전환 시나리오인 경우에만 적합합니다.

  • 리전-로컬 복사본 사전 준비: Amazon S3 Cross-Region Replication을 사용하여, 원래 리전을 사용할 수 없는 경우에도 분석 쿼리가 로컬에서 데이터를 읽을 수 있도록 합니다. 리전-로컬 복사본을 가리키도록 외부 테이블 위치를 업데이트하는 ALTER FOREIGN TABLE ... OPTIONS (SET ...) 문을 준비합니다.

참고

전환 또는 장애 조치가 발생할 경우 온디스크 읽기 캐시는 유지되지 않으며 이전되지도 않습니다. 해당 이벤트 이후 실행되는 첫 번째 쿼리는 Amazon S3에서 데이터를 읽어오므로 캐시가 워밍업될 때까지는 더 높은 지연 시간이 발생합니다.

전환 및 장애 조치 처리

Aurora Global Database 전환 또는 장애 조치 중에는 외부 테이블 쿼리에 표준 데이터베이스 클라이언트 연결을 넘어서는 추가적인 종속성이 발생합니다. 즉, 쿼리가 각 외부 테이블에 지정된 리전의 Amazon S3, AWS Glue, AWS STS에 연결될 수 있어야 합니다.

글로벌 데이터베이스 전환

전환 시점에 기본 DB 클러스터와 보조 DB 클러스터는 모두 정상 상태입니다. 새 기본 DB 클러스터를 사용할 수 있게 된 후에도 쿼리는 계속 각 외부 테이블에 지정된 리전에서 데이터를 읽습니다. 해당 리전이 새로운 라이터의 리전과 다를 경우 교차 리전 읽기가 수행되며, 이로 인해 데이터 전송 비용과 지연 시간이 발생합니다. 교차 리전 읽기 지연 시간을 방지하기 위해 준비된 ALTER FOREIGN TABLE ... OPTIONS (SET ...) 문을 실행하여 외부 테이블이 리전-로컬 복사본을 가리키도록 재지정합니다.

전환 후 운영 재개

  1. 클라이언트가 새 기본 DB 클러스터의 라이터 엔드포인트에 다시 연결할 수 있도록 허용합니다.

  2. IAM 역할 상태가 활성이 될 때까지 기다립니다. 재시도 로직을 적용한 테스트 쿼리(예: SELECT count(*) FROM ft_orders)를 외부 테이블에 대해 실행하여 분석 쿼리가 정상적으로 작동하는지 확인합니다.

  3. 리전-로컬 복사본을 사용하는 경우 새 기본 DB 클러스터에서 준비된 ALTER 문을 실행하여 외부 테이블 위치를 업데이트합니다.

    ALTER FOREIGN TABLE ft_orders OPTIONS (SET location 's3://dr-region-bucket/orders/', SET region 'us-west-2'); ALTER FOREIGN TABLE ft_transactions OPTIONS (SET location 'arn:aws:glue:us-west-2:123456789012:table/mydb/transactions');
참고

ALTER FOREIGN TABLE ... OPTIONS (SET ...)는 카탈로그 메타데이터만 변경하는 작업으로, 데이터 이동 없이 즉시 완료됩니다. 해당 단일 외부 테이블에 대해 짧은 시간 동안 ACCESS EXCLUSIVE 잠금이 획득됩니다. 따라서 동일한 테이블에서 진행 중인 다른 쿼리가 있다면 해당 쿼리가 끝날 때까지 차단됩니다.

글로벌 데이터베이스 장애 조치

원래 리전에 장애가 발생하거나 연결이 불가능해질 수 있습니다. 외부 테이블에 이처럼 장애가 발생한 리전이 지정되어 있다면, 해당 리전이 복구되거나 외부 테이블이 정상 리전의 데이터를 참조하도록 재지정되기 전까지는 해당 테이블에 대한 쿼리가 긴 지연을 겪거나 시간 초과 오류로 실패할 수 있습니다. 리전-로컬 복사본을 사전 준비한 경우 준비된 ALTER FOREIGN TABLE ... OPTIONS (SET region ...) 문을 실행하여 외부 테이블이 리전-로컬 복사본을 가리키도록 합니다.

원래 기본 리전 복원

원래 기본 리전을 사용할 수 있게 되면 Aurora는 이를 보조 DB 클러스터로 글로벌 데이터베이스에 자동으로 다시 추가합니다. 전환 또는 장애 조치 중에 수행된 모든 ALTER FOREIGN TABLE 변경 사항은 글로벌 복제를 통해 해당 리전으로 복제됩니다. 원래 기본 리전을 복원하려면 전환을 수행합니다. 전환이 완료된 후 외부 테이블 위치를 복원된 기본 리전의 데이터를 가리키도록 되돌릴지 여부를 결정합니다.

글로벌 데이터베이스 오류 메시지

전환 또는 장애 조치 후, 새 기본 리전의 쿼리는 보조 DB 클러스터가 실행 중인 모든 리전에 영향을 미치는 것과 동일한 IAM 역할 연결, IAM 권한 및 네트워크 오류로 인해 실패할 수 있습니다. 이러한 오류와 해결 방법은 모니터링 및 문제 해결의 글로벌 데이터베이스 전환 및 장애 조치에서 다룹니다. IAM 역할 연결, IAM 정책 및 VPC 네트워킹은 복제되지 않으므로 각 보조 리전에서 사전 조건을 충족해야 합니다.

  • 외부 테이블의 location 및 region은 리전별 재정의가 불가능하며 전체에 동일하게 복제되는 단일 정의입니다. 따라서 두 클러스터가 동일한 테이블에 대해 서로 다른 리전 설정을 유지할 수 없습니다.

  • Amazon S3 다중 리전 액세스 포인트 및 Amazon S3 액세스 포인트 ARN은 외부 테이블 위치로 지원되지 않습니다.

  • VPC 게이트웨이 엔드포인트는 리전별로 설정되어 있어 다른 리전의 Amazon S3에는 연결할 수 없습니다. 교차 리전 네트워크 경로를 구성하려면 NAT/인터넷 이그레스 또는 Transit Gateway가 필요합니다.

  • 전환 후 외부 테이블 위치를 새 기본 DB 클러스터의 리전으로 업데이트하면, 이전 기본 DB 클러스터가 대신 교차 리전 읽기를 수행하게 됩니다.

  • 외부 테이블 DDL 및 확장은 보조 DB 클러스터가 연결되고 동기화된 후에만 복제됩니다. 보조 DB 클러스터가 연결된 후 기본 DB 클러스터에 aurora_analytics 확장을 설치하고 외부 테이블을 생성해야 이들이 보조 DB 클러스터로 전파됩니다.