

# Aurora PostgreSQL Limitless Database 데이터 로드 유틸리티 사용
<a name="limitless-load.utility"></a>

Aurora는 Aurora PostgreSQL DB 클러스터 또는 RDS for PostgreSQL DB 인스턴스에서 Limitless Database로 직접 데이터를 로드하는 유틸리티를 제공합니다.

데이터 로드 유틸리티를 사용하려면 다음 단계를 수행합니다.

1. [사전 조건](#limitless-load.prereqs)

1. [소스 데이터베이스 준비](#limitless-load.source)

1. [대상 데이터베이스 준비](#limitless-load.destination)

1. [데이터베이스 자격 증명 만들기](#limitless-load.users)

1. 다음 중 하나입니다.
   + [스크립트를 사용하여 데이터베이스 인증 및 리소스 액세스 설정](limitless-load.script.md) (권장)
   + [데이터베이스 인증 및 리소스 액세스 수동 설정](limitless-load.manual.md)

1. [Aurora PostgreSQL DB 클러스터 또는 RDS for PostgreSQL DB 인스턴스에서 데이터 로드](limitless-load.data.md)

## 제한 사항
<a name="limitless-load.limitations"></a>

데이터 로드 유틸리티에는 다음과 같은 제한 사항이 있습니다.
+ `enum`, `ARRAY`, `BOX`, `CIRCLE`, `LINE`, `LSEG`, `PATH`, `PG_LSN`, `PG_SNAPSHOT`, `POLYGON`, `TSQUERY`, `TSVECTOR`, `TXID_SNAPSHOT` 데이터 유형은 지원되지 않습니다.
+ 로드 중에 `VARBIT` 데이터 유형에서 선행 0(`0`)이 제거됩니다.
+ 대상 테이블에 외래 키가 있는 경우 데이터 마이그레이션이 실패합니다.
+ Limitless Data Utility는 Amazon RDS for PostgreSQL 다중 AZ DB 클러스터에 대해 다음과 같은 소스 구성을 지원합니다.
  + 기본 인스턴스
    + 지원되는 모드: 스냅샷, snapshot\_then\_cdc
  + 복제본 인스턴스
    + 지원되는 모드: 스냅샷만
      + 요구 사항: hot\_standby\_feedback을 활성화해야 함
    + 지원되지 않음: snapshot\_then\_cdc

## 사전 조건
<a name="limitless-load.prereqs"></a>

데이터 로드 유틸리티에는 다음과 같은 사전 조건이 있습니다.
+ 소스 데이터베이스는 Aurora PostgreSQL 또는 RDS for PostgreSQL 버전 11.x 이상을 사용해야 합니다.
+ 소스 데이터베이스는 대상 DB 샤드 그룹과 동일한 AWS 계정 및 AWS 리전에 있어야 합니다.
+ 소스 DB 클러스터 또는 DB 인스턴스가 `available` 상태여야 합니다.
+ 소스 데이터베이스와 무한 데이터베이스의 테이블은 테이블 이름, 열 이름 및 열 데이터 유형이 동일해야 합니다.
+ 소스 및 대상 테이블에는 열과 열 순서가 동일한 프라이머리 키가 있어야 합니다.
+ 데이터 로드 명령을 실행하려면 무한 데이터베이스에 연결할 수 있는 환경이 있어야 합니다. 사용 가능한 명령은 다음과 같습니다.
  + `rds_aurora.limitless_data_load_start`
  + `rds_aurora.limitless_data_load_cancel`
+ CDC의 경우:
  + 소스 데이터베이스와 대상 DB 샤드 그룹 모두 동일한 DB 서브넷 그룹, VPC 보안 그룹 및 데이터베이스 포트를 사용해야 합니다. 이러한 설정은 소스 데이터베이스와 DB 샤드 그룹의 라우터 모두에 대한 네트워크 연결을 위한 것입니다.
  + 소스 데이터베이스에서 논리적 복제를 활성화해야 합니다. 소스 데이터베이스 사용자에게 논리적 복제를 읽을 권한이 있어야 합니다.

## 소스 데이터베이스 준비
<a name="limitless-load.source"></a>

데이터 로드를 위해 소스 데이터베이스에 액세스하려면 수신 네트워크 트래픽을 허용해야 합니다. 다음 단계를 수행합니다.

**소스 데이터베이스로의 네트워크 트래픽을 허용하는 방법**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. **보안 그룹** 페이지로 이동합니다.

1. 소스 DB 클러스터 또는 인스턴스에서 사용하는 보안 그룹의 **보안 그룹 ID**를 선택합니다.

   예를 들어 보안 그룹 ID는 `sg-056a84f1712b77926`입니다.

1. **인바운드 규칙** 탭에서 다음을 수행합니다.

   1. **인바운드 규칙 편집**을 선택합니다.

   1. 소스 DB 클러스터 또는 인스턴스에 대한 새 인바운드 규칙을 추가합니다.
      + 포트 범위 - 소스 데이터베이스의 데이터베이스 포트로, 일반적으로 `5432`입니다.
      + 보안 그룹 ID - 이 예시에서는 `sg-056a84f1712b77926`입니다.  
![소스 데이터베이스에 대한 인바운드 규칙을 추가합니다.](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_inbound_rule.png)

1. **아웃바운드 규칙** 탭에서 다음을 수행합니다.

   1. **아웃바운드 규칙 편집**을 선택합니다.

   1. 소스 DB 클러스터 또는 인스턴스에 대한 새 아웃바운드 규칙을 추가합니다.
      + 데이터베이스 포트 - `All traffic`(`0-65535` 포트 포함)
      + 보안 그룹 ID - 이 예시에서는 `sg-056a84f1712b77926`입니다.  
![소스 데이터베이스에 대한 아웃바운드 규칙을 추가합니다.](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/images/limitless_self_access_outbound_rule.png)

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. **네트워크 ACL** 페이지로 이동합니다.

1. [기본 네트워크 ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#default-network-acl)에 설명된 대로 기본 네트워크 ACL 구성을 추가합니다.

## 대상 데이터베이스 준비
<a name="limitless-load.destination"></a>

[Aurora PostgreSQL Limitless Database 테이블 만들기](limitless-creating.md)의 프로시저에 따라 DB 샤드 그룹에 대상 테이블을 만듭니다.

대상 테이블에는 소스 테이블과 동일한 스키마, 테이블 이름 및 프라이머리 키가 있어야 합니다.

## 데이터베이스 자격 증명 만들기
<a name="limitless-load.users"></a>

소스 및 대상 데이터베이스에서 데이터베이스 사용자를 만들고 사용자에게 필요한 권한을 부여해야 합니다. 자세한 내용은 PostgreSQL 설명서에서 [CREATE USER](https://www.postgresql.org/docs/current/sql-createuser.html) 및 [GRANT](https://www.postgresql.org/docs/current/sql-grant.html)를 참조하세요.

### 소스 데이터베이스 자격 증명 만들기
<a name="limitless-load.users.source"></a>

소스 데이터베이스 사용자가 명령에서 전달되어 로드를 시작합니다. 이 사용자에게는 소스 데이터베이스에서 복제를 수행할 권한이 있어야 합니다.

1. 데이터베이스 마스터 사용자(또는 `rds_superuser` 역할을 가진 다른 사용자)를 사용하여 `LOGIN` 권한이 있는 소스 데이터베이스 사용자를 만듭니다.

   ```
   CREATE USER {{source_db_username}} WITH PASSWORD '{{source_db_user_password}}';
   ```

1. 소스 데이터베이스 사용자에게 `rds_superuser` 역할을 부여합니다.

   ```
   GRANT rds_superuser to {{source_db_username}};
   ```

1. `full_load_and_cdc` 모드를 사용하는 경우 소스 데이터베이스 사용자에게 `rds_replication` 역할을 부여합니다. `rds_replication` 역할은 논리적 슬롯을 관리하고 논리적 슬롯을 사용하여 데이터를 스트리밍할 수 있는 권한을 부여합니다.

   ```
   GRANT rds_replication to {{source_db_username}};
   ```

### 대상 데이터베이스 자격 증명 만들기
<a name="limitless-load.users.destination"></a>

대상 데이터베이스 사용자는 DB 샤드 그룹의 대상 테이블에 쓸 수 있는 권한이 있어야 합니다.

1. 데이터베이스 마스터 사용자(또는 `rds_superuser` 역할을 가진 다른 사용자)를 사용하여 `LOGIN` 권한이 있는 대상 데이터베이스 사용자를 만듭니다.

   ```
   CREATE USER {{destination_db_username}} WITH PASSWORD '{{destination_db_user_password}}';
   ```

1. 대상 데이터베이스 사용자에게 `rds_superuser` 역할을 부여합니다.

   ```
   GRANT rds_superuser to {{destination_db_username}};
   ```