例: 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 クラスターに、サンプルテーブルを作成するデータベースを含むライターインスタンスがあることを前提としています。
-
パブリッシャーとしての Aurora PostgreSQL DB クラスター
-
次の SQL ステートメントを使用してテーブルを作成します。
CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY); -
次の SQL ステートメントを使用して、パブリッシャーデータベース内にデータを挿入します。
INSERT INTO LogicalReplicationTest VALUES (generate_series(1,10000)); -
次の SQL ステートメントを使用して、テーブルにデータが存在することを確認します。
SELECT count(*) FROM LogicalReplicationTest; -
次のように、
CREATE PUBLICATIONステートメントを使用してこのテーブルのパブリケーションを作成します。CREATE PUBLICATION testpub FOR TABLE LogicalReplicationTest;
-
-
サブスクライバーとしての Aurora PostgreSQL DB クラスター
-
次のように、パブリッシャーで作成したものと同じ
LogicalReplicationTestテーブルをサブスクライバーに作成します。CREATE TABLE LogicalReplicationTest (a int PRIMARY KEY); -
このテーブルが空であることを確認します。
SELECT count(*) FROM LogicalReplicationTest; -
サブスクリプションを作成して、パブリッシャーから変更を取得します。パブリッシャーの Aurora PostgreSQL DB クラスターについて、次の詳細を使用する必要があります。
-
host (ホスト) - パブリッシャーである Aurora PostgreSQL DB クラスターのライター DB インスタンス。
-
ポート - 書き込み DB インスタンスがリッスンするポート。PostgreSQL のデフォルト値は 5432 です。
-
dbname (データベース名) – データベースの名前。
CREATE SUBSCRIPTION testsub CONNECTION 'host=publisher-cluster-writer-endpointport=5432 dbname=db-nameuser=userpassword=password' PUBLICATION testpub;注記
セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。
サブスクリプションを作成すると、論理的なレプリケーションスロットがパブリッシャーで作成されます。
-
-
この例で、初期のデータがサブスクライバーにレプリケートされていることを確認するには、サブスクライバーデータベースで次の SQL ステートメントを使用します。
SELECT count(*) FROM LogicalReplicationTest;
-
パブリッシャーの以降のすべての変更がサブスクライバーにレプリケートされます。
論理レプリケーションはパフォーマンスに影響を与えます。レプリケーションタスクが完了したら、論理レプリケーションをオフにすることをお勧めします。