복제본에서 Aurora PostgreSQL 실행 계획 캡처 - Amazon Aurora

복제본에서 Aurora PostgreSQL 실행 계획 캡처

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

사전 조건

Aurora 복제본에서 capture_plan_baselines parameter 켜기 - Aurora 복제본에서 계획을 캡처하려면 capture_plan_baselines 파라미터를 자동 또는 수동으로 설정합니다. 자세한 내용은 apg_plan_mgmt.capture_plan_baselines 단원을 참조하십시오.

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

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

Aurora 복제본의 계획 캡처 관리

Aurora 복제본의 계획 캡처 켜기

Aurora 복제본에서 계획 캡처를 생성하거나 제거하려면 rds_superuser 권한이 있어야 합니다. 사용자 역할 및 권한에 대한 자세한 내용은 PostgreSQL 역할 및 권한 이해를 참조하세요.

계획을 캡처하려면 다음과 같이 라이터 DB 인스턴스에서 apg_plan_mgmt.create_replica_plan_capture 함수를 호출하세요.

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

    Aurora Global Database 라이터 엔드포인트에 대한 자세한 내용은 Amazon Aurora Global Database의 엔드포인트 보기 섹션을 참조하시기 바랍니다.

    클러스터 엔드포인트에 대한 자세한 내용은 Amazon Aurora용 클러스터 엔드포인트 섹션을 참조하세요.

  • 암호 - 보안을 강화하려면 암호를 생성할 때 아래 지침을 따르는 것이 좋습니다.

    • 최소 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_plan_mgmt.create_replica_plan_capture()를 다시 호출해야 합니다.

문제 해결

Aurora 복제본에서 계획이 예상대로 캡처되지 않는 경우 아래에서 문제 해결 아이디어와 해결 방법을 찾을 수 있습니다.

  • 파라미터 설정 - capture_plan_baselines 파라미터가 계획 캡처를 켜도록 적절한 값으로 설정되어 있는지 확인합니다.

  • postgres_fdw 확장 설치 - 다음 쿼리를 사용하여 postgres_fdw 설치 여부를 확인합니다.

    postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  • create_replica_plan_capture()가 호출됨 - 다음 명령을 사용하여 사용자 매핑이 종료되는지 확인합니다. 그렇지 않으면 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_plan_mgmt.delete_plan()을 호출한 후 apg_plan_mgmt.reload()를 호출해야 합니다. 이렇게 하면 변경 사항을 성공적으로 구현할 수 있습니다.

  • 암호 - 앞서 언급한 지침에 따라 create_replica_plan_capture()에 암호를 입력해야 합니다. 이렇게 하지 않으면 오류 메시지가 수신됩니다. 자세한 내용은 Aurora 복제본의 계획 캡처 관리 섹션을 참조하세요. 요구 사항에 맞는 다른 암호를 사용하세요.

  • 리전 간 연결 - Aurora 복제본의 계획 캡처는 Aurora Global Database에서도 지원됩니다. Aurora Global Database에서는 라이터 인스턴스와 Aurora 복제본이 서로 다른 리전에 있을 수 있습니다. Aurora Global Database 라이터 엔드포인트를 사용하여 장애 조치 또는 전환 이벤트 후 연결을 유지해야 합니다. Aurora Global Database 엔드포인트에 대한 자세한 내용은 Amazon Aurora Global Database의 엔드포인트 보기를 참조하시기 바랍니다. 라이터 인스턴스와 리전 간 복제본은 VPC 피어링을 사용하여 통신할 수 있어야 합니다. 자세한 내용은 VPC 피어링을 참조하세요. 리전 간 장애 조치가 발생하는 경우 엔드포인트를 새 기본 DB 클러스터 엔드포인트로 재구성해야 합니다.

    참고

    Aurora Global Database 라이터 엔드포인트 대신 클러스터 엔드포인트를 사용하는 경우 전역 장애 조치 또는 전환 작업을 수행한 후 클러스터 엔드포인트를 업데이트해야 합니다.