pgEdge
pgEdge 是面向边缘场景的分布式 PostgreSQL 发行版,核心能力建立在 Spock 多主逻辑复制之上。
概览
Pigsty 通过 pg_mode: pgedge 接入 pgEdge,并用标准 PG 集群编排流程交付其核心组件:
pgedge:PG15、PG16、PG17、PG18 兼容内核,模板默认使用 PG18spock:多主(active-active)逻辑复制snowflake:分布式唯一序列lolor:大对象逻辑复制兼容层
当前 Pigsty 仓库中提供 pgedge-15、pgedge-16、pgedge-17、pgedge-18 四个版本化内核包,模板默认使用 pg_version: 18。
spock、snowflake 与 lolor 的控制文件、SQL 文件和动态库随 pgedge-$v 内核包一起交付,不再作为独立 pg_extensions 包安装项。
对客户端来说,pgEdge 仍然是 PostgreSQL 线缆协议,psql、JDBC/ODBC、DBeaver 等工具都可以直接接入。
Pigsty 提供的是“先验证单节点内核,再扩展到多节点复制拓扑”的交付路径: 模板会开箱即用地完成内核、扩展、监控、备份与访问控制,但真正的多主拓扑编排仍需要你根据业务一致性和冲突策略来设计。
安装
使用 Pigsty 内置模板:
./configure -c pgedge
./deploy.yml
模板默认在 meta 数据库预装 spock、snowflake、lolor。部署完成后可用以下命令核对版本和扩展:
psql -d meta -c "SELECT version();"
psql -d meta -c "SELECT extname, extversion FROM pg_extension WHERE extname IN ('spock','snowflake','lolor') ORDER BY 1;"
模板与完整参数见:
pgedge配置模板。
配置
pgedge 模板的关键参数如下(与 conf/pgedge.yml 一致):
pg_mode: pgedge
pg_version: 18
pg_packages: [ pgedge, pgsql-common ]
pg_libs: 'spock, lolor, pg_stat_statements, auto_explain'
pg_databases:
- { name: meta ,baseline: cmdb.sql ,comment: pigsty meta database ,schemas: [pigsty] ,extensions: [spock, snowflake, lolor] }
如果计划扩展为多节点多主,建议额外显式配置逻辑复制容量和 snowflake.node:
pg_parameters:
wal_level: logical
max_replication_slots: 16
max_wal_senders: 16
'snowflake.node': 1
其中 snowflake.node 必须在每个写节点上保持唯一,否则分布式 ID 会冲突。
使用
在 Pigsty 中,常见使用路径是“先单节点验证内核,再扩展为多节点 Spock 复制拓扑”。
如果你在业务数据库中也需要这些能力,请先创建扩展:
CREATE EXTENSION IF NOT EXISTS spock;
CREATE EXTENSION IF NOT EXISTS snowflake;
CREATE EXTENSION IF NOT EXISTS lolor;
随后再使用 Spock SQL API 或 pgEdge CLI 建立节点、复制集和订阅关系。
对于已有使用 serial / identity 的业务表,建议在多主写入前先完成 snowflake 序列规划,否则跨节点写入很容易出现主键冲突。
注意事项
- pgEdge 的复制是“按数据库”组织的,不是一次性把整个实例自动变成全库多主。
- 参与复制的表应具备
PRIMARY KEY或合适的REPLICA IDENTITY。 UNLOGGED与TEMPORARY表不会进入 Spock 逻辑复制。- Spock 的配置与运维通常需要超级用户权限,生产环境应明确权限边界。
- 如果业务依赖 large object 复制,应显式使用
lolor,不要假定原生 large object 会自动正确同步。 - 跨地域多主不是“开关一开即可用”的功能,网络时延、冲突解决策略与写入模型都要先评估。
相关文档
- PGSQL 内核总览
pgedge配置模板- PGSQL 内核模式参数
spock扩展snowflake扩展lolor扩展- pgEdge 官方文档首页
- Spock Limitations
- Snowflake Sequences
可用扩展
pgEdge 内核共有 63 个可用扩展,去除 PG Contrib 自带扩展之后,还有以下额外扩展:
| 扩展名 | 版本号 | 说明 |
|---|---|---|
| lolor | 1.2.2 | Large Objects support for logical replication |
| snowflake | 2.5.0 | Snowflake style IDs for PostgreSQL |
| spock | 5.0.10 | PostgreSQL Logical Replication |