decoderbufs は、PostgreSQL の論理デコーダー用の出力プラグインであり、論理レプリケーションのためにデータを Protocol Buffers フォーマットにデコードします。
適用範囲
PolarDB for PostgreSQL の以下のバージョンがサポートされています:
PostgreSQL 17 (マイナーエンジンバージョン 2.0.17.6.4.0 以降)
PostgreSQL 16 (マイナーエンジンバージョン 2.0.16.9.9.0 以降)
PostgreSQL 15 (マイナーエンジンバージョン 2.0.15.14.6.0 以降)
PostgreSQL 14 (マイナーエンジンバージョン 2.0.14.5.1.0 以降)
PostgreSQL 11 (マイナーエンジンバージョン 2.0.11.9.28.0 以降)
説明マイナーエンジンバージョンは、コンソールで表示するか、
SHOW polardb_version;文を実行して確認できます。ご利用のバージョンが要件を満たしていない場合は、マイナーエンジンバージョンをアップグレードしてください。decoderbufs 拡張機能は、以下のライブラリに依存します:
PostgreSQL:エンジンバージョン 9.6 以降。
Protobuf-c:バージョン 1.2 以降、データシリアライゼーション用。
PostGIS:バージョン 2.1 以降、PostgreSQL の空間地理データ型をサポートするため。
使用方法
decoderbufs 拡張機能はデフォルトで自動的にロードされるため、手動でロードする必要はありません。`wal_level` パラメーターを `logical` に設定する必要があります。この設定により、論理デコーディングに必要な情報が先行書き込みログ (WAL) に追加されます。
`wal_level` パラメーターはコンソールで設定できます。詳細については、「クラスターパラメーターの設定」をご参照ください。このパラメーターを変更するとクラスターが再起動するため、業務への影響を考慮した上で、慎重に操作を行ってください。
以下の例は、論理レプリケーションを実行する方法を示しています:
論理レプリケーションスロットを作成し、デコーダープラグインを decoderbufs に設定します。
SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');パブリッシャーインスタンスで、レプリケーションするテーブルを変更します。
decoderbufs のデバッグモードを使用して WAL ログを表示します。
SELECT data FROM pg_logical_slot_peek_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');decoderbufs を使用して WAL の変更を取得し、WAL の位置を更新します。
SELECT data FROM pg_logical_slot_get_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');論理レプリケーションの WAL の位置を表示します。
SELECT * FROM pg_replication_slots WHERE slot_type = 'logical';
型のマッピング
次の表に、PostgreSQL の型と decoderbufs のフィールドのマッピングを示します。
PostgreSQL の型 | Decoderbuf のフィールド |
BOOLOID | datum_boolean |
INT2OID | datum_int32 |
INT4OID | datum_int32 |
INT8OID | datum_int64 |
OIDOID | datum_int64 |
FLOAT4OID | datum_float |
FLOAT8OID | datum_double |
NUMERICOID | datum_double |
CHAROID | datum_string |
VARCHAROID | datum_string |
BPCHAROID | datum_string |
TEXTOID | datum_string |
JSONOID | datum_string |
XMLOID | datum_string |
UUIDOID | datum_string |
TIMESTAMPOID | datum_string |
TIMESTAMPTZOID | datum_string |
BYTEAOID | datum_bytes |
POINTOID | datum_point |
PostGIS ジオメトリ | datum_point |
PostGIS ジオグラフィ | datum_point |