

# PostgreSQL 데이터베이스를 전송하도록 설정
<a name="PostgreSQL.TransportableDB.Setup"></a>

시작하기 전에 RDS for PostgreSQL DB 인스턴스가 다음 요구 사항을 충족하는지 확인하세요.
+ 소스 및 대상 RDS for PostgreSQL DB 인스턴스는 동일한 버전의 PostgreSQL을 실행해야 합니다.
+ 대상 DB에는 전송할 소스 DB와 같은 이름의 데이터베이스를 가질 수 없습니다.
+ 전송을 실행하는 데 사용하는 계정은 소스 DB와 대상 DB 모두에 대한 `rds_superuser` 권한이 필요합니다.
+ 소스 DB 인스턴스의 보안 그룹은 대상 DB 인스턴스의 인바운드 액세스를 허용해야 합니다. 소스 및 대상 DB 인스턴스가 VPC에 있는 경우 이미 해당 경우일 수 있습니다. 보안 그룹에 대한 자세한 내용은 [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md)를(을) 참조하세요.

소스 DB 인스턴스에서 대상 DB 인스턴스로 데이터베이스를 전송하려면 각 인스턴스와 연결된 DB 파라미터 그룹을 몇 번 변경해야 합니다. 즉, 소스 DB 인스턴스에 대한 사용자 지정 DB 파라미터 그룹을 생성하고 대상 DB 인스턴스에 대한 사용자 지정 DB 파라미터 그룹을 생성해야 합니다.

**참고**  
DB 인스턴스가 이미 사용자 지정 DB 파라미터 그룹을 사용하여 구성된 경우 다음 절차의 2단계부터 시작할 수 있습니다.

**데이터베이스 전송을 위한 사용자 지정 DB 그룹 파라미터 구성**

다음 단계에서는 `rds_superuser` 권한을 가진 계정을 사용하세요.

1. 소스 및 대상 DB 인스턴스가 기본 DB 파라미터 그룹을 사용하는 경우 인스턴스에 적합한 버전을 사용하여 사용자 지정 DB 파라미터 그룹을 생성해야 합니다. 이렇게 하면 여러 파라미터의 값을 변경할 수 있습니다. 자세한 내용은 [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md) 섹션을 참조하세요.

1. 사용자 지정 DB 파라미터 그룹에서 다음 파라미터 값을 변경합니다.
   + `shared_preload_libraries` - 라이브러리 목록에 `pg_transport`를 추가합니다.
   + `pg_transport.num_workers` - 기본값은 3입니다. 데이터베이스에 필요한 경우 이 값을 늘리거나 줄입니다. 200GB 데이터베이스의 경우 8이하의 값이 좋습니다. 이 파라미터의 기본값을 늘리면 `max_worker_processes` 값도 늘려야 합니다.
   + `pg_transport.work_mem` - 기본값은 PostgreSQL 버전에 따라 128MB 또는 256MB입니다. 기본 설정은 일반적으로 변경되지 않을 수 있습니다.
   + `max_worker_processes` - 이 파라미터의 값은 다음 계산을 사용하여 설정해야 합니다.

     ```
     (3 * pg_transport.num_workers) + 9
     ```

     전송과 관련된 다양한 백그라운드 작업자 프로세스를 처리하기 위해 대상에서 필요한 값입니다. `max_worker_processes,`에 관한 자세한 내용은 PostgreSQL 문서에서 [리소스 소비](https://www.postgresql.org/docs/current/runtime-config-resource.html)를 참조하세요.

   `pg_transport` 파라미터에 대한 자세한 내용은 [전송 가능한 데이터베이스 파라미터 참조](PostgreSQL.TransportableDB.Parameters.md) 단원을 참조하십시오.

1. 소스 RDS for PostgreSQL DB 인스턴스 및 대상 인스턴스를 재부팅하면 파라미터 설정이 적용됩니다.

1. RDS for PostgreSQL 소스 DB 인스턴스에 연결합니다.

   ```
   psql --host=source-instance.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. DB 인스턴스의 퍼블릭 스키마에서 불필요한 확장을 제거합니다. 실제 전송 작업 중에만 `pg_transport` 확장이 허용됩니다.

1. 다음과 같이 `pg_transport` 확장을 설치합니다.

   ```
   postgres=> CREATE EXTENSION pg_transport;
   CREATE EXTENSION
   ```

1. RDS for PostgreSQL 대상 DB 인스턴스에 연결합니다. 불필요한 확장을 제거한 다음 `pg_transport` 확장을 설치합니다.

   ```
   postgres=> CREATE EXTENSION pg_transport;
   CREATE EXTENSION
   ```