Aurora での PostgreSQL 論理レプリケーションの概要 - Amazon Aurora

Aurora での PostgreSQL 論理レプリケーションの概要

Aurora PostgreSQL DB クラスターで PostgreSQL の論理レプリケーション機能を使用することで、データベースインスタンス全体ではなく、個々のテーブルをレプリケートおよび同期できます。論理レプリケーションでは、パブリケーションおよびサブスクリプションモデルを使用して、ソースからの変更を 1 人または複数の受信者にレプリケートします。これは、PostgreSQL のログ先行書き込み (WAL) の変更レコードを使用することで動作します。送信元 (パブリッシャー) は、指定されたテーブルの WAL データを 1 人または複数の受信者 (サブスクライバー) に送信します。これによって変更がレプリケートされ、サブスクライバーのテーブルとパブリッシャーのテーブルの同期を維持できます。パブリッシャーによる一連の変更は、パブリケーションを使用して識別します。サブスクライバーは、パブリッシャーのデータベースとそのパブリケーションへの接続を定義するサブスクリプションを作成することによって変更を取得できます。レプリケーションスロットは、この方式によってサブスクリプションの進行状況を追跡するために使用されるメカニズムです。

Aurora PostgreSQL DB クラスターでは、WAL レコードは Aurora ストレージに保存されます。論理レプリケーションシナリオでパブリッシャーとして機能する Aurora PostgreSQL DB クラスターは、Aurora ストレージから WAL データを読み込み、デコードしてサブスクライバーに送信し、そのインスタンスのテーブルに変更を適用できるようにします。パブリッシャーでは、論理デコーダーを使用してデータをデコードすることでサブスクライバーが使用できるようにします。デフォルトでは、Aurora PostgreSQL DB クラスターはデータを送信する際にネイティブ PostgreSQL pgoutput プラグインを使用します。他の論理デコーダーも使用できます。例えば、Aurora PostgreSQL は WAL データを JSON に変換する wal2json プラグインもサポートしています。

Aurora PostgreSQL バージョン 14.5、13.8、12.12、11.17 以降、Aurora PostgreSQL は PostgreSQL の論理レプリケーションプロセスをライトスルーキャッシュで強化してパフォーマンスを向上させています。WAL トランザクションログは、ディスク I/O の量、つまり論理デコード中に Aurora ストレージから読み取る量を減らすために、ローカルでバッファにキャッシュされます。Aurora PostgreSQL DB クラスターの論理レプリケーションを使用する場合は常に、ライトスルーキャッシュがデフォルトで使用されます。Aurora には、キャッシュの管理に使用できる機能がいくつか用意されています。詳しくは、「Aurora PostgreSQL 論理レプリケーション書き込みスルーキャッシュのモニタリング」を参照してください。

論理レプリケーションは、現在の Aurora PostgreSQL のすべてのバージョンでサポートされています。詳細については、「Aurora PostgreSQL リリースノート」の「Amazon Aurora PostgreSQL の更新」を参照してください。

論理レプリケーションは、Babelfish for Aurora PostgreSQL で以下のバージョンからサポートされています。

  • 15.7 以降のバージョン

  • 16.3 以降のバージョン

注記

PostgreSQL 10 で導入されたネイティブの PostgreSQL 論理レプリケーション機能に加えて、Aurora PostgreSQL は pglogical エクステンションもサポートしています。詳しくは、「pglogical を使用してインスタンス間でデータを同期する」を参照してください。

PostgreSQL 論理レプリケーションの詳細については、PostgreSQL ドキュメントの「論理レプリケーション」と「論理デコーディングのコンセプト」を参照してください。