例: Aurora PostgreSQL DB クラスターにおける論理レプリケーションの使用 - Amazon Aurora

例: Aurora PostgreSQL DB クラスターにおける論理レプリケーションの使用

以下の手順では、2 つの Aurora PostgreSQL DB クラスター間で論理レプリケーションを開始する方法を示しています。「Aurora PostgreSQL DB クラスターの論理レプリケーションの設定」で説明したように、パブリッシャーとサブスクライバーの両方が、論理レプリケーション用に設定されている必要があります。

パブリッシャーとして指定されている Aurora PostgreSQL DB クラスターでも、レプリケーションスロットへのアクセスを許可する必要があります。そのためには、Amazon VPC サービスに基づいて Aurora PostgreSQL DB クラスターの仮想パブリッククラウド (VPC) に関連付けられているセキュリティグループを変更します。サブスクライバーの VPC に関連付けられているセキュリティグループをパブリッシャーのセキュリティグループに追加することで、インバウンドアクセスを許可します。詳細については、「Amazon VPC ユーザーガイド」の「セキュリティグループを使用してリソースへのトラフィックを制御する」を参照してください。

これらの準備手順が完了したら、次の手順で説明されているように、パブリッシャーには PostgreSQL の CREATE PUBLICATION コマンドを、サブスクライバーには CREATE SUBSCRIPTION コマンドを使用できます。

2 つの Aurora PostgreSQL DB クラスター間で論理レプリケーションを開始するには

これらの手順では、Aurora PostgreSQL DB クラスターに、サンプルテーブルを作成するデータベースを含むライターインスタンスがあることを前提としています。

  1. パブリッシャーとしての Aurora PostgreSQL DB クラスター

    1. 次の SQL ステートメントを使用してテーブルを作成します。

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. 次の SQL ステートメントを使用して、パブリッシャーデータベース内にデータを挿入します。

      INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000));
    3. 次の SQL ステートメントを使用して、テーブルにデータが存在することを確認します。

      SELECT count(*) FROM LogicalReplicationTest;
    4. 次のように、CREATE PUBLICATION ステートメントを使用してこのテーブルのパブリケーションを作成します。

      CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
  2. サブスクライバーとしての Aurora PostgreSQL DB クラスター

    1. 次のように、パブリッシャーで作成したものと同じ LogicalReplicationTest テーブルをサブスクライバーに作成します。

      CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY);
    2. このテーブルが空であることを確認します。

      SELECT count(*) FROM LogicalReplicationTest;
    3. サブスクリプションを作成して、パブリッシャーから変更を取得します。パブリッシャーの Aurora PostgreSQL DB クラスターについて、次の詳細を使用する必要があります。

      • host (ホスト) - パブリッシャーである Aurora PostgreSQL DB クラスターのライター DB インスタンス。

      • ポート - 書き込み DB インスタンスがリッスンするポート。PostgreSQL のデフォルト値は 5432 です。

      • dbname (データベース名) – データベースの名前。

      CREATE SUBSCRIPTION testsub CONNECTION 'host=publisher-cluster-writer-endpoint port=5432 dbname=db-name user=user password=password' PUBLICATION testpub;
      注記

      セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。

      サブスクリプションを作成すると、論理的なレプリケーションスロットがパブリッシャーで作成されます。

    4. この例で、初期のデータがサブスクライバーにレプリケートされていることを確認するには、サブスクライバーデータベースで次の SQL ステートメントを使用します。

      SELECT count(*) FROM LogicalReplicationTest;

パブリッシャーの以降のすべての変更がサブスクライバーにレプリケートされます。

論理レプリケーションはパフォーマンスに影響を与えます。レプリケーションタスクが完了したら、論理レプリケーションをオフにすることをお勧めします。