rds_tools 関数リファレンス
rds_tools 拡張機能は、RDS for PostgreSQL DB インスタンスを管理およびモニタリングするための一連のユーティリティ関数を提供します。これらの関数を使用すると、個別のモニタリングツールを使用せずに、SQL から直接レプリケーション、バキューム、および設定の問題を診断できます。これらの関数は、標準の PostgreSQL 関数に追加されています。標準の PostgreSQL 関数の詳細については、PostgreSQL ドキュメントの「Functions and operators
このセクションでは、RDS for PostgreSQL で使用できる rds_tools 関数について説明します。各関数の説明には、関数が使用可能になった rds_tools 拡張機能のバージョンが記載されています。
拡張機能を作成するには、次のコマンドを実行します。
postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
トピック
rds_tools.role_password_encryption_type
各データベースロールに使用されるパスワード暗号化方法を返します。このセットを返す関数は、RDS で保護されたシステムロールを出力から除外します。rds_tools 拡張機能バージョン 1.0 以降で使用できます。
データベースユーザーを SCRAM に移行する前に、この関数を使用してパスワード暗号化を確認する例については、「PostgreSQL のパスワード暗号化に SCRAM を使用する」を参照してください。
関数プロトタイプ
rds_tools.role_password_encryption_type()
引数
なし。
Output
-
rolname– データベースロールの名前。 -
encryption_type– 使用されるパスワード暗号化方法 (md5やscram-sha-256など)。
使用例
=> SELECT * FROM rds_tools.role_password_encryption_type(); rolname | encryption_type ---------------+----------------- postgres | md5 app_user | md5 readonly_user | scram-sha-256 (3 rows)
rds_tools.blue_green_get_status
ブルー/グリーンデプロイオペレーション中に、制限付きコマンドが実行されていないかを確認します。論理レプリケーションを使用するブルー/グリーンデプロイでは、ブルー環境とグリーン環境の間で、データ定義言語 (DDL) コマンドやラージオブジェクト (LO) オペレーションをレプリケートすることはできません。制限されたコマンドが検出された場合は、データを適切にグリーン環境にレプリケートできないため、ブルー/グリーンデプロイを再起動します。rds_tools 拡張機能バージョン 1.3 以降で使用できます。
関数プロトタイプ
rds_tools.blue_green_get_status(command_type)
引数
-
command_type– 確認対象となる制限付きコマンドのタイプ。有効な値は、'DDL'(データ定義言語コマンド) と'LO'(大規模なオブジェクト操作) です。
Output
boolean 値。指定されたタイプの制限付きコマンドがデプロイ中に実行された場合は true、そのようなコマンドが検出されなかった場合は false を返します。
使用例
=> SELECT rds_tools.blue_green_get_status('DDL'); blue_green_get_status ----------------------- f (1 row)
rds_tools.postgres_get_av_diag
ブロックされている、あるいは遅延している自動バキュームプロセスに関する診断情報を取得し、各問題を解決するための提案を提示します。正確な結果を得るために、最も古いトランザクション ID を持つデータベースでこのセットを返す関数を実行します。詳細については、「積極的なバキュームのブロック要因を特定して解決する」を参照してください。
rds_tools 拡張機能バージョン 1.9 以降で使用できます。
関数プロトタイプ
rds_tools.postgres_get_av_diag()
引数
なし。
Output
-
blocker– バキュームをブロックしているデータベースアクティビティのカテゴリ。値は次のいずれかです。アクティブなステートメント
トランザクションでのアイドル状態
準備済みトランザクション
論理レプリケーションスロット
物理レプリケーションスロットを使用するリードレプリカ
ストリーミングレプリケーションを使用するリードレプリカ
一時テーブル
-
database– ブロックアクティビティが発生しているデータベースの名前。 -
blocker_identifier– ブロックアクティビティの識別子。値は、ブロッカーのタイプによって異なります。アクティブなステートメント、またはトランザクション内でアイドル状態のセッションのプロセス ID と SQL ステートメント。
準備済みトランザクションの場合、準備済みトランザクション名。
リードレプリカの場合、そのレプリカの IP アドレス。
レプリケーションスロットの場合は、レプリケーションスロット名。
-
wait_event– ブロッキングセッションの待機イベント (該当する場合)。 -
autovacuum_lagging_by– そのカテゴリで、自動バキュームが遅延しているトランザクションの数。 -
suggestion– ブロッカーを解決するための提案。データベース名、プロセス ID、実行するアクションを含みます。 -
suggested_action– ブロッカーを解決するために実行するアクションの配列。
使用例
=> SELECT * FROM rds_tools.postgres_get_av_diag() ORDER BY autovacuum_lagging_by DESC; blocker | Active statement database | my_database blocker_identifier | SELECT pg_sleep(20000); wait_event | Timeout:PgSleep autovacuum_lagging_by | 568600871 suggestion | Connect to database "my_database", review carefully, and consider terminating the process using suggested_action. suggested_action | {"SELECT pg_terminate_backend(29621);"}
rds_tools.rds_version
DB インスタンスの RDS for PostgreSQL エンジンバージョンを表示します。この関数は、インスタンスの設定ファイルからバージョン情報を読み取ります。rds_tools 拡張機能バージョン 1.1 以降で使用できます。
関数プロトタイプ
rds_tools.rds_version()
引数
なし。
Output
エンジンバージョンを含む文字列。
使用例
=> SELECT rds_tools.rds_version(); rds_version ------------- 18.1.R1 (1 row)
rds_tools.logical_seed_lsn
論理レプリケーションがソースインスタンスから分岐するポイントを表す論理シードログシーケンス番号 (LSN) を返します。この関数を使用して、論理レプリケーションのセットアップを管理し、レプリケーションの整合性ポイントを理解します。rds_tools 拡張機能バージョン 1.2 以降で使用できます。
関数プロトタイプ
rds_tools.logical_seed_lsn()
引数
なし。
Output
pg_lsn 値。
使用例
=> SELECT rds_tools.logical_seed_lsn(); logical_seed_lsn ------------------ 0/1677B68 (1 row)
rds_tools.db_instance_identifier
DB インスタンス識別子を表示します。この識別子は、DB インスタンスを作成するときに指定します。AWS サービスは、データベースを識別するために一貫してこの識別子を使用します。rds_tools 拡張機能バージョン 1.2 以降で使用できます。
関数プロトタイプ
rds_tools.db_instance_identifier()
引数
なし。
Output
DB インスタンス識別子を含む文字列。
使用例
=> SELECT rds_tools.db_instance_identifier(); db_instance_identifier ------------------------ my-postgres-instance (1 row)
rds_tools.dbi_resource_id
DB インスタンスの DB インスタンスリソース ID (DBI リソース ID) を表示します。DBI リソース ID は、AWS が DB インスタンスに対して生成する一意の変更不可能な識別子です。インスタンスの名前を変更しても、インスタンスの存続期間中、この識別子は変わりません。この値を使用して、データベースアクティビティを AWS CloudTrail ログやその他の AWS モニタリングサービスと関連付けます。この値は、DBInstance RDS API コマンドによって返される DbiResourceId フィールドと一致します。rds_tools 拡張機能バージョン 1.4 以降で使用できます。
関数プロトタイプ
rds_tools.dbi_resource_id()
引数
なし。
Output
DBI リソース ID を含む文字列。
使用例
=> SELECT rds_tools.dbi_resource_id(); dbi_resource_id ----------------------------------- db-ABC123DEF456GHI789JKL012MNO345P (1 row)
rds_tools.multi_az_db_cluster_source_dbi_resource_id
マルチ AZ DB クラスターデプロイのソースインスタンスの DBI リソース ID を表示します。この関数を使用して、マルチ AZ 設定のインスタンス間の関係を理解し、レプリケーションまたはフェイルオーバーのシナリオをトラブルシューティングします。rds_tools 拡張機能バージョン 1.4 以降で使用できます。
関数プロトタイプ
rds_tools.multi_az_db_cluster_source_dbi_resource_id()
引数
なし。
Output
ソース DBI リソース ID を含む文字列。インスタンスがマルチ AZ DB クラスターの一部でない場合、設定ファイルが存在しない場合、または設定に dbi_resource_id フィールドが存在しない場合は、NULL を返します。
使用例
=> SELECT rds_tools.multi_az_db_cluster_source_dbi_resource_id(); multi_az_db_cluster_source_dbi_resource_id -------------------------------------------- db-XYZ789ABC123DEF456GHI012JKL345MNO678P (1 row)
rds_tools.show_topology
RDS マルチ AZ クラスターのトポロジメタデータを表示します。これにより、クラスター内のすべてのインスタンスの接続情報が提供され、迅速なスイッチオーバーが可能になります。AWS Advanced JDBC ラッパードライバーなどのクライアントライブラリは、このセットを返す関数を使用して、RDS マルチ AZ クラスター内のすべてのインスタンスに直接接続します。ライターインスタンスのリソース ID を識別するには、この関数を rds_tools.multi_az_db_cluster_source_dbi_resource_id 関数と一緒に使用します。rds_tools 拡張機能バージョン 1.4 以降で使用できます。
関数プロトタイプ
rds_tools.show_topology([client_identifier])
引数
-
client_identifier(オプション) – トポロジをクエリするクライアントライブラリまたはプロキシの識別子。このパラメータはオプションですが、設定することを推奨します。Amazon RDS がトポロジをアクティブにクエリしているクライアントを追跡し、追加のクライアントをサポートするためのテレメトリも提供されるようになるからです。
Output
-
id– RDS マルチ AZ クラスター内の各インスタンスの DBI リソース ID。 -
endpoint– クラスター内の各ノードのエンドポイント。 -
port– RDS マルチ AZ クラスター内の各インスタンスのポート番号。 -
role– ライターやリーダーなど、クラスター内のノードのロール。 -
status- ノードのステータス。 -
version– トポロジレコードのバージョン。
使用例
=> SELECT id, endpoint, port, role FROM rds_tools.show_topology('my-jdbc-app'); id | endpoint | port | role -----------------+-----------------------------------------------------------+------+-------- db-IDENTIFIER-1 | somedb-instance-1.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | writer db-IDENTIFIER-2 | somedb-instance-2.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | reader db-IDENTIFIER-3 | somedb-instance-3.aaaaaaaaaaaa.us-west-2.rds.amazonaws.com | 5432 | reader (3 rows)
rds_tools.pg_ls_multixactdir
PostgreSQL でマルチトランザクションデータを保存する pg_multixact ディレクトリの内容を一覧表示します。このセットを返す関数を使用して、multixact の使用状況をモニタリングし、multixact 関連の問題をトラブルシューティングするとともに、データベースストレージパターンを把握できます。rds_tools 拡張機能バージョン 1.7 以降で使用できます。
関数プロトタイプ
rds_tools.pg_ls_multixactdir()
引数
なし。
Output
-
name– ファイルまたはディレクトリの名前。 -
size– バイト単位のサイズ。 -
modification– 最終変更タイムスタンプ。
使用例
=> SELECT * FROM rds_tools.pg_ls_multixactdir(); name | size | modification ---------------------------+------+------------------------ pg_multixact/members/ | 4096 | 2026-10-01 19:17:29+00 pg_multixact/members/0000 | 8192 | 2025-08-22 21:53:46+00 pg_multixact/offsets/ | 4096 | 2026-10-01 19:17:29+00 pg_multixact/offsets/0000 | 8192 | 2026-10-01 19:22:38+00 (4 rows)