すべてのプロダクト
Search
ドキュメントセンター

PolarDB:Decoderbufs

最終更新日:Nov 11, 2024

Decoderbufsは、プロトコルバッファ形式の論理レプリケーション用のPostgreSQL論理デコーダ出力拡張機能です。

前提条件

  • Decoderbufsは、次のエンジンを実行するPolarDB for PostgreSQL (Compatible with Oracle) クラスターでサポートされています。

    • PolarDB for PostgreSQL (Oracle互換) 2.0 (バージョン2.0.14.1.0以降)

    説明

    次のステートメントを実行して、PolarDB for PostgreSQL (Compatible with Oracle) クラスターのリビジョンバージョンを表示できます。

    SHOW polar_version;
  • Decoderbufsは、次のライブラリに依存します。

    • PostgreSQL 9.6以降

    • Protobuf-c: データのシリアル化の1.2以降

    • PostGIS: PostgreSQL Geo型をサポートする2.1以降。

設定と使用

Decoderbufsはデフォルトで自動的に読み込まれます。 wal_levelパラメーターをlogicalに変更する必要があります。

説明

このパラメーターはコンソールで変更できます。 詳細については、「」「クラスターパラメーターの設定」をご参照ください。 パラメーターを変更すると、クラスターが再起動します。 作業は慎重に行ってください。

論理レプリケーションの例:

  1. 論理レプリケーションスロットを作成し、コーデックプラグインをdecoderbufsに設定します。

    SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');
  2. 公開されたテーブルを変更します。

  3. decoderbufsデバッグモードを使用してWALログを表示します。

    SELECT data FROM pg_logical_slot_peek_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');
  4. decoderbufsを使用してWALの位置を更新し、WALの変更を取得します。

    SELECT data FROM pg_logical_slot_get_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');
  5. 論理レプリケータの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

使用上の注意

Decoderbufsは、次のライブラリに依存します。

  • PostgreSQL 9.6以降

  • Protobuf-c: データのシリアル化の1.2以降

  • PostGIS: PostgreSQL Geo型をサポートする2.1以降。

設定と使用

Decoderbufsはデフォルトで自動的に読み込まれます。

論理レプリケーションは、postgresql.confファイルで設定できます。

# MODULES
shared_preload_libraries = 'decoderbufs'

# REPLICATION
wal_level = logical             # minimal, archive, hot_standby, or logical (change requires restart)
max_wal_senders = 8             # max number of walsender processes (change requires restart)
wal_keep_segments = 4           # in logfile segments, 16MB each; 0 disables
#wal_sender_timeout = 60s       # in milliseconds; 0 disables
max_replication_slots = 4       # max number of replication slots (change requires restart)

論理レプリケーションの例:

  1. 論理レプリケーションスロットを作成し、コーデックプラグインをdecoderbufsに設定します。

    SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');
  2. 公開されたテーブルを変更します。

  3. decoderbufsデバッグモードを使用してWALログを表示します。

    SELECT data FROM pg_logical_slot_peek_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');
  4. decoderbufsを使用してWALの位置を更新し、WALの変更を取得します。

    SELECT data FROM pg_logical_slot_get_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');
  5. 論理レプリケータの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