

# 복제본에서 Aurora PostgreSQL 실행 계획 캡처
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas"></a>

쿼리 계획 관리(QPM)를 사용하면 Aurora 복제본에서 생성된 쿼리 계획을 캡처하여 Aurora DB 클러스터의 기본 DB 인스턴스에 저장할 수 있습니다. 모든 Aurora 복제본에서 쿼리 계획을 수집하고 기본 인스턴스의 중앙 영구 테이블에서 최적의 계획 집합을 유지 관리할 수 있습니다. 그런 다음 필요할 때 이 계획을 다른 복제본에 적용할 수 있습니다. 이를 통해 실행 계획의 안정성을 유지하고 DB 클러스터 및 엔진 버전 전반의 쿼리 성능을 개선할 수 있습니다.

**Topics**
+ [

## 사전 조건
](#AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq)
+ [

## Aurora 복제본의 계획 캡처 관리
](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing)
+ [

## 문제 해결
](#AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting)

## 사전 조건
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Prereq"></a>

**Aurora 복제본에서 `capture_plan_baselines parameter` 켜기** - Aurora 복제본에서 계획을 캡처하려면 `capture_plan_baselines` 파라미터를 자동 또는 수동으로 설정합니다. 자세한 내용은 [apg\$1plan\$1mgmt.capture\$1plan\$1baselines](AuroraPostgreSQL.Optimize.Parameters.md#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines) 단원을 참조하십시오.

**postgres\$1fdw 확장 설치** - Aurora 복제본에서 계획을 캡처하려면 `postgres_fdw` 외부 데이터 래퍼 확장을 설치해야 합니다. 각 데이터베이스에서 다음 명령을 실행하여 확장을 설치합니다.

```
postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;
```

## Aurora 복제본의 계획 캡처 관리
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.managing"></a>

**Aurora 복제본의 계획 캡처 켜기**  
Aurora 복제본에서 계획 캡처를 생성하거나 제거하려면 `rds_superuser` 권한이 있어야 합니다. 사용자 역할 및 권한에 대한 자세한 내용은 [PostgreSQL 역할 및 권한 이해](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.PostgreSQL.CommonDBATasks.Roles.html)를 참조하세요.

계획을 캡처하려면 다음과 같이 라이터 DB 인스턴스에서 apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture 함수를 호출하세요.

```
postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('endpoint', 'password');
```
+ 엔드포인트 - Aurora Global Database 라이터 엔드포인트 또는 cluster\$1endpoint는 Aurora 복제본의 계획 캡처에 대한 장애 조치 지원을 제공합니다.

  Aurora Global Database 라이터 엔드포인트에 대한 자세한 내용은 [Amazon Aurora Global Database의 엔드포인트 보기](aurora-global-database-connecting.md#viewing-endpoints) 섹션을 참조하시기 바랍니다.

  클러스터 엔드포인트에 대한 자세한 내용은 [Amazon Aurora용 클러스터 엔드포인트](Aurora.Endpoints.Cluster.md) 섹션을 참조하세요.
+ 암호 - 보안을 강화하려면 암호를 생성할 때 아래 지침을 따르는 것이 좋습니다.
  + 최소 8개의 문자를 포함해야 합니다.
  + 최소한 대문자 1개, 소문자 1개 및 숫자 1개를 포함해야 합니다.
  + 하나 이상의 특수 문자(`?`, `!`, `#`, `<`, `>`, `*` 등)가 있어야 합니다.

**참고**  
엔드포인트, 암호 또는 포트 번호를 변경하는 경우 엔드포인트 및 암호를 사용하여 `apg_plan_mgmt.create_replica_plan_capture()`를 다시 실행하여 계획 캡처를 다시 초기화해야 합니다. 이렇게 하지 않으면 Aurora 복제본에서 계획을 캡처하는 데 실패합니다.

**Aurora 복제본의 계획 캡처 끄기**  
파라미터 그룹에서 값을 `off`로 설정하여 Aurora 복제본의 `capture_plan_baselines` 파라미터를 끌 수 있습니다.

**Aurora 복제본의 계획 캡처 제거**  
Aurora 복제본에서 계획 캡처를 완전히 제거할 수 있지만 먼저 확인할 것이 있습니다. 계획 캡처를 제거하려면 다음과 같이 `apg_plan_mgmt.remove_replica_plan_capture`를 호출합니다.

```
postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();
```

Aurora 복제본에서 계획 캡처를 설정하려면 엔드포인트와 암호를 사용하여 apg\$1plan\$1mgmt.create\$1replica\$1plan\$1capture()를 다시 호출해야 합니다.

## 문제 해결
<a name="AuroraPostgreSQL.QPM.Plancapturereplicas.Troubleshooting"></a>

Aurora 복제본에서 계획이 예상대로 캡처되지 않는 경우 아래에서 문제 해결 아이디어와 해결 방법을 찾을 수 있습니다.
+ **파라미터 설정** - `capture_plan_baselines` 파라미터가 계획 캡처를 켜도록 적절한 값으로 설정되어 있는지 확인합니다.
+ **`postgres_fdw` 확장 설치** - 다음 쿼리를 사용하여 `postgres_fdw` 설치 여부를 확인합니다.

  ```
  postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  ```
+ **create\$1replica\$1plan\$1capture()가 호출됨** - 다음 명령을 사용하여 사용자 매핑이 종료되는지 확인합니다. 그렇지 않으면 `create_replica_plan_capture()`를 호출하여 기능을 초기화합니다.

  ```
  postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **엔드포인트 및 포트 번호** - 해당하는 경우 엔드포인트 및 포트 번호를 확인합니다. 값이 올바르지 않으면 오류 메시지가 표시되지 않습니다.

  다음 명령을 사용하여 create()에 엔드포인트가 사용되었는지 확인하고 엔드포인트가 있는 데이터베이스를 확인합니다.

  ```
  postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  ```
+ **reload()** - 삭제 함수를 유효하게 하려면 Aurora 복제본에서 apg\$1plan\$1mgmt.delete\$1plan()을 호출한 후 apg\$1plan\$1mgmt.reload()를 호출해야 합니다. 이렇게 하면 변경 사항을 성공적으로 구현할 수 있습니다.
+ **암호** - 앞서 언급한 지침에 따라 create\$1replica\$1plan\$1capture()에 암호를 입력해야 합니다. 이렇게 하지 않으면 오류 메시지가 수신됩니다. 자세한 내용은 [Aurora 복제본의 계획 캡처 관리](#AuroraPostgreSQL.QPM.Plancapturereplicas.managing) 섹션을 참조하세요. 요구 사항에 맞는 다른 암호를 사용하세요.
+ **리전 간 연결** - Aurora 복제본의 계획 캡처는 Aurora Global Database에서도 지원됩니다. Aurora Global Database에서는 라이터 인스턴스와 Aurora 복제본이 서로 다른 리전에 있을 수 있습니다. Aurora Global Database 라이터 엔드포인트를 사용하여 장애 조치 또는 전환 이벤트 후 연결을 유지해야 합니다. Aurora Global Database 엔드포인트에 대한 자세한 내용은 [Amazon Aurora Global Database의 엔드포인트 보기](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-connecting.html#viewing-endpoints)를 참조하시기 바랍니다. 라이터 인스턴스와 리전 간 복제본은 VPC 피어링을 사용하여 통신할 수 있어야 합니다. 자세한 내용은 [VPC 피어링](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)을 참조하세요. 리전 간 장애 조치가 발생하는 경우 엔드포인트를 새 기본 DB 클러스터 엔드포인트로 재구성해야 합니다.
**참고**  
Aurora Global Database 라이터 엔드포인트 대신 클러스터 엔드포인트를 사용하는 경우 전역 장애 조치 또는 전환 작업을 수행한 후 클러스터 엔드포인트를 업데이트해야 합니다.