资讯详情

在 Pigsty 中部署 Electric:面向前端应用的 PostgreSQL 实时同步引擎

📅 2026/10/3 1:57:41 | 华诺云谱 👁 阅读
在 Pigsty 中部署 Electric:面向前端应用的 PostgreSQL 实时同步引擎
数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载导读本文讲解如何在 Pigsty 项目中以 Docker Compose 方式部署 Electric——一个面向前端应用的 PostgreSQL 同步引擎。通过本文你将掌握 Electric 的启动命令、端口与配置项含义、DATABASE_URL中对复制权限的要求以及开发与生产环境关于ELECTRIC_INSECURE/ELECTRIC_SECRET的安全取舍并了解其与 Pigsty 托管 PostgreSQL 的接入方式。什么是 ElectricElectric 是专为 PostgreSQL 设计的实时同步引擎目标是将 Postgres 中的表数据同步到前端。它替开发者解决同步中一系列棘手问题包括部分复制partial replication只订阅/同步所需的表与数据范围而不是全量复制扇出fan-out同一份数据高效分发到多个订阅者数据交付data delivery通过 HTTP 协议把变更可靠地送达前端。在 Pigsty 的 app/README.md 中Electric 被定义为Postgres sync engine for frontend applications即面向前端应用的 Postgres 同步引擎定位是 Pigsty 应用生态中连接数据库与前端实时界面的桥梁。快速启动在 app/electric/README.md 中给出的启动方式是先检查.env文件再启动服务cd ~/pigsty/app/electric make up make view其中各命令的作用如下make up等价于docker compose up -d以后台守护方式拉起 Electric 容器make view打印访问地址提示默认输出visit http://10.10.10.10:8002便于快速确认入口。对应的 Makefile 位于 app/electric/Makefile它是对 Docker Compose 常用操作的封装除up之外还提供了down、stop、start、restart、pause、resume、pull、rm、log等价docker compose logs、logs等价docker compose logs -f、port、conf等价docker compose config、infodocker inspect electric | jq等管理命令并支持save/load做镜像导出与导入默认导出到/tmp/docker/electric.tgz。日常运维可直接复用这些目标。Compose 定义与端口Electric 的容器编排定义在 app/electric/docker-compose.yml其核心内容非常精简services: electric: container_name: electric image: electricsql/electric env_file: - .env ports: - ${ELECTRIC_PORT}:${ELECTRIC_PORT} - ${ELECTRIC_PROMETHEUS_PORT}:${ELECTRIC_PROMETHEUS_PORT}要点如下使用官方镜像electricsql/electric容器名固定为electric配置全部通过env_file: .env注入因此启动前必须先创建并检查.env对外暴露两个端口HTTP API 端口默认8002与Prometheus 监控指标端口默认8003两者均可在.env中通过ELECTRIC_PORT与ELECTRIC_PROMETHEUS_PORT调整。Compose 文件顶部注释明确提醒please change the credentials in .env file!即请务必在.env中修改默认凭据。配置项与环境变量Electri 的核心配置全部集中在.env。以 Pigsty 提供的参考配置 conf/app/electric.yml 为例其中通过apps.electric.conf定义了覆盖到/opt/electric/.env的默认参数DATABASE_URL: postgresql://electric:DBUser.Electric10.10.10.10:5432/electric?sslmoderequire ELECTRIC_PORT: 8002 ELECTRIC_PROMETHEUS_PORT: 8003 ELECTRIC_INSECURE: true #ELECTRIC_SECRET: 1U6ItbhoQb4kGUU5wXBLbxvNf各参数含义如下环境变量默认值示例作用DATABASE_URLpostgresql://electric:DBUser.Electric10.10.10.10:5432/electric?sslmoderequire连接 PostgreSQL 的 DSN指明库、用户、主机、端口与 SSL 要求ELECTRIC_PORT8002HTTP 同步 API 监听端口ELECTRIC_PROMETHEUS_PORT8003Prometheus 指标端点端口ELECTRIC_INSECUREtrue是否允许未经认证的 shape 请求开发模式ELECTRIC_SECRET未设置示例中注释生产模式下 shape 请求的签名密钥DATABASE_URL 与复制权限要求文档特别强调DATABASE_URL中的数据库用户必须具备复制replication权限。这是因为 Electric 依赖 PostgreSQL 的逻辑复制/流复制能力来捕获数据变更没有复制权限将无法建立同步。在 Pigsty 中这一要求在 conf/app/electric.yml 的pg-users定义中得到了落实- {name: electric ,password: DBUser.Electric ,pgbouncer: true , replication: true ,roles: [dbrole_admin] ,comment: electric main user }即创建electric用户时显式开启replication: true并授予dbrole_admin角色同时创建同名数据库electric作为其归属库pg_databases: [{ name: electric , owner: electric }]另外还通过pg_hba_rules放行内网/Docker 环境的 SSL 访问- { user: electric , db: replication ,addr: infra ,auth: ssl ,title: allow electric intranet/docker ssl access }这条规则允许来自infra分组即 Docker/应用宿主机的electric用户以 SSL 方式访问replication数据库对应逻辑复制所需的连接通道。安全模式INSECURE 与 SECRET开发环境示例默认ELECTRIC_INSECUREtrue此时 shape 请求无需任何认证即可访问仅适用于可信的开发网络生产环境必须先关闭ELECTRIC_INSECURE设为false并配置ELECTRIC_SECRET作为签名密钥再对外暴露服务。文档明确警告不要把 insecure 模式带到公网环境。与 Pigsty 的集成路径在 Pigsty 的配置体系里部署 Electric 遵循标准的应用安装流程详见 conf/app/electric.yml 头部注释curl -fsSL https://repo.pigsty.io/get | bash; cd ~/pigsty ./bootstrap # 准备本地仓库与 ansible ./configure -c app/electric # 使用 electric 配置模板 vi pigsty.yml # 重要修改凭据 ./deploy.yml # 安装 pigsty pgsql minio ./docker.yml # 安装 docker 与 docker-compose ./app.yml # 以 docker-compose 安装 electric即先安装 Pigsty 基础设施与 PostgreSQL再启用 Docker 运行时最后通过app.yml完成 Electric 的编排部署。这一流程保证了 Electric 所依赖的 PostgreSQL 实例示例为pg-meta集群与 Docker 环境都已就绪。此外conf/app/electric.yml 还在infra_portal中为 Electric 配置了域名入口electric: domain: elec.pigsty endpoint: ${admin_ip}:8002 websocket: true即通过 Pigsty 的 Nginx 门户将elec.pigsty反向代理到8002端口并开启 WebSocket 支持——这正契合 Electric 同步引擎对实时、长连接通道的需求。状态持久性与备份注意文档明确提醒当前 Compose 文件并未挂载 Electric 可选的文件型状态file-backed state。这意味着PostgreSQL 是唯一可靠的持久化数据源所有同步相关的权威数据都在 Postgres 中因此必须把 PostgreSQL 纳入常规备份计划Pigsty 自带的备份/PITR 机制即可覆盖在依赖本地 shape 持久化之前应先审查 Electric 的存储配置storage settings是否符合预期。换言之在默认部署形态下不要把 Electric 容器内的本地状态当作可恢复的数据源——数据安全边界仍在 PostgreSQL。小结在 Pigsty 中部署 Electric 只需三个步骤准备.env尤其保证DATABASE_URL用户具备 replication 权限→make up拉起服务 →make view确认入口。默认 HTTP API 端口8002、Prometheus 端口8003开发环境可保持ELECTRIC_INSECUREtrue生产环境务必改用ELECTRIC_SECRET认证。由于 Compose 未挂载文件型状态请将 PostgreSQL 作为持久化事实来源并纳入备份。若需在 Pigsty 中一站式接入可参考 conf/app/electric.yml 的配置模板结合configure、deploy、docker、app四步完成编排与门户接入。赞分享数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载相关推荐使用 Fly.io 部署 Electric 同步服务Postgres、同步引擎与客户端应用的全栈实战使用 Fly.io 部署 Electric 同步服务Postgres、同步引擎与客户端应用的全栈实战 Electric 是一个构建在 Postgres 逻辑复后端数据同步数据库人工智能AI AgentMCP 服务Electric Netlify 集成实战在 Netlify 上部署与部署 Electric 驱动的实时同步应用Electric Netlify 集成实战在 Netlify 上部署与部署 Electric 驱动的实时同步应用 本篇技术指南以 Netlify 集成文档后端数据同步数据库人工智能AI AgentMCP 服务Electric 同步引擎部署实战指南Postgres、同步服务与客户端的三段式架构落地Electric 同步引擎部署实战指南Postgres、同步服务与客户端的三段式架构落地 Electric 是一个基于 Postgres 逻辑复制构建的实时同后端数据同步数据库人工智能AI AgentMCP 服务上一篇Rolldown 混合导出警告MIXED_EXPORTS排查与修复默认导出与命名导出并存时的 CommonJS 兼容指南下一篇Label Studio 前端路由守卫pageSetToRoutes 与 404 兜底的源码走读创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑