electric
使用 Pigsty 托管的 PostgreSQL 部署 Electric 实时同步服务
electric 配置模板提供了部署 Electric SQL 实时同步服务的参考配置,实现 PostgreSQL 到客户端的实时数据同步。
更多细节,请参考 Electric 部署教程
配置概览
- 配置名称:
electric(位于app/electric.yml) - 节点数量: 单节点
- 配置说明:使用 Pigsty 托管的 PostgreSQL 部署 Electric 实时同步
- 适用系统:
el8,el9,d12,u22,u24 - 适用架构:
x86_64 - 相关配置:
meta
启用方式:
./configure -c app/electric [-i <primary_ip>]
配置内容
源文件地址:pigsty/conf/app/electric.yml
all:
children:
infra:
hosts: { 10.10.10.10: { infra_seq: 1 } }
vars:
app: electric
apps:
electric:
conf:
DATABASE_URL: 'postgresql://electric:DBUser.Electric@10.10.10.10:5432/electric?sslmode=require'
ELECTRIC_PORT: 8002
ELECTRIC_PROMETHEUS_PORT: 8003
ELECTRIC_INSECURE: true
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }
pg-meta:
hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-meta
pg_users:
- { name: electric ,password: DBUser.Electric ,pgbouncer: true ,replication: true ,roles: [dbrole_admin] }
pg_databases:
- { name: electric ,owner: electric }
pg_hba_rules:
- { user: electric ,db: replication ,addr: infra ,auth: ssl ,title: 'allow electric ssl access' }
vars:
version: v4.0.0
admin_ip: 10.10.10.10
region: default
docker_enabled: true
infra_portal:
home : { domain: i.pigsty }
electric : { domain: elec.pigsty ,endpoint: "${admin_ip}:8002" ,websocket: true }
repo_enabled: false
node_repo_modules: node,infra,pgsql
pg_version: 18
#----------------------------------------------#
# PASSWORD
#----------------------------------------------#
grafana_admin_password: pigsty
pg_admin_password: DBUser.DBA
# ... 更多密码配置
配置解读
electric 模板提供了 Electric SQL 实时同步服务的一键部署方案。
Electric 是什么:
- PostgreSQL 到客户端的实时数据同步服务
- 支持离线优先 (Local-first) 应用架构
- 通过逻辑复制实时同步数据变更
- 提供 HTTP API 供前端应用消费
关键特性:
- 使用 Pigsty 管理的 PostgreSQL 作为数据源
- 通过逻辑复制 (Logical Replication) 捕获数据变更
- 支持 SSL 加密连接
- 内置 Prometheus 指标端点
部署步骤:
curl -fsSL https://repo.pigsty.io/get | bash
./configure -c app/electric
vi pigsty.yml # 修改密码和域名
./install.yml # 安装 Pigsty 和 PostgreSQL
./docker.yml # 安装 Docker
./app.yml # 启动 Electric 容器
访问方式:
# Electric API 端点
http://elec.pigsty:8002
# Prometheus 指标
http://elec.pigsty:8003/metrics
# 在前端应用中使用
const electric = new ElectricClient({
url: 'http://elec.pigsty:8002'
});
适用场景:
- 构建离线优先 (Local-first) 应用
- 需要实时数据同步到客户端
- 移动应用和 PWA 的数据同步
- 协作应用的实时更新
注意事项:
- Electric 用户需要
replication权限 - 需要启用 PostgreSQL 逻辑复制
- 生产环境建议使用 SSL 连接(已配置
sslmode=require) - 可通过
ELECTRIC_INSECURE: false启用安全模式