3.2.5.4.3. 重要の値
PostgreSQL のページサイズにはハード制限があります。つまり、ca. 8 KB を超える値は TOAST ストレージ を使用して保存する必要があります。TOAST メカニズムを使用して保存されていて変更されていない値は、テーブルのレプリカアイデンティティーの一部でない限り、メッセージには含まれないため、これはデータベースからのレプリケーションメッセージに影響します。Debezium が不足している値をデータベースから直接読み込むことは安全ではありません。これは競合状態が発生する可能性があるためです。そのため、Debezium は以下のルールに従って、これらの値を処理します。
-
TOAST 列の表は、他の列として変更イベント
before
およびafter
ブロックの一部ですREPLICA IDENTITY FULL
。 -
テーブル
REPLICA IDENTITY DEFAULT
: データベースからUPDATE
イベントを受信すると、レプリカ ID の一部ではない TOAST 列値はそのイベントの一部ではありません。同様に、イベントを受信するとDELETE
、TOAST 列はbefore
ブロックの一部ではありません。この場合、Debezium は列の値を安全に提供できないため、設定オプションで定義されたプレースホルダーの値が返されtoasted.value.placeholder
ます。
Amazon RDS インスタンスには特定の問題があります。wal2json
プラグインは一定期間にわたって進化し、帯域外の値を提供するリリースがありました。Amazon では、PostgreSQL バージョンごとに異なるバージョンのプラグインがサポートされます。Amazon の ドキュメント を参照して、バージョンからバージョンマッピングを取得してください。一貫性のある値の処理のために、以下を行うことが推奨されます。
-
PostgreSQL 10+ インスタンスの
pgoutput
プラグインの使用 -
slot.stream.params
設定オプションを使用して、wal2json
プラグインの以前のバージョンinclude-unchanged-toast=0
に対して設定