レプリカでの 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 クラスターエンドポイントに再設定する必要があります。