All Products
Search
Document Center

PolarDB:Decoderbufs

Last Updated:Jul 03, 2025

Decoderbufs adalah ekstensi output decoder logis PostgreSQL yang digunakan untuk replikasi logis dalam format Protocol Buffers.

Prasyarat

  • Decoderbufs didukung pada kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle) yang menjalankan mesin berikut:

    • PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 (versi revisi 2.0.14.1.0 atau lebih baru).

    Catatan

    Anda dapat mengeksekusi pernyataan berikut untuk melihat versi revisi dari kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle):

    SHOW polar_version;
  • Decoderbufs bergantung pada pustaka berikut:

    • PostgreSQL 9.6 atau lebih baru.

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

    • PostGIS: 2.1 atau lebih baru untuk mendukung tipe Geo PostgreSQL.

Konfigurasi dan penggunaan

Decoderbufs dimuat secara otomatis secara default. Anda harus mengubah parameter wal_level menjadi logical.

Catatan

Parameter ini dapat diubah di konsol. Untuk informasi lebih lanjut, lihat Konfigurasikan Parameter Kluster. Kluster akan memulai ulang setelah Anda mengubah parameter. Lanjutkan dengan hati-hati.

Contoh untuk replikasi logis:

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

    SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');
  2. Ubah tabel yang diterbitkan.

  3. Lihat log WAL menggunakan mode debug decoderbufs.

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

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

    SELECT * FROM pg_replication_slots WHERE slot_type = 'logical';

Pemetaan tipe data

Tabel berikut mencantumkan bagaimana OID tipe PostgreSQL saat ini dipetakan ke bidang decoderbuf.

OID 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

Geometri PostGIS

datum_point

Geografi PostGIS

datum_point

Catatan penggunaan

Decoderbufs bergantung pada pustaka berikut:

  • PostgreSQL 9.6 atau lebih baru.

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

  • PostGIS: 2.1 atau lebih baru untuk mendukung tipe Geo PostgreSQL.

Konfigurasi dan penggunaan

Decoderbufs dimuat secara otomatis secara default.

Anda dapat mengonfigurasi replikasi logis di file 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)

Contoh untuk replikasi logis:

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

    SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');
  2. Ubah tabel yang diterbitkan.

  3. Lihat log WAL menggunakan mode debug decoderbufs.

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

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

    SELECT * FROM pg_replication_slots WHERE slot_type = 'logical';

Pemetaan tipe data

Tabel berikut mencantumkan bagaimana OID tipe PostgreSQL saat ini dipetakan ke bidang decoderbuf.

OID 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

Geometri PostGIS

datum_point

Geografi PostGIS

datum_point