跳转到主要内容

kafgres

在 PostgreSQL 中运行 Kafka 协议消息代理

概览

扩展包名版本分类许可证语言
kafgres0.3.0SIMElastic-2.0Rust
ID扩展名BinLibLoadCreateTrustReloc模式
9440kafgres否是是是否否-

PGSTY targets PG16; requires preload and broker readiness before topic SQL; segment logs need separate replication and archiving.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.3.01817161514kafgres-
RPMPIGSTY0.3.01817161514kafgres_$v-
DEBPIGSTY0.3.01817161514postgresql-$v-kafgres-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/AN/AN/A
el8.aarch64N/AN/AN/AN/A
el9.x86_64N/AN/AN/AN/A
el9.aarch64N/AN/AN/AN/A
el10.x86_64N/AN/AN/AN/A
el10.aarch64N/AN/AN/AN/A
d12.x86_64N/AN/AN/AN/A
d12.aarch64N/AN/A
PIGSTY 0.3.0
N/AN/A
d13.x86_64N/AN/A
PIGSTY 0.3.0
N/AN/A
d13.aarch64N/AN/A
PIGSTY 0.3.0
N/AN/A
u22.x86_64N/AN/A
PIGSTY 0.3.0
N/AN/A
u22.aarch64N/AN/A
PIGSTY 0.3.0
N/AN/A
u24.x86_64N/AN/A
PIGSTY 0.3.0
N/AN/A
u24.aarch64N/AN/A
PIGSTY 0.3.0
N/AN/A
u26.x86_64N/AN/AN/AN/A
u26.aarch64N/AN/A
PIGSTY 0.3.0
N/AN/A

构建

您可以使用 pig build 命令构建 kafgres 扩展的 RPM / DEB 包:

pig build pkg kafgres         # 构建 RPM / DEB 包

安装

您可以直接安装 kafgres 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

安装
pig install kafgres;          # 当前活跃 PG 版本安装
pig
pig ext install -y kafgres -v 16  # PG 16
dnf
dnf install -y kafgres_16       # PG 16
apt
apt install -y postgresql-16-kafgres   # PG 16

预加载配置:

shared_preload_libraries = 'kafgres';

创建扩展:

CREATE EXTENSION kafgres;

用法

来源:

kafgres 在 PostgreSQL 中提供 Kafka 协议代理。上游 0.3.0 使用 pgrx 0.16.1,面向 PostgreSQL 16。需要超级用户安装、共享预加载及重启,许可为 Elastic License 2.0。

启用代理

shared_preload_libraries = 'kafgres'
kafgres.database = 'postgres'
kafgres.bind_host = '127.0.0.1'
kafgres.advertised_host = '127.0.0.1'
kafgres.port = 9092
CREATE EXTENSION kafgres;
SELECT kafgres_create_topic('demo', 1);
BEGIN;
SELECT kafgres_produce('demo', 'key', 'value');
COMMIT;
SELECT * FROM kafgres_partition_offsets('demo');

Kafka 客户端连接配置的代理端口,SQL 消息生产参与调用者的事务。将监听器暴露到受信任本地环境之外前,应配置 TLS、身份认证和访问控制。

存储与变更捕获

kafgres.storage_engine 默认为 segment,日志保存在独立文件中,需要使用扩展自己的复制与归档流程。依赖 segment 保留和恢复能力前,应配置 kafgres.segment_archive_command 并监控 kafgres_archive_status()。普通 PostgreSQL WAL/PITR 无法覆盖整个 segment 日志。table 引擎将日志保存在 PostgreSQL 表内;切换引擎不会迁移已有记录。

CDC 还需要 wal_level = logical;部分 PostgreSQL 构建另外要求配置 output_plugin_libraries 白名单。0.3.0 支持带投影和过滤的 SQL CDC 映射。部署前应审阅映射与恢复流程;发行产物面向 PostgreSQL 16,不能仅凭 Cargo 特性名称推断其他主版本受支持。

持久性设置

0.3.0 默认开启 kafgres.fsync_before_ack,默认关闭 kafgres.relaxed_produce_commit。放宽前者可能在断电时丢失已经确认的分段记录;放宽后者可能在崩溃后丢失最新的幂等生产者状态,使重试产生重复记录。这些参数的作用范围小于事务性 SQL 生产,并不统一作用于表引擎。应保留严格默认值,直到明确接受对应的持久性取舍。

这个页面对您有帮助吗?