129 lines
7.1 KiB
YAML
129 lines
7.1 KiB
YAML
---
|
|
#==============================================================#
|
|
# File : fork.yml
|
|
# Desc : Pigsty 4 node for 4 pg forks
|
|
# Ctime : 2025-03-25
|
|
# Mtime : 2025-12-12
|
|
# Docs : https://pigsty.io/docs/conf
|
|
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
|
|
# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)
|
|
#==============================================================#
|
|
|
|
|
|
all:
|
|
|
|
children:
|
|
infra: { hosts: { 10.10.10.10: { infra_seq: 1 } }, vars: {} }
|
|
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }
|
|
|
|
# vanilla postgres cluster
|
|
pg-meta:
|
|
hosts:
|
|
10.10.10.10: { pg_seq: 1, pg_role: primary }
|
|
vars:
|
|
pg_cluster: pg-meta
|
|
pg_version: 18
|
|
pg_packages: [ pgsql-main, pgsql-common, citus, timescaledb ]
|
|
pg_libs: 'citus, timescaledb, pg_stat_statements, auto_explain'
|
|
pg_users: [{ name: dbuser_meta ,password: DBUser.Meta ,pgbouncer: true ,roles: [dbrole_admin] ,comment: pigsty admin user }]
|
|
pg_databases: [{ name: meta ,baseline: cmdb.sql ,comment: pigsty meta database ,schemas: [pigsty] ,extensions: [vector, postgis, timescaledb] }]
|
|
|
|
# ivorysql the oracle compatible postgres cluster
|
|
pg-ivory:
|
|
hosts:
|
|
10.10.10.11: { pg_seq: 1, pg_role: primary }
|
|
vars:
|
|
pg_mode: ivory
|
|
pg_cluster: pg-ivory
|
|
pg_version: 18
|
|
pg_packages: [ ivorysql, pgsql-common ]
|
|
pg_libs: 'liboracle_parser, pg_stat_statements, auto_explain'
|
|
pg_users: [{ name: dbuser_meta ,password: DBUser.Meta ,pgbouncer: true ,roles: [dbrole_admin] ,comment: pigsty admin user }]
|
|
pg_databases: [{ name: meta ,baseline: cmdb.sql ,comment: pigsty meta database ,schemas: [pigsty] }]
|
|
|
|
# babelfish the mssql compatible postgres cluster
|
|
pg-mssql:
|
|
hosts:
|
|
10.10.10.12: { pg_seq: 1, pg_role: primary }
|
|
vars:
|
|
pg_mode: mssql
|
|
pg_cluster: pg-mssql
|
|
pg_version: 15
|
|
node_repo_modules: local,mssql # extra repo from internet
|
|
pg_packages: [ wiltondb, pgsql-common, sqlcmd ] # wiltondb is conflict with pgsql-main
|
|
pg_users: [{name: dbuser_mssql ,password: DBUser.MSSQL ,superuser: true, pgbouncer: true ,roles: [dbrole_admin], comment: superuser & owner for babelfish }]
|
|
pg_databases:
|
|
- name: mssql
|
|
baseline: mssql.sql # init babelfish database & user
|
|
extensions:
|
|
- { name: uuid-ossp }
|
|
- { name: babelfishpg_common }
|
|
- { name: babelfishpg_tsql }
|
|
- { name: babelfishpg_tds }
|
|
- { name: babelfishpg_money }
|
|
- { name: pg_hint_plan }
|
|
- { name: system_stats }
|
|
- { name: tds_fdw }
|
|
owner: dbuser_mssql
|
|
parameters: { 'babelfishpg_tsql.migration_mode' : 'multi-db' }
|
|
comment: babelfish cluster, a MSSQL compatible pg cluster
|
|
pg_libs: 'babelfishpg_tds, pg_stat_statements, auto_explain' # add timescaledb to shared_preload_libraries
|
|
pg_hba_rules: # use md5 auth for mssql user, inserted between admin(500) and readonly(550)
|
|
- { user: dbuser_mssql ,db: mssql ,addr: intra ,auth: md5 ,order: 525 ,title: 'allow mssql dbsu intranet md5 access' }
|
|
pg_default_services: # route primary & replica service to mssql port 1433
|
|
- { name: primary ,port: 5433 ,dest: 1433 ,check: /primary ,selector: "[]" }
|
|
- { name: replica ,port: 5434 ,dest: 1433 ,check: /read-only ,selector: "[]" , backup: "[? pg_role == `primary` || pg_role == `offline` ]" }
|
|
- { name: default ,port: 5436 ,dest: postgres ,check: /primary ,selector: "[]" }
|
|
- { name: offline ,port: 5438 ,dest: postgres ,check: /replica ,selector: "[? pg_role == `offline` || pg_offline_query ]" , backup: "[? pg_role == `replica` && !pg_offline_query]" }
|
|
|
|
# polardb the aurora flavor postgres cluster
|
|
pg-polar:
|
|
hosts:
|
|
10.10.10.13: { pg_seq: 1, pg_role: primary }
|
|
vars:
|
|
pg_mode: polar
|
|
pg_cluster: pg-polar
|
|
pg_version: 15
|
|
pg_packages: [ polardb, pgsql-common ]
|
|
pg_default_roles: # default roles and users in postgres cluster
|
|
- { name: dbrole_readonly ,login: false ,comment: role for global read-only access }
|
|
- { name: dbrole_offline ,login: false ,comment: role for restricted read-only access }
|
|
- { name: dbrole_readwrite ,login: false ,roles: [dbrole_readonly] ,comment: role for global read-write access }
|
|
- { name: dbrole_admin ,login: false ,roles: [pg_monitor, dbrole_readwrite] ,comment: role for object creation }
|
|
- { name: postgres ,superuser: true ,comment: system superuser }
|
|
- { name: replicator ,superuser: true ,replication: true ,roles: [pg_monitor, dbrole_readonly] ,comment: system replicator } # <- superuser is required for replication
|
|
- { name: dbuser_dba ,superuser: true ,roles: [dbrole_admin] ,pgbouncer: true ,pool_mode: session, pool_connlimit: 16 ,comment: pgsql admin user }
|
|
- { name: dbuser_monitor ,roles: [pg_monitor] ,pgbouncer: true ,parameters: {log_min_duration_statement: 1000 } ,pool_mode: session ,pool_connlimit: 8 ,comment: pgsql monitor user }
|
|
|
|
vars:
|
|
version: v4.0.0 # pigsty version string
|
|
admin_ip: 10.10.10.10 # admin node ip address
|
|
region: default # upstream mirror region: default|china|europe
|
|
node_tune: oltp # node tuning specs: oltp,olap,tiny,crit
|
|
pg_conf: oltp.yml # pgsql tuning specs: {oltp,olap,tiny,crit}.yml
|
|
proxy_env: # global proxy env when downloading packages
|
|
no_proxy: "localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.myqcloud.com,*.tsinghua.edu.cn"
|
|
# http_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
|
|
# https_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
|
|
# all_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
|
|
infra_portal: # infra services exposed via portal
|
|
home : { domain: i.pigsty } # default domain name
|
|
|
|
repo_remove: true # remove existing repo on admin node during repo bootstrap
|
|
node_repo_remove: true # remove existing node repo for node managed by pigsty
|
|
repo_extra_packages: [ pg18-main, polardb, ivorysql, citus, timescaledb, sqlcmd ]
|
|
pg_version: 17 # default postgres version
|
|
|
|
#----------------------------------------------#
|
|
# PASSWORD : https://pigsty.io/docs/setup/security/
|
|
#----------------------------------------------#
|
|
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
|
|
... |