用途:指导部署 Electric 同步服务,支持 Docker、Docker Compose 和 Electric Cloud 三种方式,目标版本为 Electric sync service v1.x。
主要能力与配置: Postgres 需启用逻辑复制,在 postgresql.conf 中设置 wal_level = logical 与 max_replication_slots = 10,修改后需重启 Postgres。
关键环境变量:DATABASE_URL 必填,须为直连 Postgres(非连接池);ELECTRIC_SECRET 生产环境必填,自 v1.x 起缺失则拒绝启动,除非设置 ELECTRIC_INSECURE=true(仅限开发);ELECTRIC_STORAGE_DIR 可选,用于持久化 shape 缓存;ELECTRIC_POOLED_DATABASE_URL 可选,用于非复制查询的连接池连接;ELECTRIC_DATABASE_USE_IPV6 可选,IPv6 连接时设为 true。
使用方式:Docker Compose 示例中 postgres 使用 postgres:16-alpine 并挂载自定义配置,electric 使用 electricsql/electric:latest,映射 3000 端口并挂载 electric_data 卷。Electric Cloud 可用 npx @electric-sql/start my-app 初始化,再用 pnpm claim && pnpm deploy 部署。
Kubernetes 健康检查:livenessProbe 用 httpGet 访问 /v1/health;readinessProbe 建议用 exec 执行 curl -sf http://localhost:3000/v1/health,因为 202 表示存活但未就绪,仅 200 表示完全就绪。
限制与注意事项:长时间停止 Electric 时应执行 SELECT pg_drop_replication_slot('electric_slot_default'); 并设置 max_slot_wal_keep_size 防止 WAL 无限增长。常见错误包括未设 wal_level=logical、生产环境缺少 ELECTRIC_SECRET、ELECTRIC_STORAGE_DIR 使用临时存储导致重启后全量重同步、Bun 代理默认 256 并发上限(可设 BUN_CONFIG_MAX_HTTP_REQUESTS,最大 65,336)、以及使用已弃用的 ELECTRIC_QUERY_DATABASE_URL(应改用 ELECTRIC_POOLED_DATABASE_URL)。生产环境需配合代理与 ELECTRIC_SECRET 使用。