All Products
Search
Document Center

PolarDB:decoderbufs (decode to ProtoBuf)

Last Updated:Dec 18, 2025

decoderbufs adalah plugin output untuk logical decoder PostgreSQL yang mendekode data ke dalam format Protocol Buffers untuk replikasi logis.

Cakupan

  • Versi PolarDB for PostgreSQL berikut ini didukung:

    • PostgreSQL 17 (versi mesin minor 2.0.17.6.4.0 atau lebih baru)

    • PostgreSQL 16 (versi mesin minor 2.0.16.9.9.0 atau lebih baru)

    • PostgreSQL 15 (versi mesin minor 2.0.15.14.6.0 atau lebih baru)

    • PostgreSQL 14 (versi mesin minor 2.0.14.5.1.0 atau lebih baru)

    • PostgreSQL 11 (versi mesin minor 2.0.11.9.28.0 atau lebih baru)

    Catatan

    Anda dapat melihat versi mesin minor di console atau dengan menjalankan pernyataan SHOW polardb_version;. Jika versi Anda tidak memenuhi persyaratan, upgrade the minor engine version.

  • Ekstensi decoderbufs bergantung pada pustaka berikut:

    • PostgreSQL: Versi mesin 9.6 atau lebih baru.

    • Protobuf-c: Versi 1.2 atau lebih baru, untuk serialisasi data.

    • PostGIS: Versi 2.1 atau lebih baru, untuk mendukung tipe spasial geografis PostgreSQL.

Petunjuk penggunaan

Ekstensi decoderbufs dimuat secara otomatis secara default, sehingga Anda tidak perlu memuatnya secara manual. Anda harus mengatur parameter `wal_level` ke `logical`. Pengaturan ini menambahkan informasi yang diperlukan untuk logical decoding ke dalam write-ahead logging (WAL).

Catatan

Anda dapat mengatur parameter `wal_level` di console. Untuk informasi selengkapnya, lihat Set cluster parameters. Mengubah parameter ini akan me-restart kluster, jadi lakukan dengan hati-hati dan rencanakan operasi bisnis Anda sesuai kebutuhan.

Contoh berikut menunjukkan cara melakukan replikasi logis:

  1. Buat slot replikasi logis dan atur plugin decoder ke decoderbufs.

    SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');
  2. Pada instans publisher, ubah tabel yang ingin direplikasi.

  3. Gunakan mode debug decoderbufs untuk melihat log WAL.

    SELECT data FROM pg_logical_slot_peek_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');
  4. Gunakan decoderbufs untuk mengambil perubahan WAL dan memperbarui posisi WAL.

    SELECT data FROM pg_logical_slot_get_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');
  5. Lihat posisi WAL dari replikasi logis.

    SELECT * FROM pg_replication_slots WHERE slot_type = 'logical';

Pemetaan tipe

Tabel berikut menjelaskan pemetaan antara tipe PostgreSQL dan bidang decoderbufs.

Tipe PostgreSQL

Bidang 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