レプリカでの Aurora PostgreSQL 実行プランのキャプチャ - Amazon Aurora

レプリカでの Aurora PostgreSQL 実行プランのキャプチャ

QPM (クエリプラン管理) を使用すると、Aurora Replicas によって生成されたクエリプランをキャプチャし、Aurora DB クラスターのプライマリ DB インスタンスに保存できます。すべての Aurora Replicas からクエリプランを収集し、プライマリインスタンスの中央永続テーブルで最適なプランのセットを管理できます。その後、必要に応じてこれらのプランを他のレプリカに適用できます。これにより、DB クラスターやエンジンバージョン全体にわたって実行プランの安定性を維持し、クエリのパフォーマンスを向上させることができます。

前提条件

Aurora レプリカで capture_plan_baselines parameter を有効にする - Aurora Replicas でプランをキャプチャするには、capture_plan_baselines パラメーターを自動または手動に設定します。詳細については、「apg_plan_mgmt.capture_plan_baselines」を参照してください。

postgres_fdw 拡張機能をインストールする - Aurora Replicas でプランをキャプチャするには、postgres_fdw 外部データラッパー拡張機能をインストールする必要があります。拡張機能をインストールするには、各データベースで次のコマンドを実行します。

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

Aurora Replicas のプランキャプチャの管理

Aurora Replicas のプランキャプチャをオンにする

Aurora Replicas でプランキャプチャを作成または削除するには、rds_superuser 権限が必要です。ユーザーのロールとアクセス許可の詳細については、「PostgreSQL のロールとアクセス許可の理解」を参照してください。

プランをキャプチャするには、以下に示すように、ライター DB インスタンスで関数 apg_plan_mgmt.create_replica_plan_capture を呼び出します。

postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('cluster_endpoint', 'password');
  • cluster_endpoint-cluster_endpoint (ライターエンドポイント) は、Aurora Replicas でのプランキャプチャに対してフェイルオーバーのサポートを提供します。

  • パスワード - セキュリティを強化するためにパスワードを作成する際は、以下のガイドラインに従うことをお勧めします。

    • 少なくとも 8 文字を含める必要があります。

    • 少なくとも大文字 1 つ、小文字 1 つ、および 数字 1 つを含める必要があります。

    • 少なくとも 1 つの特殊文字 (?!#<>*、など) を含める必要です。

注記

クラスターエンドポイント、パスワード、またはポート番号を変更した場合は、クラスターエンドポイントとパスワードを使用して apg_plan_mgmt.create_replica_plan_capture() を再実行し、プランキャプチャを再初期化する必要があります。そうでない場合、Aurora Replicas からのプランのキャプチャは失敗します。

Aurora Replicas のプランキャプチャをオフにする

Aurora Replicas の capture_plan_baselines パラメータをオフにするには、パラメータグループの値を off に設定します。

Aurora Replicas のプランキャプチャを削除する

Aurora Replicas のプランキャプチャは完全に削除できますが、削除する前に確認してください。プランキャプチャを削除するには、以下のように apg_plan_mgmt.remove_replica_plan_capture を呼び出します。

postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();

クラスターエンドポイントとパスワードを使用して Aurora Replicas のプランキャプチャをオンにするには、apg_plan_mgmt.create_replica_plan_capture() を再度呼び出す必要があります。

トラブルシューティング

以下に、プランが想定どおりに Aurora Replicas にキャプチャされない場合のトラブルシューティングのヒントと回避策を示します。

  • パラメータ設定 - プランキャプチャを有効にするために 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 Replicas で apg_plan_mgmt.delete_plan() を呼び出した後に apg_plan_mgmt.reload() を呼び出す必要があります。これにより、変更が正常に実装されたことが保証されます。

  • パスワード - 記載されているガイドラインに従って create_replica_plan_capture() にパスワードを入力する必要があります。入力しないと、エラーメッセージが表示されます。詳細については、「Aurora Replicas のプランキャプチャの管理」を参照してください。要件に合った別のパスワードを使用してください。

  • クロスリージョン接続 - Aurora Replicas でのプランキャプチャは Aurora グローバルデータベースでもサポートされており、ライターインスタンスと Aurora Replicas は異なるリージョンに配置できます。ライターインスタンスとクロスリージョンレプリカは VPC ピアリングを使用して通信できる必要があります。詳細については、「VPC ピアリング接続」を参照してください。クロスリージョンフェイルオーバーが発生した場合、エンドポイントを新しいプライマリ DB クラスターエンドポイントに再設定する必要があります。