全部產品
Search
文件中心

PolarDB:decoderbufs(解碼為ProtoBuf)

更新時間:Oct 26, 2024

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

前提條件

  • 支援的PolarDB PostgreSQL版(相容Oracle)的版本如下:

    Oracle文法相容 2.0(核心小版本2.0.14.1.0及以上)

    說明

    您可通過如下語句查看PolarDB PostgreSQL版(相容Oracle)的核心小版本號碼:

    SHOW polar_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