サポートされている Postgres のバージョン
論理レプリケーションを有効にする
rds.logical_replication = 1
- 必要な設定を含む、Aurora PostgreSQL のバージョンに対応した新しいパラメータグループを作成します。
rds.logical_replicationを 1 に設定します
- 新しいパラメータグループを Aurora PostgreSQL クラスターに適用します
- 変更を反映するため、Aurora クラスターを再起動します
データベースユーザーを設定する
-
ClickPipes 専用のユーザーを作成します。
-
前の手順で作成したユーザーに、スキーマレベルの読み取り専用アクセス権を付与します。以下の例は
publicスキーマに対する権限を示しています。レプリケーションしたいテーブルを含む各スキーマについて、これらのコマンドを繰り返してください。 -
ユーザーにレプリケーション権限を付与します。
- レプリケーションしたいテーブルを含む publication を作成します。パフォーマンスのオーバーヘッドを避けるため、publication には必要なテーブルだけを含めることを強く推奨します。
-
特定のテーブルに対する publication を作成するには:
-
特定のスキーマ内のすべてのテーブルに対する publication を作成するには:
-
特定のスキーマ内のすべてのテーブルに対する publication を作成するには:
clickpipes publication は、変更イベントが ClickPipes にストリーミングされるテーブルの集合を定義します。すべてのテーブルをレプリケーションする予定でない限り、FOR ALL TABLES は使用しないことを推奨します。不要なテーブルを含めると、Postgres から ClickPipes への WAL トラフィックが増加し、レプリケーション全体の効率が低下するためです。
IAM authentication を使用する (任意)
rds.iam_auth_for_replication パラメータを 1 に設定する必要があります。次のようにユーザーを作成し、その後、上記と同じスキーマおよびレプリケーションの権限を付与してください。
ネットワークアクセスの設定
IP ベースのアクセス制御
Inbound rules に追加してください。
AWS PrivateLink 経由のプライベートアクセス
Aurora 固有の考慮事項
- 接続エンドポイント: 論理レプリケーションでは、レプリケーションスロットを作成するための書き込み権限が必要であり、プライマリインスタンスに接続しなければならないため、必ず Aurora クラスターの writer エンドポイントに接続してください。
- フェイルオーバー時の動作: フェイルオーバーが発生すると、Aurora は自動的に reader を昇格させ、新しい writer にします。ClickPipes は切断を検知すると writer エンドポイントへの再接続を試み、そのエンドポイントは新しいプライマリインスタンスを指すようになります。
- Global Database: Aurora Global Database を使用している場合は、リージョン間のデータ移動はクロスリージョンレプリケーションですでに処理されるため、プライマリ Region の writer エンドポイントに接続してください。
- ストレージに関する考慮事項: Aurora のストレージ層はクラスター内のすべてのインスタンスで共有されるため、標準の RDS と比べて論理レプリケーションのパフォーマンスが向上する場合があります。
動的なクラスターエンドポイントへの対処
- 高可用性構成では、現在のプライマリインスタンスを自動的に指す Aurora writer エンドポイント を使用するようにアプリケーションを設定してください。
- クロスリージョンレプリケーションを使用している場合は、レイテンシを低減し、耐障害性を高めるために、リージョンごとに個別の ClickPipes を設定することを検討してください。