全部產品
Search
文件中心

PolarDB:decoderbufs(解碼為ProtoBuf)

更新時間:Dec 17, 2025

decoderbufs是PostgreSQL邏輯解碼器輸出外掛程式,用於以Protocol Buffers格式進行邏輯複製。

適用範圍

  • 支援的PolarDB 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(Write-ahead logging)中增加支援邏輯編碼所需的資訊。

說明

您可以通過控制台設定wal_level參數,詳細操作請參考設定叢集參數。修改該參數後叢集將會重啟,請在修改參數前做好業務安排,謹慎操作。

邏輯複製樣本如下:

  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類型與decoderbuf欄位的映射資訊如下:

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 geometry

datum_point

PostGIS geography

datum_point