decoderbufs是PostgreSQL逻辑解码器输出插件,用于以Protocol Buffers格式进行逻辑复制。
前提条件
支持的PolarDB PostgreSQL版的版本如下:- PostgreSQL 14(内核小版本14.5.1.0及以上)
- PostgreSQL 11(内核小版本1.1.28及以上)
说明 您可通过如下语句查看PolarDB PostgreSQL版的内核小版本的版本号:
- PostgreSQL 14
select version(); - PostgreSQL 11
show polar_version;
前提条件
decoderbufs插件依赖以下库:
- PostgreSQL:内核版本为9.6及以上版本。
- Protobuf-c:1.2及以上版本,用于数据序列化。
- PostGIS:2.1及以上版本,用于PostgreSQL空间地理类型的支持。
配置与使用
decoderbufs插件默认会自动加载,无需手动加载扩展。
在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)逻辑复制示例如下:- 创建逻辑复制槽,并设置编解码插件为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 |
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




