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參數,詳細操作請參考設定叢集參數。修改該參數後叢集將會重啟,請在修改參數前做好業務安排,謹慎操作。
邏輯複製樣本如下:
建立邏輯複製槽,並設定編解碼外掛程式為decoderbufs。
SELECT * FROM pg_create_logical_replication_slot('decoderbufs_demo', 'decoderbufs');邏輯複製發布方對發布的表進行修改。
使用decoderbufs偵錯模式查看WAL日誌。
SELECT data FROM pg_logical_slot_peek_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');使用decoderbufs擷取WAL更改,用於更新WAL位置。
SELECT data FROM pg_logical_slot_get_changes('decoderbufs_demo', NULL, NULL, 'debug-mode', '1');查看邏輯複製的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 |