rich

功能丰富的单节点配置,构建本地软件源,下载所有扩展,启用 MinIO 备份,预置完整示例

配置模板 richmeta 的增强版本,专为需要完整功能体验的用户设计。

如果您希望构建本地软件源、使用 MinIO 存储备份、运行 Docker 应用,或需要预置业务数据库,可以使用此模板。


配置概览

  • 配置名称: rich
  • 节点数量: 单节点
  • 配置说明:功能丰富的单节点配置,在 meta 基础上增加本地软件源、MinIO 备份、完整扩展、Docker 应用示例
  • 适用系统:el8, el9, d12, u22, u24
  • 适用架构:x86_64(ARM 部分扩展不可用)
  • 相关配置:metademo

此模板相比 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 架构部分扩展不可用,请按需调整
  • 构建本地软件源需要较长时间和较大磁盘空间
  • 默认密码为示例密码,生产环境务必修改

最后修改 2025-12-21: udpate conf structure (2cd7d6e)