メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Amazon RDS 上の PostgreSQL

Amazon RDS では、PostgreSQL の複数のバージョンを実行する DB インスタンスがサポートされています。DB インスタンス、DB スナップショット、ポイントインタイムの復元とバックアップを作成できます。PostgreSQL を実行する DB インスタンスは、マルチ AZ 配置、リードレプリカ (バージョン 9.3.5 以降)、プロビジョンド IOPS をサポートしており、VPC 内で作成できます。また、それらの DB インスタンスに SSL を使用して接続することもできます。

DB インスタンスを作成する前に、このガイドの「Amazon RDS のセットアップ」セクションの手順を完了してください。

標準的な SQL クライアントアプリケーションを使用して、クライアントコンピューターからインスタンスに対してコマンドを実行できます。たとえば、pgAdmin (PostgreSQL 用に普及しているオープンソースの管理および開発ツール) や psql (PostgreSQL インストールに含まれるコマンドラインユーティリティ) などのアプリケーションを使用できます。マネージド型サービスを提供するため、Amazon RDS では DB インスタンスへのホストアクセスは許可されません。また、上位の権限を必要とする特定のシステムプロシージャやシステムテーブルへのアクセスが制限されます。Amazon RDS では、標準的な SQL クライアントアプリケーションを使用した、DB インスタンス上のデータベースへのアクセスがサポートされています。Amazon RDS では、Telnet や Secure Shell (SSH) を使用した DB インスタンスへのダイレクトホストアクセスは許可されません。

Amazon RDS for PostgreSQL は、多くの業界標準に準拠しています。たとえば、Amazon RDS for PostgreSQL データベースを使用して、HIPAA 準拠のアプリケーションを構築し、AWS で実行される事業提携契約 (BAA) で保護されるべき医療情報 (PHI) を含む医療関連の情報を格納できます。Amazon RDS for PostgreSQL は、Federal Risk and Authorization Management Program (FedRAMP) のセキュリティ要件も満たしており、AWS GovCloud (米国) リージョン内の FedRAMP HIGH ベースラインにおいて FedRAMP Joint Authorization Board (JAB) Provisional Authority to Operate (P-ATO) に認定されています。サポートされるコンプライアンス標準の詳細については、「AWS クラウドコンプライアンス」を参照してください。

PostgreSQL データを DB インスタンスにインポートするには、「Amazon RDS 上の PostgreSQL にデータをインポートする」セクションの説明に従ってください。

Amazon RDS での PostgreSQL の一般的な管理タスク

以下に示しているのは、Amazon RDS PostgreSQL DB インスタンスで実行する一般的な管理タスクと、各タスクの関連ドキュメントへのリンクです。

タスク領域 関連資料

Amazon RDS を初めてセットアップして使う

DB インスタンスを作成する前に、前提条件をすべて満たす必要があります。たとえば、DB インスタンスが作成されると、アクセスを禁止するファイアウォールがデフォルトで設定されます。したがって、DB インスタンスにアクセスするために、正しい IP アドレスとネットワーク構成を備えたセキュリティグループを作成する必要があります。

Amazon RDS のセットアップ

Amazon RDS DB インスタンスを理解する

本稼働用に DB インスタンスを作成する場合、インスタンスクラス、ストレージタイプ、およびプロビジョンド IOPS が Amazon RDS でどのように機能するか理解する必要があります。

DB インスタンスクラス

Amazon RDS ストレージの種類

Amazon RDS Provisioned IOPS ストレージによるパフォーマンスの向上

サポートされている PostgreSQL バージョンの検索

Amazon RDS は、PostgreSQL の複数のバージョンをサポートします。

サポートされている PostgreSQL データベースのバージョン

高可用性およびフェイルオーバーサポートのセットアップ

本稼働 DB インスタンスは、マルチ AZ 配置を使用する必要があります。マルチ AZ 配置は、DB インスタンスの拡張された可用性、データ堅牢性、および耐障害性を提供します。

高可用性 (マルチ AZ)

Amazon Virtual Private Cloud (VPC) ネットワークについて

AWS アカウントにデフォルト VPC がある場合、DB インスタンスがデフォルト VPC 内に自動的に作成されます。アカウントにデフォルト VPC がない場合、DB インスタンスを VPC に作成する必要があるときは、DB インスタンスを作成する前に VPC とサブネットグループを作成する必要があります。

EC2-VPC または EC2-Classic のどちらのプラットフォームを使用するか判断する

VPC 内の Amazon RDS DB インスタンスの使用

Amazon RDS PostgreSQL にデータをインポートする

Amazon RDS の PostgreSQL DB インスタンスにデータをインポートするには、さまざまなツールを使用できます。

Amazon RDS 上の PostgreSQL にデータをインポートする

読み取り専用リードレプリカ (マスター/スタンバイ) のセットアップ

Amazon RDS の PostgreSQL は同じリージョンおよびマスターインスタンスとは別のリージョンの両方で、リードレプリカをサポートします。

PostgreSQL、MySQL、および MariaDB リードレプリカの使用

PostgreSQL リードレプリカ (バージョン 9.3.5 以降)

リージョン間でリードレプリカをレプリケート

セキュリティグループの理解

デフォルトでは、DB インスタンスが作成されると、アクセスを禁止するファイアウォールが設定されます。したがって、DB インスタンスにアクセスするために、正しい IP アドレスとネットワーク構成を備えたセキュリティグループを作成する必要があります。

一般的に、DB インスタンスが EC2-Classic プラットフォームにある場合は、DB セキュリティグループを作成する必要があります。DB インスタンスが EC2-VPC プラットフォームにある場合は、VPC セキュリティグループを作成する必要があります。

EC2-VPC または EC2-Classic のどちらのプラットフォームを使用するか判断する

Amazon RDS セキュリティグループ

パラメータグループおよび機能のセットアップ

DB インスタンスに特定のデータベースパラメータが必要になる場合は、DB インスタンスを作成する前にパラメータグループを作成する必要があります。

DB パラメータグループを使用する

PostgreSQL の一般的な DBA タスクの実行

DB インスタンスに特定のデータベースオプションが必要になる場合は、DB インスタンスを作成する前にオプショングループを作成する必要があります。

付録: PostgreSQL の一般的な DBA タスク

PostgreSQL DB インスタンスへの接続

セキュリティグループを作成し、それを DB インスタンスに関連付けると、pgadmin III などの標準的な SQL クライアントアプリケーションを使用して DB インスタンスに接続できます。

PostgreSQL データベースエンジンを実行する DB インスタンスへの接続

PostgreSQL DB インスタンスで SSL を使用する

DB インスタンスのバックアップと復元

バックアップが自動的に作成されるように DB インスタンスを設定したり、スナップショットを手動で作成したりできます。そうすることで後で、そのバックアップまたはスナップショットからインスタンスを復元できます。

Amazon RDS DB インスタンスのバックアップと復元

DB インスタンスのアクティビティとパフォーマンスのモニタリング

CloudWatch Amazon RDS メトリクス、イベント、および拡張モニタリングを使用することで、PostgreSQL DB インスタンスをモニタリングできます。

DB インスタンスのメトリクスの表示

Amazon RDS のイベントの表示

PostgreSQL データベースバージョンのアップグレード

PostgreSQL DB インスタンスのメジャーバージョンとマイナーバージョンの両方をアップグレードできます。

PostgreSQL DB インスタンスをアップグレードする

メジャーバージョンアップグレード

ログファイルの操作

PostgreSQL DB インスタンスのログファイルにアクセスできます。

PostgreSQL データベースのログファイル

PostgreSQL DB インスタンスに関するベストプラクティスの理解

Amazon RDS での PostgreSQL の使用に関するいくつかのベストプラクティスが見つかります。

PostgreSQL を使用するためのベストプラクティス

Amazon RDS PostgreSQL 計画に必要になる情報

Amazon RDS では、PostgreSQL の複数のエディションを実行する DB インスタンスがサポートされています。このセクションでは、Amazon RDS での PostgreSQL の操作方法について説明します。また、PostgreSQL DB インスタンスの制限も認識しておく必要があります。

DB インスタンスへの PostgreSQL データのインポートについては、「Amazon RDS 上の PostgreSQL にデータをインポートする」を参照してください。

rds_superuser ロールの使用

DB インスタンスを作成すると、作成したマスターユーザーシステムアカウントが rds_superuser ロールに割り当てられます。rds_superuser ロールは PostgreSQL のスーパーユーザーロール (ローカルインスタンスでは通常 postgres) に似ていますが、いくつかの制限があります。PostgreSQL のスーパーユーザーロールと同様に、rds_superuser ロールは、DB インスタンスに対して最大の権限を持っています。ユーザーが DB インスタンスに対して最大のアクセス権を必要としない場合は、ユーザーにこのロールを割り当てないでください。

rds_superuser ロールでは以下の操作を実行できます。

  • Amazon RDS で使用できる拡張機能の追加詳細については、「サポートされている PostgreSQL 機能」および PostgreSQL ドキュメントを参照してください

  • テーブルスペースを管理する (作成と削除も含む)。詳細については、PostgreSQL のドキュメントのこのセクションを参照してください。

  • pg_stat_activity コマンドを使用して、rds_superuser ロールが割り当てられていないすべてのユーザーを表示し、pg_terminate_backendpg_cancel_backend コマンドを使用して、それらのユーザーの接続を強制終了する。

  • rds_superuser ロール以外のすべてのロールに対してレプリケーション属性を付与する/取り消す。詳細については、PostgreSQL のドキュメントのこのセクションを参照してください。

サポートされている PostgreSQL データベースのバージョン

Amazon RDS は、以下の PostgreSQL バージョンをサポートしています。

Amazon RDS での PostgreSQL バージョン 9.6.3

PostgreSQL バージョン 9.6.3 には、いくつかの新機能およびバグ修正が含まれています。このバージョンは、以下の機能を備えています。

  • 拡張機能 pg_repack のバージョン 1.4.0 をサポートします。この拡張機能を使用して、テーブルやインデックスの膨張を取り除くことができます。Amazon RDS で pg_repack を使用する方法については、「pg_repack 拡張機能の使用」を参照してください。

  • 拡張機能 pgaudit バージョン 1.1.0 をサポートします。この拡張機能により、詳細セッションおよびオブジェクト監査ログ作成が提供されます。Amazon RDS で pgaudit を使用する方法については、「pgaudit 拡張機能の使用」を参照してください。

  • 論理デコードの出力プラグインである wal2json をサポートします。

  • auto_explain モジュールをサポートします。このモジュールを使用して、遅いステートメントの実行プランを自動的に記録できます。次の例では、Amazon RDS PostgreSQL セッションの中から auto_explain を使用する方法を示します。

    Copy
    LOAD '$libdir/plugins/auto_explain';

    auto_explain の使用の詳細については、PostgreSQL のドキュメントを参照してください。

Amazon RDS での PostgreSQL バージョン 9.6.2

PostgreSQL バージョン 9.6.2 には、いくつかの新機能およびバグ修正が含まれています。新しいバージョンには、次の拡張バージョンも含まれています。

  • PostGIS バージョン 2.3.2

  • pg_freespacemap バージョン 1.1 – 空きスペースマップ (FSM) を調べることができます。この拡張は、pg_freespace と呼ばれる関数の多重定義を提供します。関数は、特定のページ、または関連するすべてのページの空きスペースマップに記録された値を表示します。

  • pg_hint_plan バージョン 1.1.3 – SQL ステートメントの先頭で、ヒントの語句を使用して実行計画のコントロールを提供します。

  • log_fdw バージョン 1.0 – Amazon RDS からのこの拡張機能を使用すると、データベース内からデータベースエンジンログをロードし、クエリできます。詳細については、「log_fdw 拡張の使用」を参照してください。

  • このバージョンのリリースでは、DB パラメータグループの max_worker_processes パラメータを編集できるようになりました。

Amazon RDS の PostgreSQL バージョン 9.6.2 は、列挙値の変更もサポートします。詳細については、「PostgreSQL 用の ALTER ENUM」を参照してください。

9.6.2 に含まれる修正の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.6.1

PostgreSQL バージョン 9.6.1 には、いくつかの新機能および機能向上が含まれています。PostgreSQL 9.6.1 の修正と機能向上については、PostgreSQL のドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。PostgreSQL 9.6.1 用の Amazon RDS を使用した並列クエリおよびフレーズ検索の実行については、「AWS データベースブログ」を参照してください。

PostgreSQL バージョン 9.6.1 には次の変更が含まれています。

  • 並列クエリ実行: 大きな読み取り専用クエリの並列実行をサポートし、順次スキャン、ハッシュ結合、ネストループ、集計を並行して実行できます。デフォルトでは、並列クエリ実行は有効になっていません。並行クエリ実行を許可するには、パラメーター max_parallel_workers_per_gather に 0 より大きい値を設定します。

  • 更新された postgres_fdw の拡張機能: リモート JOIN、SORT、UPDATE、DELETE オペレーションをサポートします。

  • PL/v8 の更新: PL/v8 言語のバージョン 1.5.3 を提供します。

  • PostGIS バージョンの更新: 次をサポートします。POSTGIS="2.3.0 r15146" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel 4.9.2、2015 年 9 月 8 日 " GDAL="GDAL 2.1.1、2016 年 7 月 7 日リリース " LIBXML="2.9.1" LIBJSON="0.12" RASTER

  • バキュームの改善: バキュームの停止操作中、不要なページをスキャンを回避します。

  • フレーズの全文検索サポート: 新しい演算子 <-> と <N> を使用して、tsquery 入力でフレーズ検索クエリを指定する機能をサポートしています。

  • 2 つの新しい拡張機能がサポートされています。

    • Bloom フィルタに基づくインデックスアクセス方法である bloom

    • テーブルのマップの可視性とページレベルの可視性情報を確認する方法を提供する pg_visibility

  • バージョン 9.6.2 のリリースにより、PostgreSQL バージョン 9.6.1 DB パラメータグループで max_worker_processes パラメータを編集できるようになりました。

AWS マネジメントコンソール、AWS CLI、または RDS API を使用して新しい PostgreSQL 9.6.1 データベースのインスタンスを作成できます。また、メジャーバージョンアップグレードを使用した、既存の PostgreSQL 9.5 インスタンスをアップグレードすることもできます。DB インスタンスをバージョン 9.3 または 9.4 から 9.6 へアップグレードする場合は、最初に次の主要バージョンにポイントアンドクリックのアップグレードを実行する必要があります。各アップグレード操作で、DB インスタンスが短時間使用できなくなります。

Amazon RDS での PostgreSQL バージョン 9.5.7

PostgreSQL バージョン 9.5.7 には、いくつかの新機能およびバグ修正が含まれています。このバージョンは、以下の機能を備えています。

  • 拡張機能 pgaudit バージョン 1.0.5 をサポートします。この拡張機能により、詳細セッションおよびオブジェクト監査ログ作成が提供されます。Amazon RDS で pgaudit を使用する方法については、「pgaudit 拡張機能の使用」を参照してください。

  • 論理デコードの出力プラグインである wal2json をサポートします。

  • auto_explain モジュールをサポートします。このモジュールを使用して、遅いステートメントの実行プランを自動的に記録できます。次の例では、Amazon RDS PostgreSQL セッションの中から auto_explain を使用する方法を示します。

    Copy
    LOAD '$libdir/plugins/auto_explain';

    auto_explain の使用の詳細については、PostgreSQL のドキュメントを参照してください。

Amazon RDS での PostgreSQL バージョン 9.5.6

PostgreSQL バージョン 9.5.6 には、いくつかの新機能およびバグ修正が含まれています。新しいバージョンには、次の拡張バージョンも含まれています。

  • PostGIS バージョン 2.2.5

  • pg_freespacemap バージョン 1.1 – 空きスペースマップ (FSM) を調べることができます。この拡張は、pg_freespace と呼ばれる関数の多重定義を提供します。この関数は、特定のページ、または関連するすべてのページの空きスペースマップに記録された値を表示します。

  • pg_hint_plan バージョン 1.1.3 – SQL ステートメントの先頭で、ヒントの語句を使用して実行計画のコントロールを提供します。

Amazon RDS の PostgreSQL バージョン 9.5.6 は、列挙値の変更もサポートします。詳細については、「PostgreSQL 用の ALTER ENUM」を参照してください。

9.5.6 に含まれる修正の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.5.4

PostgreSQL バージョン 9.5.4 には、以前のバージョンで見つかった問題に対するいくつかの修正が含まれています。9.5.4 に含まれる修正の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

PostgreSQL バージョン 9.4 から、PostgreSQL は論理レプリケーションのデコードを使用した WAL 変更のストリーミングをサポートしています。Amazon RDS は、PostgreSQL バージョン 9.4.9 以降および 9.5.4 以降の論理レプリケーションをサポートしています。Amazon RDS での PostgreSQL の論理レプリケーションの詳細については、「Amazon RDS の PostgreSQL の論理レプリケーション」を参照してください。

Amazon RDS の PostgreSQL バージョン 9.5.4 から、コマンド「ALTER USER WITH BYPASSRLS」がサポートされます。

PostgreSQL バージョン 9.4.9 以降とバージョン 9.5.4 以降はイベントトリガーをサポートし、Amazon RDS はこれらのバージョンのトリガーもサポートしています。マスターユーザーアカウントを使用して、イベントトリガーを作成、変更、名前変更、および削除できます。イベントトリガーは DB インスタンスレベルであるため、インスタンスのすべてのデータベースに適用できます。Amazon RDS での PostgreSQL イベントトリガーの詳細については、「Amazon RDS での PostgreSQL のイベントトリガー」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.5.2

PostgreSQL バージョン 9.5.2 には、以前のバージョンで見つかった問題に対するいくつかの修正が含まれています。9.5.2 の機能の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

PostgreSQL バージョン 9.5.2 は、前の世代のインスタンスクラス db.t1、db.m1、db.m2 をサポートしていません。PostgreSQL バージョン 9.4~9.5.2 を実行している DB インスタンスを、これらのいずれかのインスタンスクラスにアップグレードする必要がある場合は、コンピューティングをスケールする必要があります。そのためには、PostgreSQL バージョン 9.4~9.5.2 を実行している DB インスタンスをアップグレードする前に、同等の現行世代 db.t2 または db.m3 インスタンスクラスが必要です。DB インスタンスクラスの詳細については、「DB インスタンスクラス」を参照してください。

ネイティブ PostgreSQL バージョン 9.5.2 はコマンド「ALTER USER WITH BYPASSRLS」を導入しました。

このリリースには、次のような以前のバージョンでの更新が含まれています。

  • CVE-2016-2193: 同じセッションでクエリ計画が ROLE 複数回再利用する可能性のある問題を修正します。クエリ計画の再利用は、クエリが正しくない Row Level Security (RLS) ポリシーのセットを使用する原因となります。

  • CVE-2016-3065: BRIN インデックスページと pageinspect を使用すると発生する、サーバーがクラッシュするバグを修正します。攻撃者はサーバーのメモリを数バイト公開できる可能性があるため、このクラッシュはセキュリティ上の問題として扱われます。

RDS PostgreSQL 9.5 の主な拡張機能には以下が含まれます。

  • UPSERT: 制約が競合する INSERT を UPDATE に変更するか無視することが可能

  • GROUP BY の分析機能 GROUPING SETS、CUBE、ROLLUP の追加

  • 行レベルのセキュリティ管理の追加

  • 論理レプリケーション中の個々の変更元を特定するためのメソッドを含む、レプリケーションの進捗を追跡するためのメカニズムを作成します。

  • Block Range Index (BRIN) の追加

  • ソート機能の実質パフォーマンスの機能強化を追加

  • マルチ CPU マシンの実質パフォーマンスの機能強化を追加

  • PostGIS 2.2.2 - この最新バージョンの PostGIS を使用するには、バージョン 9.5.2 にアップグレードした後、ALTER EXTENSION UPDATE ステートメントを使用して更新します。

    ALTER EXTENSION POSTGIS UPDATE TO '2.2.2'

  • rds_superuser アカウントが pg_stat_activity 内の autovacuum セッションを表示できるようすることで、autovacuum セッションの可視性が向上しました。たとえば、コマンドの実行をブロックしている autovacuum セッション、あるいは手動で発行される vacuum コマンドよりも実行スピードが遅い autovacuum セッションを特定して終了することもできます。

RDS PostgreSQL バージョン 9.5.2 には以下の新しい拡張機能が含まれます。

  • address_standardizer – 入力アドレスを取り、table、helper lex table、および gaz table に保管されているルールのセットに基づいて正規化します。

  • hstore_plperl – PL/Perl 向けに hstore 型の変換を行います。

  • tsm_system_rows – テーブルサンプリングメソッド SYSTEM_ROWS を提供します。これは SELECT コマンドの TABLESAMPLE 句で使用できます。

  • tsm_system_time – テーブルサンプリングメソッド SYSTEM_TIME を提供します。これは SELECT コマンドの TABLESAMPLE 句で使用できます。

Amazon RDS での PostgreSQL バージョン 9.4.12

PostgreSQL バージョン 9.4.12 には、以前のバージョンで見つかった問題に対するいくつかの修正が含まれています。

9.4.12 に含まれる修正の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.4.11

PostgreSQL バージョン 9.4.11 には、以前のバージョンで見つかった問題に対するいくつかの修正が含まれています。

9.4.11 に含まれる修正の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

PostgreSQL バージョン 9.4 から、PostgreSQL は論理レプリケーションのデコードを使用した WAL 変更のストリーミングをサポートしています。Amazon RDS は、PostgreSQL バージョン 9.4.9 以降および 9.5.4 以降の論理レプリケーションをサポートしています。Amazon RDS での PostgreSQL の論理レプリケーションの詳細については、「Amazon RDS の PostgreSQL の論理レプリケーション」を参照してください。

PostgreSQL バージョン 9.4.9 以降とバージョン 9.5.4 以降はイベントトリガーをサポートし、Amazon RDS はこれらのバージョンのトリガーもサポートしています。マスターユーザーアカウントを使用して、イベントトリガーを作成、変更、名前変更、および削除できます。イベントトリガーは DB インスタンスレベルであるため、インスタンスのすべてのデータベースに適用できます。Amazon RDS での PostgreSQL イベントトリガーの詳細については、「Amazon RDS での PostgreSQL のイベントトリガー」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.4.9

PostgreSQL バージョン 9.4.9 には、以前のバージョンで見つかった問題に対するいくつかの修正が含まれています。9.4.9 に含まれる修正の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

PostgreSQL バージョン 9.4 から、PostgreSQL は論理レプリケーションのデコードを使用した WAL 変更のストリーミングをサポートしています。Amazon RDS は、PostgreSQL バージョン 9.4.9 以降および 9.5.4 以降の論理レプリケーションをサポートしています。Amazon RDS での PostgreSQL の論理レプリケーションの詳細については、「Amazon RDS の PostgreSQL の論理レプリケーション」を参照してください。

PostgreSQL バージョン 9.4.9 以降とバージョン 9.5.4 以降はイベントトリガーをサポートし、Amazon RDS はこれらのバージョンのトリガーもサポートしています。マスターユーザーアカウントを使用して、イベントトリガーを作成、変更、名前変更、および削除できます。イベントトリガーは DB インスタンスレベルであるため、インスタンスのすべてのデータベースに適用できます。Amazon RDS での PostgreSQL イベントトリガーの詳細については、「Amazon RDS での PostgreSQL のイベントトリガー」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.4.7

PostgreSQL バージョン 9.4.7 には、以前のバージョンで見つかった問題に対するいくつかの修正が含まれています。9.4.7 に含まれる修正の詳細については、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

PostgreSQL バージョン 9.4.7 では、rds_superuser アカウントが pg_stat_activity 内の autovacuum セッションを表示できるようにしたことで、autovacuum セッションの可視性が向上しています。たとえば、コマンドの実行をブロックしている autovacuum セッション、あるいは手動で発行される vacuum コマンドよりも実行スピードが遅い autovacuum セッションを特定して終了することもできます。

Amazon RDS での PostgreSQL バージョン 9.3.17

PostgreSQL バージョン 9.3.17 には、以前のバージョンで見つかったバグに対するいくつかの修正が含まれています。このバージョンには、9.3.16 と同じ拡張コンポーネントが含まれています。バージョン 9.3.17 での修正のリストについては、PostgreSQl のドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.3.16

PostgreSQL バージョン 9.3.16 には、以前のバージョンで見つかったバグに対するいくつかの修正が含まれています。このバージョンには、9.3.14 と同じ拡張コンポーネントが含まれています。バージョン 9.3.16 での修正のリストについては、PostgreSQl のドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.3.14

PostgreSQL バージョン 9.3.14 には、以前のバージョンで見つかったバグに対するいくつかの修正が含まれています。バージョン 9.3.14 の修正のリストについては、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

Amazon RDS での PostgreSQL バージョン 9.3.12

PostgreSQL バージョン 9.3.12 には、以前のバージョンで見つかったバグに対するいくつかの修正が含まれています。バージョン 9.3.12 の修正のリストについては、PostgreSQL ドキュメントを参照してください。PostgreSQL DB インスタンスのエンジンバージョンをアップグレードする方法については、「PostgreSQL DB インスタンスをアップグレードする」を参照してください。

PostgreSQL バージョン 9.3.12 では、rds_superuser アカウントが pg_stat_activity 内の autovacuum セッションを表示できるようにしたことで、autovacuum セッションの可視性が向上しています。たとえば、コマンドの実行をブロックしている autovacuum セッション、あるいは手動で発行される vacuum コマンドよりも実行スピードが遅い autovacuum セッションを特定して終了することもできます。

サポートされている PostgreSQL の機能と拡張機能

Amazon RDS は、PostgreSQL の最も一般的な拡張機能と機能の多くをサポートします。

Amazon RDS でサポートされる PostgreSQL の拡張機能

PostgreSQL は、多くの PostgreSQL 拡張をサポートします。以降のセクションでは、主要な PostgreSQL バージョンに対して Amazon RDS でサポートされる拡張を示します。

また、その PostgreSQL バージョンのデフォルトの DB パラメータグループで Amazon RDS によってサポートされる拡張のリストも示します。以下の例のように、rds.extensions パラメータを示すことで、psql を使用して拡張の最新のリストを表示できます。

注記

マイナーバージョンのリリースで追加されたパラメータは、rds.extensions パラメータを psql で使用する場合に不正確に表示されることがあります。

Copy
SHOW rds.extensions;
Amazon RDS でサポートされる PostgreSQL バージョン 9.3.x の拡張

次の表は、現在 Amazon RDS の PostgreSQL でサポートされている PostgreSQL バージョン 9.3.x の PostgreSQL 拡張を示しています。「N/A」は、拡張が PostgreSQL バージョンでは使用できないことを示します。PostgreSQL の拡張機能の詳細については、「拡張機能への関連オブジェクトのパッケージ化」を参照してください。

拡張子 9.3.12 9.3.14 9.3.16
address_standardizer 該当なし 該当なし 該当なし
address_standardizer_data_us 該当なし 該当なし 該当なし
ブルーム 該当なし 該当なし 該当なし
btree_gin 1.0 1.0 1.0
btree_gist 1.0 1.0 1.0
chkpass 1.0 1.0 1.0
citext 1.0 1.0 1.0
cube 1.0 1.0 1.0
dblink 1.1 1.1 1.1
dict_int 1.0 1.0 1.0
dict_xsyn 1.0 1.0 1.0
earthdistance 1.0 1.0 1.0
fuzzystrmatch 1.0 1.0 1.0
hstore 1.2 1.2 1.2
hstore_plperl 該当なし 該当なし 該当なし
intagg 1.0 1.0 1.0
intarray 1.0 1.0 1.0
ip4r 該当なし 該当なし 該当なし
isn 1.0 1.0 1.0
log_fdw -「log_fdw 拡張の使用」を参照してください。 該当なし 該当なし 該当なし
ltree 1.0 1.0 1.0
pg_buffercache 該当なし 該当なし 該当なし
pg_freespacemap 該当なし 該当なし 該当なし
pg_hint_plan 該当なし 該当なし 該当なし
pg_prewarm 該当なし 該当なし 該当なし
pg_stat_statements 1.1 1.1 1.1
pg_trgm 1.1 1.1 1.1
pg_visibility 該当なし 該当なし 該当なし
pgcrypto 1.0 1.0 1.0
pgrowlocks 1.1 1.1 1.1
pgstattuple 該当なし 該当なし 該当なし
plcoffee 1.4.4 1.4.4 1.4.4
plls 1.4.4 1.4.4 1.4.4
plperl 1.0 1.0 1.0
plpgsql 1.0 1.0 1.0
pltcl 1.0 1.0 1.0
plv8 1.4.4 1.4.4 1.4.4
PostGIS 2.1.8 2.1.8 2.1.8
postgis_tiger_geocoder 2.1.8 2.1.8 2.1.8
postgis_topology 2.1.8 2.1.8 2.1.8
postgres_fdw 1.0 1.0 1.0
sslinfo 1.0 1.0 1.0
tablefunc 1.0 1.0 1.0
test_parser 1.0 1.0 1.0
tsearch2 1.0 1.0 1.0
tsm_system_rows 該当なし 該当なし 該当なし
tsm_system_time 該当なし 該当なし 該当なし
unaccent 1.0 1.0 1.0
uuid-ossp 1.0 1.0 1.0
Amazon RDS でサポートされる PostgreSQL バージョン 9.4.x の拡張

次の表は、現在 Amazon RDS の PostgreSQL でサポートされている PostgreSQL バージョン 9.4.x の PostgreSQL 拡張を示しています。「N/A」は、拡張が PostgreSQL バージョンでは使用できないことを示します。PostgreSQL の拡張機能の詳細については、「拡張機能への関連オブジェクトのパッケージ化」を参照してください。

拡張子 9.4.7 9.4.9 9.4.11
address_standardizer 該当なし 該当なし 該当なし
address_standardizer_data_us 該当なし 該当なし 該当なし
ブルーム 該当なし 該当なし 該当なし
btree_gin 1.0 1.0 1.0
btree_gist 1.0 1.0 1.0
chkpass 1.0 1.0 1.0
citext 1.0 1.0 1.0
cube 1.0 1.0 1.0
dblink 1.1 1.1 1.1
dict_int 1.0 1.0 1.0
dict_xsyn 1.0 1.0 1.0
earthdistance 1.0 1.0 1.0
fuzzystrmatch 1.0 1.0 1.0
hstore 1.3 1.3 1.3
hstore_plperl 該当なし 該当なし 該当なし
intagg 1.0 1.0 1.0
intarray 1.0 1.0 1.0
ip4r 2.0 2.0 2.0
isn 1.0 1.0 1.0
log_fdw -「log_fdw 拡張の使用」を参照してください。 該当なし 該当なし 該当なし
ltree 1.0 1.0 1.0
pg_buffercache 1.0 1.0 1.0
pg_freespacemap 該当なし 該当なし 該当なし
pg_hint_plan 該当なし 該当なし 該当なし
pg_prewarm 1.0 1.0 1.0
pg_stat_statements 1.2 1.2 1.2
pg_trgm 1.1 1.1 1.1
pg_visibility 該当なし 該当なし 該当なし
pgcrypto 1.1 1.1 1.1
pgrowlocks 1.1 1.1 1.1
pgstattuple 1.2 1.2 1.2
plcoffee 1.4.4 1.4.4 1.4.4
plls 1.4.4 1.4.4 1.4.4
plperl 1.0 1.0 1.0
plpgsql 1.0 1.0 1.0
pltcl 1.0 1.0 1.0
plv8 1.4.4 1.4.4 1.4.4
PostGIS 2.1.8 2.1.8 2.1.8
postgis_tiger_geocoder 2.1.8 2.1.8 2.1.8
postgis_topology 2.1.8 2.1.8 2.1.8
postgres_fdw 1.0 1.0 1.0
sslinfo 1.0 1.0 1.0
tablefunc 1.0 1.0 1.0
test_parser 1.0 1.0 1.0
tsearch2 1.0 1.0 1.0
tsm_system_rows 該当なし 該当なし 該当なし
tsm_system_time 該当なし 該当なし 該当なし
unaccent 1.0 1.0 1.0
uuid-ossp 1.0 1.0 1.0
Amazon RDS でサポートされる PostgreSQL バージョン 9.5.x の拡張

次の表は、現在 Amazon RDS の PostgreSQL でサポートされている PostgreSQL バージョン 9.5.x の PostgreSQL 拡張を示しています。「N/A」は、拡張が PostgreSQL バージョンでは使用できないことを示します。PostgreSQL の拡張機能の詳細については、「拡張機能への関連オブジェクトのパッケージ化」を参照してください。

拡張子 9.5.2 9.5.4 9.5.6
address_standardizer 2.2.2 2.2.2 2.2.5
address_standardizer_data_us 2.2.2 2.2.2 2.2.5
ブルーム 該当なし 該当なし 該当なし
btree_gin 1.0 1.0 1.0
btree_gist 1.1 1.1 1.1
chkpass 1.0 1.0 1.0
citext 1.1 1.1 1.1
cube 1.0 1.0 1.0
dblink 1.1 1.1 1.1
dict_int 1.0 1.0 1.0
dict_xsyn 1.0 1.0 1.0
earthdistance 1.0 1.0 1.0
fuzzystrmatch 1.0 1.0 1.0
hstore 1.3 1.3 1.3
hstore_plperl 1.0 1.0 1.0
intagg 1.0 1.0 1.0
intarray 1.0 1.0 1.0
ip4r 2.0 2.0 2.0
isn 1.0 1.0 1.0
log_fdw -「log_fdw 拡張の使用」を参照してください。 該当なし 該当なし 該当なし
ltree 1.0 1.0 1.0
pg_buffercache 1.1 1.1 1.1
pg_freespacemap 該当なし 該当なし 1.0
pg_hint_plan 該当なし 該当なし 1.1.3
pg_prewarm 1.0 1.0 1.0
pg_stat_statements 1.3 1.3 1.3
pg_trgm 1.1 1.1 1.1
pg_visibility 該当なし 該当なし 該当なし
pgcrypto 1.2 1.2 1.2
pgrowlocks 1.1 1.1 1.1
pgstattuple 1.3 1.3 1.3
plcoffee 1.4.4 1.4.4 1.4.4
plls 1.4.4 1.4.4 1.4.4
plperl 1.0 1.0 1.0
plpgsql 1.0 1.0 1.0
pltcl 1.0 1.0 1.0
plv8 1.4.4 1.4.4 1.4.4
PostGIS 2.2.2 2.2.2 2.2.5
postgis_tiger_geocoder 2.2.2 2.2.2 2.2.5
postgis_topology 2.2.2 2.2.2 2.2.5
postgres_fdw 1.0 1.0 1.0
sslinfo 1.0 1.0 1.0
tablefunc 1.0 1.0 1.0
test_parser 1.0 1.0 1.0
tsearch2 1.0 1.0 1.0
tsm_system_rows 該当なし 該当なし 1.0
tsm_system_time 該当なし 該当なし 1.0
unaccent 1.0 1.0 1.0
uuid-ossp 1.0 1.0 1.0
Amazon RDS でサポートされる PostgreSQL バージョン 9.6.x の拡張

次の表は、現在 Amazon RDS の PostgreSQL でサポートされている PostgreSQL バージョン 9.6.x の PostgreSQL 拡張を示しています。「N/A」は、拡張が PostgreSQL バージョンでは使用できないことを示します。PostgreSQL の拡張機能の詳細については、「拡張機能への関連オブジェクトのパッケージ化」を参照してください。

拡張子 9.6.1 9.6.2
address_standardizer 2.3.0 2.3.2
address_standardizer_data_us 2.3.0 2.3.2
ブルーム 1.0 1.0
btree_gin 1.0 1.0
btree_gist 1.2 1.2
chkpass 1.0 1.0
citext 1.3 1.3
cube 1.2 1.2
dblink 1.2 1.2
dict_int 1.0 1.0
dict_xsyn 1.0 1.0
earthdistance 1.1 1.1
fuzzystrmatch 1.1 1.1
hstore 1.4 1.4
hstore_plperl 1.0 1.0
intagg 1.1 1.1
intarray 1.2 1.2
ip4r 2.0 2.0
isn 1.1 1.1
log_fdw -「log_fdw 拡張の使用」を参照してください。 該当なし 1.0
ltree 1.1 1.1
pg_buffercache 1.2 1.2
pg_freespacemap 該当なし 1.1
pg_hint_plan 該当なし 1.1.3
pg_prewarm 1.1 1.1
pg_stat_statements 1.4 1.4
pg_trgm 1.3 1.3
pg_visibility 1.1 1.1
pgcrypto 1.3 1.3
pgrowlocks 1.2 1.2
pgstattuple 1.4 1.4
plcoffee 1.5.3 1.5.3
plls 1.5.3 1.5.3
plperl 1.0 1.0
plpgsql 1.0 1.0
pltcl 1.0 1.0
plv8 1.5.3 1.5.3
PostGIS 2.3.0 2.3.2
postgis_tiger_geocoder 2.3.0 2.3.2
postgis_topology 2.3.0 2.3.2
postgres_fdw 1.0 1.0
sslinfo 1.2 1.2
tablefunc 1.0 1.0
test_parser 1.0 1.0
tsearch2 1.0 1.0
tsm_system_rows 1.0 1.0
tsm_system_time 1.0 1.0
unaccent 1.1 1.1
uuid-ossp 1.1 1.1
Amazon RDS での PostGIS 用の PostgreSQL の拡張サポート

次の表は、Amazon RDS PostgreSQL のバージョンに付属している PostGIS コンポーネントのバージョンを示しています。

Version PostGIS GEOS GDAL PROJ
9.3.12 2.1.8 r13780 3.5.0-CAPI-1.9.0 r4084

GDAL 1.11.4、2016 年 1 月 25 日リリース

Rel. 4.9.2、2015 年 9 月 8 日

9.3.14 2.1.8 r13780 3.5.0-CAPI-1.9.0 r4084

GDAL 1.11.5、2016 年 7 月 1 日リリース

Rel. 4.9.2、2015 年 9 月 8 日

9.3.16 2.1.8 r13780 3.5.0-CAPI-1.9.0 r4084

GDAL 1.11.5、2016 年 7 月 1 日リリース

Rel. 4.9.2、2015 年 9 月 8 日

9.4.7

2.1.8 r13780

3.5.0-CAPI-1.9.0 r4084

GDAL 1.11.4、2016 年 1 月 25 日リリース

Rel. 4.9.2、2015 年 9 月 8 日
9.4.9

2.1.8 r13780

3.5.0-CAPI-1.9.0 r4084

GDAL 1.11.5、2016 年 7 月 1 日リリース

Rel. 4.9.2、2015 年 9 月 8 日
9.4.11

2.1.8 r13780

3.5.0-CAPI-1.9.0 r4084

GDAL 1.11.5、2016 年 7 月 1 日リリース

Rel. 4.9.2、2015 年 9 月 8 日
9.5.2

2.2.2 r14797

3.5.0-CAPI-1.9.0 r4084

GDAL 2.0.2、2016 年 1 月 26 日リリース

Rel. 4.9.2、2015 年 9 月 8 日
9.5.4

2.2.2 r14797

3.5.0-CAPI-1.9.0 r4084

GDAL 2.0.3、2016 年 7 月 1 日リリース

Rel. 4.9.2、2015 年 9 月 8 日
9.5.6

2.2.5 r15298

3.5.1-CAPI-1.9.1 r4246

GDAL 2.0.3、2016 年 7 月 1 日リリース

Rel. 4.9.3、2016 年 8 月 15 日

9.6.1

2.3.0 r15146

3.5.0-CAPI-1.9.0 r4084

GDAL 2.1.1、2016 年 7 月 7 日リリース

Rel. 4.9.2、2015 年 9 月 8 日
9.6.2

2.3.2 r15302

3.5.1-CAPI-1.9.1 r4246

GDAL 2.1.3、2017 年 1 月 20 日リリース

Rel. 4.9.3、2016 年 8 月 15 日

PostGIS 拡張を使用する前に、次のコマンドを実行して PostGIS 拡張を作成する必要があります。

Copy
CREATE EXTENSION POSTGIS;
log_fdw 拡張の使用

log_fdw は、Amazon RDS for PostgreSQL バージョン 9.6.2 以降用の新しい拡張です。これにより、SQL インターフェイスを使用してデータベースエンジンログにアクセスできます。RDS でデフォルトで生成される stderr ログファイルの表示に加えて、CSV ログを表示 (log_destination パラメータを csvlog に設定) し、複数の列にデータが正確に分割された外部テーブルを構築できます。

この拡張では、データベースログ用の外部テーブルの作成を容易にする 2 つの新しい関数が導入されました。

  • list_postgres_log_files() - データベースログディレクトリのファイルとファイルサイズ (バイト単位) を一覧表示します。

  • create_foreign_table_for_log_file(table_name text, server_name text, log_file_name text) - 現在のデータベースで指定されたファイルの外部テーブルを構築します。

log_fdw によって作成されたすべての関数は、rds_superuser によって所有されます。rds_superuser ロールのメンバーは、これらの関数へのアクセス権限を他のデータベースユーザーに付与することができます。

次の例は log_fdw 拡張の使用方法を示しています。

log_fdw 拡張を使用するには

  1. log_fdw 拡張を入手します。

    Copy
    postgres=> CREATE EXTENSION log_fdw; CREATE EXTENSION
  2. 外部データラッパーとしてログサーバーを作成します。

    Copy
    postgres=> CREATE SERVER log_server FOREIGN DATA WRAPPER log_fdw; CREATE SERVER
  3. ログファイルのリストからすべてを選択します。

    Copy
    postgres=> SELECT * from list_postgres_log_files() order by 1;

    レスポンスの例を次に示します。

    Copy
    file_name | file_size_bytes ----------------------------------+----------------- postgresql.log.2016-08-09-22.csv | 1111 postgresql.log.2016-08-09-23.csv | 1172 postgresql.log.2016-08-10-00.csv | 1744 postgresql.log.2016-08-10-01.csv | 1102 (4 rows)
  4. 非 CSV ファイルの 1 つの 'log_entry' 列でテーブルを作成します

    Copy
    postgres=> SELECT create_foreign_table_for_log_file('my_postgres_error_log', 'log_server', 'postgresql.log.2016-08-09-22.csv');

    レスポンスの例を次に示します。

    Copy
    ----------------------------------- (1 row)
  5. ログファイルのサンプルを選択します。次のコードは、ログの時間とエラーメッセージの説明を取得します。

    Copy
    postgres=> SELECT log_time, message from my_postgres_error_log order by 1;

    レスポンスの例を次に示します。

    Copy
    log_time | message ----------------------------------+--------------------------------------------------------------------------- Tue Aug 09 15:45:18.172 2016 PDT | ending log output to stderr Tue Aug 09 15:45:18.175 2016 PDT | database system was interrupted; last known up at 2016-08-09 22:43:34 UTC Tue Aug 09 15:45:18.223 2016 PDT | checkpoint record is at 0/90002E0 Tue Aug 09 15:45:18.223 2016 PDT | redo record is at 0/90002A8; shutdown FALSE Tue Aug 09 15:45:18.223 2016 PDT | next transaction ID: 0/1879; next OID: 24578 Tue Aug 09 15:45:18.223 2016 PDT | next MultiXactId: 1; next MultiXactOffset: 0 Tue Aug 09 15:45:18.223 2016 PDT | oldest unfrozen transaction ID: 1822, in database 1 (7 rows)

サポートされている PostgreSQL 機能

Amazon RDS は、PostgreSQL の最も一般的な機能の多くをサポートします。具体的には次のとおりです。

Amazon RDS の PostgreSQL の論理レプリケーション

PostgreSQL バージョン 9.4 から、PostgreSQL は論理レプリケーションスロットを使用した WAL 変更のストリーミングをサポートしています。Amazon RDS は、PostgreSQL DB インスタンスバージョン 9.4.9 以降および 9.5.4 以降の論理レプリケーションをサポートしています。論理レプリケーションを使用すると、インスタンスで論理レプリケーションスロットをセットアップし、それらのスロットを通じてデータベースの変更を pg_recvlogical などのクライアントにストリーミングできます。論理スロットはデータベースレベルで作成され、1 つのデータベースへのレプリケーション接続がサポートされます。

Amazon RDS での PostgreSQL 論理レプリケーションは新しいパラメータ、新しいレプリケーション接続タイプ、および新しいセキュリティロールによって有効になります。レプリケーションのクライアントは、PostgreSQL DB インスタンスのデータベースにレプリケーション接続を確立できる任意のクライアントとすることができます。

PostgreSQL の論理レプリケーションのための最も一般的なクライアントは、AWS Database Migration Service、または AWS EC2 インスタンスのカスタム管理されたホストです。論理レプリケーションスロットには、ストリームのレシーバーに関する情報はなく、ターゲットをレプリカデータベースとする必要はありません。論理レプリケーションスロットをセットアップし、スロットから読み取りを行わない場合、データは DB インスタンスのストレージに書き込まれ、インスタンスストレージがすぐにいっぱいになる可能性があります。

PostgreSQL と論理レプリケーションの使用の詳細については、PostgreSQL のドキュメントを参照してください。[https://www.postgresql.org/docs/current/static/logicaldecoding-example.html]

Amazon RDS for PostgreSQL DB インスタンスで論理レプリケーションを有効にするには、以下を実行する必要があります。

  • Amazon RDS の PostgreSQL データベース用に論理レプリケーションを開始する AWS ユーザーアカウントには、rds_superuser ロールおよび rds_replication ロールが必要です。rds_replication ロールは、論理スロットを管理し、論理スロットを使用してデータをストリーミングするアクセス権限を付与します。

  • rds.logical_replication パラメータを 1 に設定します。これは、有効にするには再起動を必要とする静的なパラメータです。このパラメータの適用の一部として、wal_levelmax_wal_sendersmax_replication_slotsmax_connections パラメータを設定します。これらのパラメータによって WAL の生成が増える可能性があるため、rds.logical_replication パラメータを設定するのは、論理スロットを使用している場合のみにする必要があります。

  • 以下で説明するように論理レプリケーションスロットを作成します。このプロセスでは、復号プラグインを指定する必要があります。現在、PostgreSQL に標準で装備されている 'test_decoding' 出力プラグインがサポートされています。

論理レプリケーションスロットの操作

SQL コマンドを使用して、論理スロットを操作できます。たとえば、次のコマンドは、デフォルトの PostgreSQL 出力プラグイン test_decoding を使用して、test_slot という論理スロットを作成します。

Copy
SELECT * FROM pg_create_logical_replication_slot('test_slot', 'test_decoding');

出力は次の例のようになります:

Copy
slot_name | xlog_position -----------------+--------------- regression_slot | 0/16B1970 (1 row)

論理スロットをリスト表示するには、次のコマンドを使用します。

Copy
SELECT * FROM pg_replication_slots;

論理スロットを削除するには、次のコマンドを使用します。

Copy
SELECT pg_drop_replication_slot('test_slot');

出力は次の例のようになります:

Copy
pg_drop_replication_slot ----------------------- (1 row)

論理レプリケーションスロットを操作するその他の例については、PostgreSQL ドキュメントの「Logical Decoding Examples」を参照してください。

論理レプリケーションスロットの作成すると、ストリーミングを開始できます。次の例では、PostgreSQL ディストリビューションに含まれているプログラム pg_recvlogical を使用して、ストリーミングレプリケーションプロトコル経由で論理デコードを制御する方法を示します。このためには、レプリケーション接続を許可するようクライアント認証が設定されている必要があります。

Copy
pg_recvlogical -d postgres --slot test_slot -U master --host sg-postgresql1.c6c8mresaghgv0.us-west-2.rds.amazonaws.com -f - --start
Amazon RDS での PostgreSQL のイベントトリガー

PostgreSQL バージョン 9.4.9 以降とバージョン 9.5.4 以降はイベントトリガーをサポートし、Amazon RDS はこれらのバージョンのトリガーもサポートしています。マスターユーザーアカウントを使用して、イベントトリガーを作成、変更、名前変更、および削除できます。イベントトリガーは DB インスタンスレベルであるため、インスタンスのすべてのデータベースに適用できます。

たとえば、次のコードは、各 DDL コマンドの最後に現在のユーザーを表示するイベントトリガーを作成します。

Copy
CREATE OR REPLACE FUNCTION raise_notice_func() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'In trigger function: %', current_user; END; $$; CREATE EVENT TRIGGER event_trigger_1 ON ddl_command_end EXECUTE PROCEDURE raise_notice_func();

PostgreSQL イベントトリガーの詳細については、PostgreSQL ドキュメントの「Event Triggers」を参照してください。

Amazon RDS で PostgreSQL イベントトリガーを使用する場合、いくつかの制限があります。具体的には次のとおりです。

  • リードレプリカでイベントトリガーを作成することはできません。ただし、リードレプリカマスターでイベントトリガーを作成でき、イベントトリガーはリードレプリカにコピーされます。リードレプリカのイベントトリガーは、マスターから変更がプッシュされたときにリードレプリカで実行されませんが、リードレプリカが昇格された場合、既存のイベントトリガーは、データベースオペレーションが発生したときに実行されます。

  • イベントトリガーを使用する PostgreSQL DB インスタンスへのメジャーバージョンのアップグレードを実行するには、インスタンスのアップグレード前にイベントトリガーを削除する必要があります。

Amazon RDS for PostgreSQL の huge ページ

Amazon RDS for PostgreSQL は、PostgreSQL バージョン 9.4.11 以降、9.5.6 以降、および 9.6.2 以降の複数のページサイズをサポートします。このサポートには、4 K と 2 MB のページサイズが含まれます。

huge ページは、大量の連続するチャンクのメモリを使用する際のオーバーヘッドを削減します。アプリケーションに huge ページを割り当てるには、mmap または SYSV 共有メモリへの呼び出しを使用します。Amazon RDS for PostgreSQL データベースで huge ページを有効にするには、huge_pages パラメータを使用します。huge ページを使用するには、このパラメータを "on " に設定します。デフォルト値は "off" です。

huge_pages パラメータを "on " に設定すると、Amazon RDS では利用可能な共有メモリに基づいて huge ページを使用します。共有ストレージの制約により、DB インスタンスで huge ページを使用できない場合は、Amazon RDS でインスタンスの起動が禁止され、DB インスタンスのステータスが互換性のないパラメータ状態として設定されます。この場合は、huge_pages パラメータを "off " に設定して Amazon RDS で DB インスタンスを起動することを許可します。

shared_buffers パラメータは huge ページを使用するために必要な共有メモリプールの設定に重要です。shared_buffers パラメータのデフォルト値は、そのインスタンスのメモリで使用できる 8K ページの合計に対する特定のパーセントに設定されます。huge_pages を使用すると、これらのページは huge_pages で割り当てられてまとめて併置されます。共有メモリパラメータで DB インスタンスの 90 パーセントを超えるメモリを要求するように設定すると、Amazon RDS では DB インスタンスが互換性のないパラメータ状態に設定されることに注意してください。PostgreSQL の共有メモリの設定の詳細については、PostgreSQL のドキュメントを参照してください。

注記

huge ページは DB インスタンスクラスの db.m1、db.m2、db.m3、および db.t1 ではサポートされていません。

Amazon RDS の PostgreSQL のテーブルスペース

テーブルスペースは、Amazon RDS 上の PostgreSQL で互換性を維持するためにサポートされています。すべてのストレージが 1 つの論理ボリューム上にあるため、テーブルスペースを IO 分割/分離に使用することはできません。Amazon でのベンチマークと実績から、1 つの論理ボリュームがほとんどのユースケースに最適の設定であるとわかっています。

Amazon RDS の PostgreSQL の Autovacuum

PostgreSQL の auto-vacuum はオプションですが、選択することを強くお勧めします。このパラメータは、新しい PostgreSQL DB インスタンスではデフォルトでオンになっています。このパラメータをオフにしないでください。Amazon RDS PostgreSQL で auto-vacuum を使用する方法については、「Amazon RDS での PostgreSQL Autovacuum の使用」を参照してください。

stats_temp_directory の RAM ディスク

Amazon RDS for PostgreSQL パラメータ rds.pg_stat_ramdisk_size は、PostgreSQL stats_temp_directory を保存する RAM ディスクに割り当てられたシステムメモリを指定するために使用できます。RAM ディスクパラメータは、Amazon RDS のすべての PostgreSQL バージョンで利用できます。

特定のワークロードでは、このパラメータを設定することでパフォーマンスが向上し、IO 要件を軽減することができます。stats_temp_directory の詳細については、PostgreSQL のドキュメントを参照してください。

stats_temp_directory の RAM ディスクを有効にするには、rds.pg_stat_ramdisk_size パラメータを、DB インスタンスで使用されるパラメータグループのゼロ以外の値に設定します。パラメータ値は MB 単位です。変更が有効になる前に、DB インスタンスを再起動する必要があります。

たとえば、次の AWS CLI コマンドは、RAM ディスクパラメータを 256 MB に設定します。

Copy
postgres=>aws rds modify-db-parameter-group \ --db-parameter-group-name pg-95-ramdisk-testing \ --parameters "ParameterName=rds.pg_stat_ramdisk_size, ParameterValue=256, ApplyMethod=pending-reboot"

再起動後は、次のコマンドを実行して stats_temp_directory のステータスを確認します。

Copy
postgres=>show stats_temp_directory;

コマンドは次の情報を返します。

Copy
stats_temp_directory --------------------------- /rdsdbramdisk/pg_stat_tmp (1 row)
PostgreSQL 用の ALTER ENUM

Amazon RDS PostgreSQL バージョン 9.6.2 および 9.5.6 以降では、列挙を変更する機能がサポートされます。この機能は Amazon RDS の他のバージョンでは使用できません。

次のコードは、列挙値を変更する例を示しています。

Copy
postgres=> CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple'); CREATE TYPE postgres=> CREATE TABLE t1 (colors rainbow); CREATE TABLE postgres=> INSERT INTO t1 VALUES ('red'), ( 'orange'); INSERT 0 2 postgres=> SELECT * from t1; colors -------- red orange (2 rows) postgres=> ALTER TYPE rainbow RENAME VALUE 'red' TO 'crimson'; ALTER TYPE postgres=> SELECT * from t1; colors --------- crimson orange (2 rows)

PostgreSQL DB インスタンスの制限

最大 40 個の PostgreSQL DB インスタンスを作成できます。以下のリストに示しているのは、Amazon RDS 上の PostgreSQL についての制限です。

  • PostgreSQL DB インスタンスの最小ストレージサイズは 5 GB です。

  • PostgreSQL DB インスタンスの最大ストレージサイズは、インスタンスごとに 6 TB です。

  • Amazon RDS では、システムメンテナンス用に最大 3 接続が予約されます。ユーザー接続パラメーターの値を指定する場合は、使用予定の接続数に 3 を加える必要があります。

PostgreSQL DB インスタンスをアップグレードする

PostgreSQL DB インスタンスを管理できる 2 つのタイプのアップグレードがあります。

  • OS の更新 — Amazon RDS では、セキュリティの修正や OS の変更を適用するために、基礎となる DB インスタンスのオペレーティングシステムの更新が必要になる場合があります。RDS コンソール、AWS Command Line Interface (AWS CLI)、または RDS API を使用して、Amazon RDS に OS の更新を適用するタイミングを指定できます。

    OS 更新接続の詳細については、「DB インスタンスまたは DB クラスターのオペレーティングシステムの更新」を参照してください

  • データベースエンジンの更新 — Amazon RDS が新バージョンのデータベースエンジンをサポートすると、DB インスタンスをその新バージョンにアップグレードできます。アップグレードには、メジャーバージョンのアップグレードとマイナーバージョンのアップグレードの 2 種類があります。Amazon RDS は、PostgreSQL の DB インスタンスのメジャーおよびマイナーバージョンアップグレードをサポートしています。

    PostgreSQL DB エンジンをアップグレードする方法の詳細については、「PostgreSQL DB エンジンのアップグレード」を参照してください。

PostgreSQL DB インスタンスで SSL を使用する

Amazon RDS では、PostgreSQL DB インスタンスの SSL 暗号化がサポートされています。SSL を使用して、アプリケーションと PostgreSQL DB インスタンスとの PostgreSQL 接続を暗号化できます。また、PostgreSQL DB インスタンスへのすべての接続に SSL の使用を強制することができます。

SSL は、PostgreSQL 用のすべての AWS リージョンでサポートされています。インスタンスが作成されるとき、Amazon RDS で PostgreSQL DB インスタンスの SSL 証明書が作成されます。SSL 証明書認証を有効にした場合、SSL 証明書には、なりすまし攻撃から保護するために、SSL 証明書の共通名 (CN) として DB インスタンスのエンドポイントが含まれます。

SSL を使用して PostgreSQL DB インスタンスに接続するには

  1. https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem に保存されている証明書をダウンロードします。

  2. オペレーティングシステムに証明書をインポートします。

  3. 接続文字列に「sslmode=verify-full」を追加することで、SSL を使用して PostgreSQL DB インスタンスに接続します。sslmode=verify-full を使用すると、SSL 接続で DB インスタンスのエンドポイントを SSL 証明書のエンドポイントと照合します。

    sslrootcert パラメーターを使用して証明書を参照します (sslrootcert=rds-ssl-ca-cert.pem など)。

psql プログラムを使用して PostgreSQL DB インスタンスに接続する例は次のとおりです。

Copy
$ psql -h testpg.cdhmuqifdpib.us-east-1.rds.amazonaws.com -p 5432 \ "dbname=testpg user=testuser sslrootcert=rds-ca-2015-root.pem sslmode=verify-full"
PostgreSQL DB インスタンスへの SSL 接続を必須にする

rds.force_ssl パラメータを使用することで、PostgreSQL DB インスタンスへの接続に SSL の使用を必須にすることができます。デフォルトでは、rds.force_ssl パラメータが 0 (オフ) に設定されています。rds.force_ssl パラメータを 1 に設定すれば、DB インスタンスへの接続に SSL を必須にすることができます。rds.force_ssl パラメータを更新することでも PostgreSQL ssl パラメータは 1 (オン) に設定され、新しい SSL 接続をサポートするように DB インスタンスの pg_hba.conf ファイルが変更されます。

rds.force_ssl パラメータの値は、DB インスタンスのパラメータグループを更新することで設定できます。DB インスタンスのパラメータグループがデフォルトのパラメータグループ以外の場合、かつ rds.force_ssl パラメータを 1 に設定するときにssl パラメータが既に 1 に設定されている場合は、DB インスタンスを再起動する必要はありません。それ以外の場合は、変更を反映するために DB インスタンスを再起動する必要があります。パラメータグループの詳細については、「DB パラメータグループを使用する」を参照してください。

DB インスタンスの rds.force_ssl パラメーターが 1 に設定されている場合、接続時に、SSL が必須になっていることを示す次のような出力が表示されます。

Copy
$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql (9.3.12, server 9.4.4) WARNING: psql major version 9.3, server major version 9.4. Some psql features might not work. SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=>
SSL 接続ステータスを調べる

接続の暗号化ステータスは、DB インスタンスに接続するときにログオンバナーに表示されます。

Copy
Password for user master: psql (9.3.12) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help.   postgres=>

また、sslinfo 拡張機能をロードしてから、show ssl 関数を呼び出して、SSL が使用されているかどうかを調べることもできます。この関数は、この接続が SSL を使用している場合に on を返し、それ以外の場合に off を返します。

Copy
postgres=> create extension sslinfo; CREATE EXTENSION postgres=> show ssl; ssl ---- on (1 row)

SSL 暗号は select ssl_cipher() コマンドを使用して調べることができます。

Copy
postgres=> select ssl_cipher(); ssl_cipher -------------------- DHE-RSA-AES256-SHA (1 row)

set rds.force_ssl を有効にしてインスタンスを再起動すると、次のメッセージが表示され SSL 以外の接続は拒否されます。

Copy
$ export PGSSLMODE=disable $ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql: FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off $