rich
功能丰富的单节点配置,构建本地软件源,下载所有扩展,启用 MinIO 备份,预置完整示例
配置模板 rich 是 meta 的增强版本,专为需要完整功能体验的用户设计。
如果您希望构建本地软件源、使用 MinIO 存储备份、运行 Docker 应用,或需要预置业务数据库,可以使用此模板。
配置概览
- 配置名称:
rich - 节点数量: 单节点
- 配置说明:功能丰富的单节点配置,在
meta基础上增加本地软件源、MinIO 备份、完整扩展、Docker 应用示例 - 适用系统:
el8,el9,d12,u22,u24 - 适用架构:
x86_64(ARM 部分扩展不可用) - 相关配置:
meta,demo
此模板相比 meta 的主要增强:
- 构建本地软件源(
repo_enabled: true),下载所有 PG 扩展 - 启用单节点 MinIO 作为 PostgreSQL 备份存储
- 预置 TimescaleDB、pgvector、pg_wait_sampling 等扩展
- 包含详细的用户/数据库/服务定义注释示例
- 添加 Redis 主从实例示例
- 预置 pg-test 三节点高可用集群配置存根
启用方式:
./configure -c rich [-i <primary_ip>]
配置内容
源文件地址:pigsty/conf/rich.yml
all:
children:
#----------------------------------------------#
# PGSQL : pg-meta 单节点 PostgreSQL 集群
#----------------------------------------------#
pg-meta:
hosts:
10.10.10.10: { pg_seq: 1, pg_role: primary }
vars:
pg_cluster: pg-meta
# 安装并加载扩展
pg_extensions: [ postgis, timescaledb, pgvector, pg_wait_sampling ]
pg_libs: 'timescaledb, pg_stat_statements, auto_explain, pg_wait_sampling'
# 定义业务用户(含完整属性注释示例)
pg_users:
- name: dbuser_meta # 必填:用户名
password: DBUser.Meta # 可选:密码,支持 scram-sha-256 哈希或明文
login: true # 可选:是否允许登录,默认 true
superuser: false # 可选:是否超级用户,默认 false
createdb: false # 可选:是否可创建数据库,默认 false
createrole: false # 可选:是否可创建角色,默认 false
inherit: true # 可选:是否继承角色权限,默认 true
replication: false # 可选:是否可复制,默认 false
bypassrls: false # 可选:是否绕过行级安全,默认 false
pgbouncer: true # 可选:是否加入 pgbouncer 用户列表,默认 false
connlimit: -1 # 可选:连接数限制,默认 -1 不限制
expire_in: 3650 # 可选:N 天后过期(覆盖 expire_at)
expire_at: '2030-12-31' # 可选:过期时间戳(被 expire_in 覆盖)
comment: pigsty admin user # 可选:用户注释
roles: [dbrole_admin] # 可选:所属角色
parameters: {} # 可选:用户级参数
pool_mode: transaction # 可选:pgbouncer 池模式
pool_connlimit: -1 # 可选:pgbouncer 连接限制
- { name: dbuser_view ,password: DBUser.Viewer ,pgbouncer: true ,roles: [dbrole_readonly], comment: read-only viewer }
# 定义业务数据库(含完整属性注释示例)
pg_databases:
- name: meta # 必填:数据库名
baseline: cmdb.sql # 可选:初始化 SQL 脚本
schemas: [ pigsty ] # 可选:额外创建的 schema
extensions: # 可选:安装的扩展
- vector
- postgis
- timescaledb
- { name: pg_wait_sampling, schema: monitor }
comment: pigsty meta database # 可选:数据库注释
#pgbouncer: true # 可选:是否加入 pgbouncer,默认 true
#owner: postgres # 可选:所有者,默认 postgres
#template: template1 # 可选:模板库,默认 template1
#encoding: UTF8 # 可选:编码,默认 UTF8
#locale: C # 可选:区域设置,默认 C
#tablespace: pg_default # 可选:默认表空间
#revokeconn: false # 可选:撤销公共连接权限
#connlimit: -1 # 可选:连接数限制
#pool_mode: transaction # 可选:pgbouncer 池模式
# 定义 HBA 规则
pg_hba_rules:
- { user: dbuser_view , db: all ,addr: infra ,auth: pwd ,title: 'allow grafana access' }
# 备份策略
node_crontab: [ '00 01 * * * postgres /pg/bin/pg-backup full' ]
# L2 VIP(可选)
#pg_vip_enabled: true
#pg_vip_address: 10.10.10.2/24
#pg_vip_interface: eth1
#----------------------------------------------#
# 高可用集群存根示例(需取消注释)
#----------------------------------------------#
#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, pg_offline_query: true }
# vars:
# pg_cluster: pg-test
# pg_users: [{ name: test , password: test , pgbouncer: true , roles: [ dbrole_admin ] }]
# pg_databases: [{ name: test }]
# pg_vip_enabled: true
# pg_vip_address: 10.10.10.3/24
# pg_vip_interface: eth1
#----------------------------------------------#
# INFRA : 基础设施(构建本地软件源)
#----------------------------------------------#
infra:
hosts:
10.10.10.10: { infra_seq: 1 }
vars:
repo_enabled: true # 构建本地软件源
repo_extra_packages: [ pg18-main ,pg18-time ,pg18-gis ,pg18-rag ,pg18-fts ,pg18-olap ,pg18-feat ,pg18-lang ,pg18-type ,pg18-util ,pg18-func ,pg18-admin ,pg18-stat ,pg18-sec ,pg18-fdw ,pg18-sim ,pg18-etl]
#----------------------------------------------#
# ETCD : DCS 服务
#----------------------------------------------#
etcd:
hosts:
10.10.10.10: { etcd_seq: 1 }
vars:
etcd_cluster: etcd
etcd_safeguard: false
#----------------------------------------------#
# MINIO : 备份存储
#----------------------------------------------#
minio:
hosts:
10.10.10.10: { minio_seq: 1 }
vars:
minio_cluster: minio
minio_users:
- { access_key: pgbackrest ,secret_key: S3User.Backup ,policy: pgsql }
- { access_key: s3user_meta ,secret_key: S3User.Meta ,policy: meta }
- { access_key: s3user_data ,secret_key: S3User.Data ,policy: data }
#----------------------------------------------#
# DOCKER & APP
#----------------------------------------------#
app:
hosts: { 10.10.10.10: {} }
vars:
docker_enabled: true
app: pgadmin
apps:
pgadmin:
conf:
PGADMIN_DEFAULT_EMAIL: admin@pigsty.cc
PGADMIN_DEFAULT_PASSWORD: pigsty
bytebase:
conf:
BB_DOMAIN: http://ddl.pigsty
BB_PGURL: "postgresql://dbuser_bytebase:DBUser.Bytebase@10.10.10.10:5432/bytebase?sslmode=prefer"
#----------------------------------------------#
# REDIS 示例
#----------------------------------------------#
redis-ms:
hosts: { 10.10.10.10: { redis_node: 1 , redis_instances: { 6379: { }, 6380: { replica_of: '10.10.10.10 6379' } } } }
vars: { redis_cluster: redis-ms ,redis_password: 'redis.ms' ,redis_max_memory: 64MB }
#==============================================================#
# 全局参数
#==============================================================#
vars:
version: v4.0.0
admin_ip: 10.10.10.10
region: default # 使用默认上游镜像
certbot_sign: false # 启用 certbot 签发 HTTPS 证书
certbot_email: your@email.com # 接收证书过期通知的邮箱
infra_portal:
home : { domain: i.pigsty }
pgadmin : { domain: adm.pigsty ,endpoint: "${admin_ip}:8885" }
bytebase : { domain: ddl.pigsty ,endpoint: "${admin_ip}:8887" }
minio : { domain: m.pigsty ,endpoint: "${admin_ip}:9001" ,scheme: https ,websocket: true }
#----------------------------------------------#
# NODE
#----------------------------------------------#
nodename_overwrite: false
node_tune: oltp
node_etc_hosts:
- '${admin_ip} i.pigsty sss.pigsty'
- '${admin_ip} adm.pigsty ddl.pigsty repo.pigsty supa.pigsty'
node_repo_modules: local # 使用本地软件源
node_repo_remove: true
#----------------------------------------------#
# PGSQL
#----------------------------------------------#
pg_version: 18
pg_conf: oltp.yml
pg_safeguard: false
pg_packages: [ pgsql-main, pgsql-common ]
#----------------------------------------------#
# BACKUP
#----------------------------------------------#
pgbackrest_method: minio # 使用 MinIO 作为备份存储
pgbackrest_repo:
local:
path: /pg/backup
retention_full_type: count
retention_full: 2
minio:
type: s3
s3_endpoint: sss.pigsty
s3_region: us-east-1
s3_bucket: pgsql
s3_key: pgbackrest
s3_key_secret: S3User.Backup
s3_uri_style: path
path: /pgbackrest
storage_port: 9000
storage_ca_file: /etc/pki/ca.crt
block: y # 块级增量备份
bundle: y # 小文件打包
cipher_type: aes-256-cbc # AES 加密
cipher_pass: pgBackRest
retention_full_type: time
retention_full: 14 # 保留 14 天全量备份
#----------------------------------------------#
# PASSWORD
#----------------------------------------------#
grafana_admin_password: pigsty
grafana_view_password: DBUser.Viewer
pg_admin_password: DBUser.DBA
pg_monitor_password: DBUser.Monitor
pg_replication_password: DBUser.Replicator
patroni_password: Patroni.API
haproxy_admin_password: pigsty
minio_secret_key: S3User.MinIO
etcd_root_password: Etcd.Root
配置解读
rich 模板是 Pigsty 的完整功能展示配置,适合需要深入体验所有功能的用户。
适用场景:
- 需要构建本地软件源的离线环境
- 需要使用 MinIO 作为 PostgreSQL 备份存储
- 需要预先规划多个业务数据库和用户
- 需要运行 Docker 应用(pgAdmin、Bytebase 等)
- 希望了解配置参数完整用法的学习者
与 meta 的主要区别:
- 启用本地软件源构建(
repo_enabled: true) - 启用 MinIO 存储备份(
pgbackrest_method: minio) - 预装 TimescaleDB、pg_wait_sampling 等额外扩展
- 包含详细的参数注释,便于理解配置含义
- 预置高可用集群存根配置(pg-test)
注意事项:
- ARM64 架构部分扩展不可用,请按需调整
- 构建本地软件源需要较长时间和较大磁盘空间
- 默认密码为示例密码,生产环境务必修改