配置示例
各类集群的声明式配置示例。
本节提供常见场景的配置示例,帮助您快速上手声明式配置。
单节点部署
最简单的配置,单节点运行所有组件:
all:
children:
infra:
hosts: { 10.10.10.10: { infra_seq: 1 } }
etcd:
hosts: { 10.10.10.10: { etcd_seq: 1 } }
pg-meta:
hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
vars: { pg_cluster: pg-meta }
高可用集群
三节点 HA 集群
pg-test:
hosts:
10.10.10.11: { pg_seq: 1, pg_role: primary }
10.10.10.12: { pg_seq: 2, pg_role: replica }
10.10.10.13: { pg_seq: 3, pg_role: replica }
vars:
pg_cluster: pg-test
pg_version: 17
# 高可用配置
pg_conf: crit.yml # 关键业务模板,同步复制
# 业务数据库
pg_databases:
- name: testdb
owner: testuser
pg_users:
- name: testuser
password: DBUser.Test
roles: [dbrole_readwrite]
同步复制配置
pg-sync:
hosts:
10.10.10.21: { pg_seq: 1, pg_role: primary }
10.10.10.22: { pg_seq: 2, pg_role: replica }
10.10.10.23: { pg_seq: 3, pg_role: replica }
vars:
pg_cluster: pg-sync
# 同步复制:至少一个同步从库
synchronous_mode: true
synchronous_node_count: 1
读写分离
使用服务定义
pg-rw:
hosts:
10.10.10.31: { pg_seq: 1, pg_role: primary }
10.10.10.32: { pg_seq: 2, pg_role: replica }
10.10.10.33: { pg_seq: 3, pg_role: replica }
vars:
pg_cluster: pg-rw
# 服务定义
pg_default_services:
- name: primary # 读写服务
port: 5433
dest: primary
- name: replica # 只读服务
port: 5434
dest: replica
selector: "[]" # 所有从库
- name: offline # 离线查询
port: 5436
dest: offline
selector: "[? pg_role == `offline` || pg_offline_query ]"
离线查询实例
pg-analytics:
hosts:
10.10.10.41: { pg_seq: 1, pg_role: primary }
10.10.10.42: { pg_seq: 2, pg_role: replica }
10.10.10.43:
pg_seq: 3
pg_role: replica
pg_offline_query: true # 可用于离线查询
pg_weight: 0 # 不承载在线流量
vars:
pg_cluster: pg-analytics
OLTP 与 OLAP
OLTP 集群
pg-oltp:
hosts:
10.10.10.51: { pg_seq: 1, pg_role: primary }
10.10.10.52: { pg_seq: 2, pg_role: replica }
vars:
pg_cluster: pg-oltp
pg_conf: oltp.yml # OLTP 模板
# 连接池优化
pgbouncer_poolmode: transaction
pg_default_hba_rules:
- { user: all, db: all, addr: intra, auth: pwd, title: 'allow intranet access' }
OLAP 集群
pg-olap:
hosts:
10.10.10.61: { pg_seq: 1, pg_role: primary }
10.10.10.62: { pg_seq: 2, pg_role: replica }
vars:
pg_cluster: pg-olap
pg_conf: olap.yml # OLAP 模板
# 分析扩展
pg_libs: 'pg_stat_statements, auto_explain, pg_analytics'
pg_extensions:
- pg_analytics
- duckdb_fdw
扩展配置
PostGIS 地理空间
pg-gis:
hosts:
10.10.10.71: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-gis
pg_databases:
- name: gisdb
extensions:
- postgis
- postgis_topology
- postgis_raster
- pgrouting
pg_extensions:
- postgis35
- pgrouting
向量搜索
pg-vector:
hosts:
10.10.10.81: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-vector
pg_databases:
- name: vectordb
extensions:
- vector
- pg_search
pg_extensions:
- pgvector
- pg_search
时序数据
pg-timeseries:
hosts:
10.10.10.91: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-timeseries
pg_databases:
- name: tsdb
extensions:
- timescaledb
pg_extensions:
- timescaledb
pg_libs: 'timescaledb, pg_stat_statements'
多集群部署
完整生产环境
all:
vars:
version: v3.3.0
admin_ip: 10.10.10.10
pg_version: 17
children:
# 基础设施
infra:
hosts:
10.10.10.10: { infra_seq: 1 }
10.10.10.11: { infra_seq: 2 }
vars:
node_cluster: infra
# ETCD 集群
etcd:
hosts:
10.10.10.10: { etcd_seq: 1 }
10.10.10.11: { etcd_seq: 2 }
10.10.10.12: { etcd_seq: 3 }
vars:
etcd_cluster: etcd
# 元数据库
pg-meta:
hosts:
10.10.10.10: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-meta
pg_databases:
- name: meta
# 用户服务数据库
pg-user:
hosts:
10.10.10.21: { pg_seq: 1, pg_role: primary }
10.10.10.22: { pg_seq: 2, pg_role: replica }
10.10.10.23: { pg_seq: 3, pg_role: replica }
vars:
pg_cluster: pg-user
pg_conf: crit.yml
pg_databases:
- name: userdb
# 订单服务数据库
pg-order:
hosts:
10.10.10.31: { pg_seq: 1, pg_role: primary }
10.10.10.32: { pg_seq: 2, pg_role: replica }
vars:
pg_cluster: pg-order
pg_databases:
- name: orderdb
备份配置
本地备份
pg-local-backup:
hosts:
10.10.10.101: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-local-backup
pgbackrest_enabled: true
pgbackrest_repo:
local:
path: /pg/backup
retention_full: 2
retention_full_type: count
MinIO 备份
pg-minio-backup:
hosts:
10.10.10.111: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-minio-backup
pgbackrest_enabled: true
pgbackrest_repo:
minio:
type: s3
s3_endpoint: minio.pigsty
s3_bucket: pgsql
s3_key: pgbackrest
s3_key_secret: S3User.Backup
retention_full: 7
retention_full_type: time
安全配置
严格安全模式
pg-secure:
hosts:
10.10.10.121: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-secure
# SSL 强制
pg_ssl_enabled: true
pg_ssl_mode: require
# 强密码策略
pg_pwd_enc: scram-sha-256
# 严格 HBA
pg_default_hba_rules:
- { user: dbsu, db: all, addr: local, auth: ident, title: 'dbsu via local ident' }
- { user: replicator, db: replication, addr: intra, auth: pwd, title: 'replication' }
- { user: all, db: all, addr: intra, auth: ssl, title: 'intranet ssl only' }
配置模板
Pigsty 内置多种配置模板,位于 conf/ 目录:
| 模板 | 说明 |
|---|---|
meta.yml |
单节点元数据库 |
demo.yml |
四节点演示环境 |
prod.yml |
生产环境模板 |
full.yml |
完整参数示例 |
dual.yml |
双节点 HA |
trio.yml |
三节点 HA |
使用模板:
# 复制模板
cp conf/prod.yml pigsty.yml
# 根据实际环境修改
vim pigsty.yml