Decoderbufsは、プロトコルバッファ形式の論理レプリケーション用のPostgreSQL論理デコーダ出力プラグインです。
前提条件
Decoderbufsは、次のPolarDB for PostgreSQLクラスターでサポートされています。
PostgreSQL 14 (バージョン14.5.1.0以降)
PostgreSQL 11 (バージョン1.1.28以降)
説明次のステートメントを実行して、PolarDB for PostgreSQLで使用されるマイナーバージョンを表示できます。
PostgreSQL 14
SELECT version();
PostgreSQL 11
SHOW polar_version;
Decoderbufsは、次のライブラリに依存します。
PostgreSQL 9.6以降
Protobuf-c: データのシリアル化の1.2以降
PostGIS: PostgreSQL Geo型をサポートする2.1以降。
設定と使用
Decoderbufsはデフォルトで自動的に読み込まれます。 wal_level
パラメーターをlogical
に変更する必要があります。
このパラメーターはコンソールで変更できます。 詳細については、「手順」「」をご参照ください。 パラメーターを変更すると、クラスターが再起動します。 作業は慎重に行ってください。
論理レプリケーションの例:
論理レプリケーションスロットを作成し、コーデックプラグインを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型OIDがdecoderbufフィールドにマップされる方法を示しています。
PostgreSQLタイプOID | 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 geometry | datum_point |
PostGIS geography | datum_point |