This is the multi-page printable view of this section. .
Release
- 1: Pigsty v2.7.0
- 2: Pigsty v2.6.0
- 3: Pigsty v2.5.1
- 4: Pigsty v2.5.0
- 5: Pigsty v2.4.1
- 6: Pigsty v2.4.0
- 7: Pigsty v2.3.1
- 8: Pigsty v2.3.0
- 9: Pigsty v2.2.0
- 10: Pigsty v2.1.0
- 11: Pigsty v2.0.2
- 12: Pigsty v2.0.1
- 13: Pigsty v2.0.0
- 14: Pigsty v1.5.1
- 15: Pigsty v1.5.0
- 16: Pigsty v1.4.1
- 17: Pigsty v1.4.0
- 18: Pigsty v1.3.1
- 19: Pigsty v1.3.0
- 20: Pigsty v1.2.0
- 21: Pigsty v1.1.1
- 22: Pigsty v1.1.0
- 23: Pigsty v1.0.1
- 24: Pigsty v1.0.0
- 25: Pigsty v0.9.1
- 26: Pigsty v0.9.0
- 27: Pigsty v0.8.0
- 28: Pigsty v0.7.0
- 29: Pigsty v0.6.0
- 30: Pigsty v0.5.2
- 31: Pigsty v0.5.1
- 32: Pigsty v0.5.0
- 33: Pigsty v0.4.0
- 34: Pigsty v0.3.0
- 35: Pigsty v0.0.5
- 36: Pigsty v0.0.4
- 37: Pigsty v0.0.3
- 38: Pigsty v0.2.0
- 39: Pigsty v0.1.0
Every stable numbered Pigsty tag through v4.5.0 has its own x.y.z page, including patch releases. Each record reconciles the long-form Pigsty release article, the historical About / Release Note archive, and the corresponding GitHub release or tag, then links the exact source comparison. Planned versions remain drafts until an actual tag is published.
1 - Pigsty v2.7.0
Highlights
New powerful extensions, especially Rust/pgrx-developed ones:
- pg_search v0.7.0: BM25 full-text search
- pg_lakehouse v0.7.0: Object storage/table format query engine
- pg_analytics v0.6.1: Accelerated analytics
- pg_graphql v1.5.4: GraphQL support
- pg_jsonschema v0.3.1: JSON Schema validation
- wrappers v0.3.1: Supabase FDW collection
- pgmq v1.5.2: Lightweight message queue
- pg_tier v0.0.3: S3 cold storage tiering
- pg_vectorize v0.15.0: RAG wrapper
- pg_later v0.1.0: Async SQL execution
- pg_idkit v0.2.3: UUID generation
- plprql v0.1.0: PRQL language
- pgsmcrypto v0.1.0: Chinese SM cryptography
- pg_tiktoken v0.0.1: OpenAI token counting
- pgdd v0.5.2: Catalog metadata via SQL
C/C++ extensions:
- parquet_s3_fdw 1.1.0: S3 Parquet lakehouse
- plv8 3.2.2: JavaScript stored procedures
- md5hash 1.0.1: Native MD5 hash type
- pg_tde 1.0-alpha: Experimental encryption
- pg_dirtyread 2.6: Read dead tuples
New Features
- Allow Pigsty to run in Docker VM images
- ARM64 packages for INFRA & PGSQL modules on Ubuntu and EL
- New installer script with Cloudflare download, version specification, better prompts
- PGSQL PITR dashboard for PITR observability
- Guardrails to prevent running playbooks on unmanaged nodes
- Per-distro config files: el7, el8, el9, debian11, debian12, ubuntu20, ubuntu22
Docker App Templates
- Odoo: Open-source ERP
- Jupyter: Jupyter Notebook container
- PolarDB: “Domestic database” for compliance
- Supabase: Updated to latest GA
- Bytebase: Using
latesttag - pg_exporter: Updated Docker examples
Software Upgrades
- PostgreSQL 16.3
- Patroni 3.3.0
- pgBackRest 2.51
- VIP-Manager v2.5.0
- HAProxy 2.9.7
- Grafana 10.4.2
- Prometheus 2.51
- Loki & Promtail: 3.0.0 (Warning: breaking changes!)
- Alertmanager 0.27.0
- BlackBox Exporter 0.25.0
- Node Exporter 1.8.0
- pgBackRest Exporter 0.17.0
- DuckDB 0.10.2
- etcd 3.5.13
- minio-20240510014138 / mcli-20240509170424
- pev2 v1.8.0 -> v1.11.0
- pgvector 0.6.1 -> 0.7.0
- pg_tle: v1.3.4 -> v1.4.0
- hydra: v1.1.1 -> v1.1.2
- duckdb_fdw: v1.1.0 recompiled for libduckdb 0.10.2
- pg_bm25 0.5.6 -> pg_search 0.7.0
- pg_analytics: 0.5.6 -> 0.6.1
- pg_graphql: 1.5.0 -> 1.5.4
- pg_net 0.8.0 -> 0.9.1
- pg_sparse (deprecated)
Bug Fixes
- Fixed variable whitespace in pg_exporters role
- Fixed
minio_clusternot commented in global config - Fixed EL7 template
postgis34should bepostgis33 - Fixed EL8
python3.11-cryptographydependency renamed topython3-cryptography - Fixed
/pg/bin/pg-rolenot getting OS username in non-interactive shell - Fixed
/pg/bin/pg-pitrnot prompting-X-Poptions correctly
API Changes
- New
node_write_etc_hostsparameter for controlling/etc/hostswrites - New
prometheus_sd_dirparameter for Prometheus static discovery directory - Configure script adds
-x|--proxyfor writing proxy info - Stopped parsing Nginx log detail labels in Promtail/Loki to avoid label cardinality explosion
- Using Alertmanager API v2 instead of v1
- Using
/pg/cert/ca.crtinstead of/etc/pki/ca.crtin PGSQL module
Offline Package Checksums
Sources
2 - Pigsty v2.6.0
Highlights
- PostgreSQL 16 is now the default major version (16.2)
- New ParadeDB extensions:
pg_analytics,pg_bm25, andpg_sparse - New DuckDB and
duckdb_fdwsupport - Global Cloudflare CDN https://repo.pigsty.io and China CDN https://repo.pigsty.cc
Configuration Changes
- Replaced
node_repo_methodwithnode_repo_modules, removednode_repo_local_urls - Temporarily disabled Grafana unified alerting to avoid “Database Locked” errors
- New
node_repo_modulesparameter to specify upstream repos added to nodes - Removed
node_local_repo_urls, functionality replaced bynode_repo_modules&repo_upstream - Removed
node_repo_methodparameter, functionality replaced bynode_repo_modules - Added new
localsource inrepo_upstream, used vianode_repo_modulesto replacenode_local_repo_urls - Reorganized
node_default_packages,infra_packages,pg_packages,pg_extensionsdefaults - When replacing
repo_upstream.baseurl, if EL8/9 PGDG minor-version-specific repos are available, usemajor.minorinstead ofmajorfor $releasever for better minor version compatibility
Software Upgrades
- Grafana 10.3
- Prometheus 2.47
- node_exporter 1.7.0
- HAProxy 2.9.5
- Loki / Promtail 2.9.4
- minio-20240216110548 / mcli-20240217011557
- etcd 3.5.11
- Redis 7.2.4
- Bytebase 2.13.2
- DuckDB 0.10.0
- FerretDB 1.19
- Metabase: new Docker app template
PostgreSQL Extensions
- PostgreSQL minor version upgrades: 16.2, 15.6, 14.11, 13.14, 12.18
- PostgreSQL 16: now promoted to default major version
- pg_exporter 0.6.1: security fix
- Patroni 3.2.2
- pgBadger 12.4
- pgBackRest 2.50
- vip-manager 2.3.0
- PostGIS 3.4.2
- TimescaleDB 2.14.1
- Vector extension PGVector 0.6.0: added parallel HNSW index creation
- New extension duckdb_fdw v1.1 for reading/writing DuckDB data
- New extension pgsql-gzip for Gzip compression/decompression v1.0.0
- New extension pg_sparse for efficient sparse vectors (ParadeDB) v0.5.6
- New extension pg_bm25 for high-quality BM25 full-text search (ParadeDB) v0.5.6
- New extension pg_analytics with SIMD + columnar storage for analytics (ParadeDB) v0.5.6
- Upgraded AIML extension pgml to v2.8.1 with PG 16 support
- Upgraded columnar extension hydra to v1.1.1 with PG 16 support
- Upgraded graph extension age to v1.5.0 with PG 16 support
- Upgraded GraphQL extension pg_graphql to v1.5.0 for Supabase support
Sources
3 - Pigsty v2.5.1
Following PostgreSQL v16.1, v15.5, 14.10, 13.13, 12.17, 11.22 routine minor version updates.
All important PostgreSQL 16 extensions are now in place (added pg_repack and timescaledb support).
- Software updates:
- PostgreSQL to v16.1, v15.5, 14.10, 13.13, 12.17, 11.22
- Patroni v3.2.0
- PgBackrest v2.49
- Citus 12.1
- TimescaleDB 2.13
- Grafana v10.2.0
- FerretDB 1.15
- SealOS 4.3.7
- Bytebase 2.11.1
- Removed
monitorschema prefix from PGCAT dashboard queries (allowing users to installpg_stat_statementselsewhere) - New
wool.ymlconfig template designed for Alibaba Cloud free 99 ECS single-node - Added
python3-jmespathpackage for EL9 to fix jmespath missing after Ansible dependency update during bootstrap
Sources
4 - Pigsty v2.5.0
Highlights
- Ubuntu / Debian support: bullseye, bookworm, jammy, focal
- CDN
repo.pigsty.ccsoftware repository providing RPM/DEB package downloads - Anolis OS support (compatible with EL 8.8)
- PostgreSQL 16 replaces PostgreSQL 14 as the alternative primary supported version
- New PGSQL Exporter / PGSQL Patroni dashboards, redesigned PGSQL Query dashboard
- Extension updates:
- PostGIS upgraded to 3.4 (EL8/EL9), EL7 remains on PostGIS 3.3
- Removed
pg_embeddingas developer discontinued maintenance, recommendpgvectorinstead - New extension (EL): Point cloud plugin
pointcloudsupport, natively available on Ubuntu - New extensions (EL):
imgsmlr,pg_similarity,pg_bigmfor search - Recompiled
pg_filedumpas PG version-independent package - Added
hydracolumnar storage extension,citusno longer installed by default
- Software updates:
- Grafana to v10.1.5
- Prometheus to v2.47
- Promtail/Loki to v2.9.1
- Node Exporter to v1.6.1
- Bytebase to v2.10.0
- Patroni to v3.1.2
- pgbouncer to v1.21.0
- pg_exporter to v0.6.0
- pgbackrest to v2.48.0
- pgbadger to v12.2
- pg_graphql to v1.4.0
- pg_net to v0.7.3
- FerretDB to v0.12.1
- SealOS to 4.3.5
- Supabase support to
20231013070755
Ubuntu Support Notes
Pigsty supports Ubuntu 22.04 (jammy) and 20.04 (focal) LTS versions with corresponding offline packages.
Compared to EL systems, some parameter defaults need explicit adjustment. See ubuntu.yml for details:
repo_upstream: Adjusted for Ubuntu/Debian package namesrepo_packages: Adjusted for Ubuntu/Debian package namesnode_repo_local_urls: Defaults to['deb [trusted=yes] http://${admin_ip}/pigsty ./']node_default_packages:zlib->zlib1g,readline->libreadline-devvim-minimal->vim-tiny,bind-utils->dnsutils,perf->linux-tools-generic- Added
aclpackage to ensure Ansible permissions work correctly
infra_packages: All packages with_replaced by-,postgresql-client-16replacespostgresql16pg_packages: Ubuntu conventionally uses-instead of_, no need to manually installpatroni-etcdpg_extensions: Extension names differ from EL, Ubuntu lackspasswordcheck_cracklibpg_dbsu_uid: Ubuntu DEB packages don’t specify explicit UID, manual specification required, Pigsty defaults to543
API Changes
Default value changes:
-
repo_modulesnow defaults toinfra,node,pgsql,redis,minio, enabling all upstream sources -
repo_upstreamchanged, now adds Pigsty Infra/MinIO/Redis/PGSQL modular software sources -
repo_packageschanged, removed unusedkarma,mtail,dellhw_exporter, removed PG14 main extensions, added PG16 main extensions, added virtualenv package -
node_default_packageschanged, now installspython3-pipby default -
pg_libs:timescaledbremoved from shared_preload_libraries, no longer auto-enabled by default -
pg_extensionschanged, Citus no longer installed by default,passwordcheck_cracklibinstalled by default, EL8,9 PostGIS default version upgraded to 3.4 -
All Patroni templates remove
wal_keep_sizeparameter by default to avoid triggering Patroni 3.1.1 bug, functionality covered bymin_wal_size
Sources
5 - Pigsty v2.4.1
Supabase & PostgresML support, and other new extensions!
Highlights
- Supabase support: run open-source Firebase alternative with external postgres managed by Pigsty: example config
- PostgresML support: Run LLMs, vector operations, classical Machine Learning in Postgres.
- GraphQL support:
pg_graphqlreflects a GraphQL schema from the existing SQL schema. - Async HTTP Client support
pg_netenables asynchronous (non-blocking) HTTP/HTTPS requests with SQL - JWT support:
pgjwtis the PostgreSQL implementation of JWT (JSON Web Tokens) - Vault support:
vaultcan store encrypted secrets in the Vault - New component
pg_filedumpfor pg 14 & 15, low-level data recovery tool for PostgreSQL - New extension
hydrathe columnar available for PG 13 - 15. (not packaged due to conflict with citus columnar) - Reduce offline packages size for el9 400MB by removing
proj-data* - Bump FerretDB version to v1.10
- Fix patroni v3.1.1 broken issue
Sources
6 - Pigsty v2.4.0
Highlights
- PostgreSQL 16 GA released, Pigsty provides support
- Monitor cloud databases: RDS for PostgreSQL and PolarDB with brand-new PGRDS dashboards
- Commercial support and consulting services officially launched. First LTS version released, providing up to 5 years of support for subscribers
- New extension: Apache AGE, openCypher graph query engine on PostgreSQL
- New extension: zhparser, full text search for Chinese language
- New extension: pg_roaringbitmap, roaring bitmap for PostgreSQL
- New extension: pg_embedding, HNSW alternative to pgvector
- New extension: pg_tle, admin/manage stored procedure extensions
- New extension: pgsql-http, issue HTTP requests with SQL interface
- Additional extensions: pg_auth_mon, pg_checksums, pg_failover_slots, pg_readonly, postgresql-unit, pg_store_plans, pg_uuidv7, set_user
- Redis improvements: Sentinel monitoring support, automatic HA configuration for primary-replica clusters
API Changes
- New parameter:
REDIS.redis_sentinel_monitor— specify list of primaries monitored by Sentinel cluster
Bug Fixes
- Fixed missing
uidwhen registering datasources in Grafana 10.1
Sources
7 - Pigsty v2.3.1
Highlights
pgvectorupdated to 0.5 with HNSW algorithm support- PostgreSQL 16 RC1 support (el8/el9)
- Added SealOS to default packages for quick Kubernetes cluster deployment
Bug Fixes
- Fixed
infra.repo.repo_pkgtask: downloads could be affected by existing/www/pigstycontent whenrepo_packagescontains*wildcards - Changed
vip_dns_suffixdefault from.vipto empty string, so cluster name itself becomes the default Node cluster L2 VIP modprobe watchdogandchown watchdogifpatroni_watchdog_modeisrequired- When
pg_dbsu_sudo=limitandpatroni_watchdog_mode=required, grant database dbsu sudo for:/usr/bin/sudo /sbin/modprobe softdog: Ensure softdog kernel module enabled when starting Patroni service/usr/bin/sudo /bin/chown {{ pg_dbsu }} /dev/watchdog: Ensure watchdog ownership correct when starting Patroni service
Documentation Updates
- Added updated content to English documentation
- Added simplified Chinese built-in docs, fixed Chinese docs on pigsty.cc
Software Updates
- PostgreSQL 16 RC1 for EL8/EL9
- PGVector 0.5.0 with HNSW index support
- TimescaleDB 2.11.2
- Grafana 10.1.0
- Loki & Promtail 2.8.4
- Redis Stack 7.2 on el7/8
- mcli-20230829225506 / minio-20230829230735
- FerretDB 1.9
- SealOS 4.3.3
- pgBadger 1.12.2
Sources
8 - Pigsty v2.3.0
Highlights
- INFRA: Added NODE/PGSQL VIP monitoring support
- PGSQL: Fixed PostgreSQL CVE-2023-39417 via minor upgrades: 15.4, 14.9, 13.12, 12.16, and Patroni v3.1.0
- NODE: Allow users to bind L2 VIP to node clusters using
keepalived - REPO: Pigsty Yum repo optimized, site-wide HTTPS by default:
get.pigsty.ccanddemo.pigsty.cc - APP: Upgraded
app/bytebaseto v2.6.0,app/ferretdbto v1.8; added new app template: NocoDB, open-source Airtable - REDIS: Upgraded to v7.2, redesigned Redis dashboards
- MONGO: Added basic support via FerretDB 1.8
- MYSQL: Added Prometheus/Grafana/CA stubs for future integration
API Changes
Added new parameter group NODE.NODE_VIP with 8 new parameters:
NODE.VIP.vip_enabled: Enable VIP on this node cluster?NODE.VIP.vip_address: Node VIP address in IPv4 format, required if VIP enabledNODE.VIP.vip_vrid: Required, integer 1-255, must be unique within same VLANNODE.VIP.vip_role: master/backup, defaults to backup, used as initial roleNODE.VIP.vip_preempt: Optional, true/false, defaults to false, enable VIP preemptionNODE.VIP.vip_interface: Node VIP network interface to listen on, eth0 by defaultNODE.VIP.vip_dns_suffix: Node VIP DNS name suffix, defaults to .vipNODE.VIP.vip_exporter_port: Keepalived exporter listen port, defaults to 9650
Sources
9 - Pigsty v2.2.0
Highlights
- Monitoring Dashboard Overhaul: https://demo.pigsty.cc
- Vagrant Sandbox Redesign: libvirt support with new config templates
- Pigsty EL Yum Repos: Consolidated scattered RPMs, simplified installation/build process
- OS Compatibility: Added UOS-v20-1050e support
- New Config Template: 42-node production simulation configuration
- Unified official PGDG Citus packages (el7)
Software Upgrades
- PostgreSQL 16 beta2
- Citus 12 / PostGIS 3.3.3 / TimescaleDB 2.11.1 / PGVector 0.44
- Patroni 3.0.4 / pgBackRest 2.47 / pgBouncer 1.20
- Grafana 10.0.3 / Loki/Promtail/logcli 2.8.3
- etcd 3.5.9 / HAProxy v2.8.1 / Redis v7.0.12
- MinIO 20230711212934 / mcli 20230711233044
Bug Fixes
- Fixed Docker group permission issue 29434bd
- Made
infraOS user group supplementary rather than primary - Fixed Redis Sentinel systemd service auto-enable state 5c96feb
- Relaxed
bootstrap&configurechecks, especially when/etc/redhat-releasedoesn’t exist - Upgraded to Grafana 10, fixing Grafana 9.x CVE-2023-1410
- Added PG 14-16 command tags and error codes to CMDB
pglogschema
API Changes
New variable:
INFRA.NGINX.nginx_exporter_enabled: Users can now disable nginx_exporter by setting this parameter
Default value changes:
repo_modules:node,pgsql,infra: Redis now provided by pigsty-el repo, no longer needsredismodulerepo_upstream:- Added
pigsty-el: EL version-independent RPMs: grafana, minio, pg_exporter, etc. - Added
pigsty-misc: EL version-specific RPMs: redis, prometheus stack, etc. - Removed
citus: PGDG now has complete EL7-EL9 Citus 12 support - Removed
remi: Redis now provided by pigsty-el repo
- Added
repo_packages: Consolidated package lists (see source for details)repo_url_packages:node_default_packages: Updated package listinfra_packages: Updated package listPGSERVICEin.pigstyreplaced withPGDATABASE=postgres, allowing users to access specific instances from admin node using just IP address
Directory structure changes:
bin/dnsandbin/sshmoved tovagrant/directory
Sources
10 - Pigsty v2.1.0
Highlights
- PostgreSQL 16 beta support, plus support for versions 12-15
- Added PGVector extension support for PG 12-15 for storing AI embeddings
- Added 6 additional default extension panel/datasource plugins for Grafana
- Added
bin/profilescript for remote profiling and flame graph generation - Added
bin/validatefor validatingpigsty.ymlconfiguration file correctness - Added
bin/repo-addfor quickly adding Yum repo definitions to nodes - PostgreSQL 16 observability: added
pg_stat_iosupport and related monitoring dashboards
Software Upgrades
- PostgreSQL 15.3, 14.8, 13.11, 12.15, 11.20, and 16 beta1
- pgBackRest 2.46 / pgbouncer 1.19
- Redis 7.0.11
- Grafana v9.5.3
- Loki / Promtail / Logcli 2.8.2
- Prometheus 2.44
- TimescaleDB 2.11.0
- minio-20230518000536 / mcli-20230518165900
- Bytebase v2.2.0
Improvements
- When adding local user public keys, all
id*.pubfiles are now added to remote machines (e.g., keys generated with elliptic curve algorithms)
Sources
11 - Pigsty v2.0.2
Highlights
Use out-of-the-box pgvector to store AI Embeddings, index, and retrieve vectors.
- New extension
pgvector - MinIO CVE-2023-28432 fix
Changes
- New extension
pgvectorfor storing AI embeddings and vector similarity search - Fixed MinIO CVE-2023-28432, using new policy API from 20230324
- Added dynamic reload command for DNSMASQ systemd service
- Updated PEV version to v1.8
- Updated Grafana version to v9.4.7
- Updated MinIO and MCLI versions to 20230324
- Updated Bytebase version to v1.15.0
- Updated monitoring dashboards and fixed dead links
- Updated Aliyun Terraform template, default to RockyLinux 9
- Using Grafana v9.4 Provisioning API
- Added asciinema videos for many admin tasks
- Fixed EL8 PostgreSQL broken dependencies: removed anonymizer_15 faker_15 pgloader
Sources
12 - Pigsty v2.0.1
Security improvements and bug fixes for v2.0.0.
Improvements
- New pig logo to comply with PostgreSQL trademark policy
- Grafana upgraded to v9.4 with better UI and bug fixes
- Patroni upgraded to v3.0.1 with bug fixes
- Grafana systemd service file reverted to rpm default
- Use slower
copyinstead ofrsyncfor Grafana dashboard sync, more reliable - Bootstrap now restores default repo files after execution
- Added asciinema videos for various admin tasks
- Security enhancement mode: restricted monitoring user permissions
- New config template:
dual.ymlfor two-node deployment - Enable
log_connectionsandlog_disconnectionsincrit.ymltemplate - Enable
$lib/passwordcheckinpg_libsincrit.ymltemplate - Explicitly grant
pg_monitorrole monitoring view permissions - Remove default
dbrole_readonlyfromdbuser_monitorto restrict monitoring user permissions - Patroni now listens on
{{ inventory_hostname }}instead of0.0.0.0 pg_listennow controls postgres/pgbouncer listen address${ip},${lo},${vip}placeholders now available inpg_listen- Aliyun terraform image upgraded from centos 7.9 to Rocky Linux 9
- Bytebase upgraded to v1.14.0
Bug Fixes
- Added missing advertise address for alertmanager
- Fixed missing
pg_modevariable when creating database users withbin/pgsql-user - Added
-a passwordoption for Redis cluster join task inredis.yml - Added missing default value in
infra-rm.yml.remove infra datatask - Fixed prometheus monitoring target definition file owner to
prometheususer - Use admin user instead of root to delete DCS metadata
- Fixed issue caused by Grafana 9.4 bug: missing Meta datasource
Sources
13 - Pigsty v2.0.0
Highlights
- Perfect integration of PostgreSQL 15, PostGIS 3.3, Citus 11.2, TimescaleDB 2.10 — distributed geospatial time-series hyper-converged database
- Major OS compatibility improvements: supports EL7, 8, 9, plus RHEL, CentOS, Rocky, OracleLinux, AlmaLinux compatible distros
- Security improvements: self-signed CA, global SSL network encryption, scram-sha-256 password auth, AES-encrypted backups, redesigned HBA rule system
- Patroni upgraded to 3.0, providing native HA Citus distributed cluster support, FailSafe mode enabled by default — no fear of DCS failures causing global primary outages
- Out-of-the-box PITR support based on pgBackRest, default support for local filesystem and dedicated MinIO/S3 cluster backups
- New
ETCDmodule: independently deployable, easy scaling, built-in monitoring and HA, completely replacing Consul as DCS for HA PG - New
MINIOmodule: independently deployable, multi-disk multi-node support, S3 local replacement, also for centralized PostgreSQL backup repository - Significantly simplified configuration parameters, usable without defaults; templates auto-adjust host and PG parameters based on machine specs, HBA/service definitions more concise and universal
- License changed from Apache License 2.0 to AGPL 3.0 due to Grafana and MinIO dependencies
Compatibility
- Supports EL7, EL8, EL9 major versions with corresponding offline packages, default dev/test environment upgraded from EL7 to EL9
- Supports more EL-compatible Linux distros: RHEL, CentOS, RockyLinux, AlmaLinux, OracleLinux, etc.
- Source and offline package naming conventions changed — version, OS version, and architecture now reflected in package names
PGSQL: PostgreSQL 15.2, PostGIS 3.3, Citus 11.2, TimescaleDB 2.10 now work together harmoniouslyPGSQL: Patroni upgraded to 3.0 as PGSQL HA component- ETCD now default DCS, replacing Consul, eliminating one Consul Agent failure point
- vip-manager upgraded to 2.1 using ETCDv3 API, completely deprecating ETCDv2 API; same for Patroni
- Native HA Citus distributed cluster support using fully open-source Citus 11.2
- FailSafe mode enabled by default — no fear of DCS failures causing global primary outages
PGSQL: pgBackrest v2.44 introduced for out-of-the-box PostgreSQL PITR- Default backup repo on primary’s backup directory, rolling two-day recovery window
- Default alternative repo is dedicated MinIO/S3 cluster, rolling two-week recovery window; local use requires enabling MinIO module
ETCDnow an independently deployed module with complete scale-out/in solution and monitoringMINIOnow an independently deployed module, multi-disk multi-node support, S3 local replacement, also for centralized backup repositoryNODEmodule now includeshaproxy,docker,node_exporter,promtailcomponentschronydnow replacesntpdas default NTP service on all nodes- HAPROXY now part of
NODErather thanPGSQL-exclusive, can expose services via NodePort PGSQLmodule can now use dedicated centralized HAPROXY cluster for unified external service
INFRAmodule now includesdnsmasq,nginx,prometheus,grafana,lokicomponents- DNSMASQ server in Infra module enabled by default, added as default DNS server for all nodes
- Added
blackbox_exporterfor host PING probing,pushgatewayfor batch job metrics lokiandpromtailnow use Grafana’s default packages with official Grafana Echarts panel plugin- Monitoring support for PostgreSQL 15’s new observability points, added Patroni monitoring
- Software version upgrades
- PostgreSQL 15.2 / PostGIS 3.3 / TimescaleDB 2.10 / Citus 11.2
- Patroni 3.0 / Pgbouncer 1.18 / pgBackRest 2.44 / vip-manager 2.1
- HAProxy 2.7 / Etcd 3.5 / MinIO 20230131022419 / mcli 20230128202938
- Prometheus 2.42 / Grafana 9.3 / Loki & Promtail 2.7 / Node Exporter 1.5
Security
- Complete local self-signed CA:
pigsty-cafor issuing internal component certificates - User creation/password changes no longer leave traces in log files
- Nginx enables SSL support by default (for HTTPS, trust
pigsty-cain your system or use Chromethisisunsafe) - ETCD fully enables SSL encryption for client and peer communication
- PostgreSQL SSL support added and enabled by default, management connections use SSL
- Pgbouncer SSL support added, disabled by default for performance
- Patroni SSL support added, management API restricted to local and admin node access with password auth
- PostgreSQL default password auth changed from
md5toscram-sha-256 - Pgbouncer auth query support added for dynamic connection pool user management
- pgBackRest uses
AES-256-CBCencryption by default for remote centralized backup storage - High-security template provided: enforces global SSL and requires admin certificate login
- All default HBA rules now explicitly defined in config files
Maintainability
- Existing config templates auto-adjust optimizations based on machine specs (CPU/memory/storage)
- Postgres/Pgbouncer/Patroni/pgBackRest log directories now dynamically configurable: default
/pg/log/<type>/ - Original IP placeholder
10.10.10.10replaced with dedicated variable${admin_ip}, referenceable in multiple places for switching backup admin nodes regioncan be specified to use upstream mirrors from different regions for faster package downloads- Finer-grained upstream source addresses now allowed based on EL version, architecture, and region
- Terraform templates for Alibaba Cloud and AWS China provided for one-click EC2 VM provisioning
- Multiple Vagrant sandbox templates provided:
meta,full,el7/8/9,minio,build,citus - New dedicated playbook:
pgsql-monitor.ymlfor monitoring existing Postgres instances or RDS - New dedicated playbook:
pgsql-migration.ymlfor seamless logical replication migration to Pigsty-managed clusters - Series of dedicated shell utilities added, wrapping common ops operations
- All Ansible roles optimized for simplicity, readability, and maintainability — usable without default parameters
- Additional Pgbouncer parameters can be defined at business database/user level
API Changes
Pigsty v2.0 has extensive changes: 64 new parameters, 13 removed, 17 renamed.
New Parameters
INFRA.META.admin_ip: Primary meta node IP addressINFRA.META.region: Upstream mirror region: default|china|europeINFRA.META.os_version: Enterprise Linux version: 7,8,9INFRA.CA.ca_cn: CA Common Name, default pigsty-caINFRA.CA.cert_validity: Certificate validity, default 20 yearsINFRA.REPO.repo_enabled: Build local yum repo on infra node?INFRA.REPO.repo_upstream: Upstream yum repo definition listINFRA.REPO.repo_home: Local yum repo home directory, usually same as nginx_home ‘/www’INFRA.NGINX.nginx_ssl_port: HTTPS listen portINFRA.NGINX.nginx_ssl_enabled: Enable nginx HTTPS?INFRA.PROMETHEUS.alertmanager_endpoint: Alertmanager endpoint (ip|domain):port formatNODE.NODE_TUNE.node_hugepage_ratio: Memory hugepage ratio, default 0 (disabled)NODE.HAPROXY.haproxy_service: List of haproxy services to exposePGSQL.PG_ID.pg_mode: pgsql cluster mode: pgsql,citus,gpsqlPGSQL.PG_BUSINESS.pg_dbsu_password: dbsu password, empty string means no dbsu passwordPGSQL.PG_INSTALL.pg_log_dir: postgres log directory, default/pg/data/logPGSQL.PG_BOOTSTRAP.pg_storage_type: SSD|HDD, default SSDPGSQL.PG_BOOTSTRAP.patroni_log_dir: patroni log directory, default/pg/logPGSQL.PG_BOOTSTRAP.patroni_ssl_enabled: Use SSL for patroni RestAPI?PGSQL.PG_BOOTSTRAP.patroni_username: patroni rest api usernamePGSQL.PG_BOOTSTRAP.patroni_password: patroni rest api password (important: change this)PGSQL.PG_BOOTSTRAP.patroni_citus_db: Citus database managed by patroni, default postgresPGSQL.PG_BOOTSTRAP.pg_max_conn: postgres max connections,autouses recommended valuePGSQL.PG_BOOTSTRAP.pg_shmem_ratio: postgres shared memory ratio, default 0.25, range 0.1~0.4PGSQL.PG_BOOTSTRAP.pg_rto: Recovery Time Objective, failover ttl, default 30sPGSQL.PG_BOOTSTRAP.pg_rpo: Recovery Point Objective, max 1MB data loss by defaultPGSQL.PG_BOOTSTRAP.pg_pwd_enc: Password encryption algorithm: md5|scram-sha-256PGSQL.PG_BOOTSTRAP.pgbouncer_log_dir: pgbouncer log directory, default/var/log/pgbouncerPGSQL.PG_BOOTSTRAP.pgbouncer_auth_query: If enabled, query pg_authid for biz users instead of populating user listPGSQL.PG_BOOTSTRAP.pgbouncer_sslmode: pgbouncer client SSL: disable|allow|prefer|require|verify-ca|verify-fullPGSQL.PG_BOOTSTRAP.pg_service_provider: Dedicated haproxy node group name, or empty for local nodePGSQL.PG_BOOTSTRAP.pg_default_service_dest: Default service destination if svc.dest=‘default’PGSQL.PG_BACKUP.pgbackrest_enabled: Enable pgbackrest?PGSQL.PG_BACKUP.pgbackrest_clean: Remove pgbackrest data during init?PGSQL.PG_BACKUP.pgbackrest_log_dir: pgbackrest log directory, default/pg/logPGSQL.PG_BACKUP.pgbackrest_method: pgbackrest backup repo method: local or minioPGSQL.PG_BACKUP.pgbackrest_repo: pgbackrest backup repo configPGSQL.PG_DNS.pg_dns_suffix: pgsql dns suffix, default emptyPGSQL.PG_DNS.pg_dns_target: auto, primary, vip, none, or ad hoc ipETCD.etcd_seq: etcd instance identifier, requiredETCD.etcd_cluster: etcd cluster and group name, default etcdETCD.etcd_safeguard: Prevent purging running etcd instances?ETCD.etcd_clean: Clean existing etcd during init?ETCD.etcd_data: etcd data directory, default /data/etcdETCD.etcd_port: etcd client port, default 2379ETCD.etcd_peer_port: etcd peer port, default 2380ETCD.etcd_init: etcd initial cluster state: new or existingETCD.etcd_election_timeout: etcd election timeout, default 1000msETCD.etcd_heartbeat_interval: etcd heartbeat interval, default 100msMINIO.minio_seq: minio instance identifier, requiredMINIO.minio_cluster: minio cluster name, default minioMINIO.minio_clean: Clean minio during init? default falseMINIO.minio_user: minio OS user, defaultminioMINIO.minio_node: minio node name patternMINIO.minio_data: minio data directory, use {x…y} for multiple drivesMINIO.minio_domain: minio external domain, defaultsss.pigstyMINIO.minio_port: minio service port, default 9000MINIO.minio_admin_port: minio console port, default 9001MINIO.minio_access_key: root access key, defaultminioadminMINIO.minio_secret_key: root secret key, defaultminioadminMINIO.minio_extra_vars: extra environment variables for minio serverMINIO.minio_alias: alias for local minio deploymentMINIO.minio_buckets: list of minio buckets to createMINIO.minio_users: list of minio users to create
Removed Parameters
INFRA.CA.ca_homedir: CA home directory, now fixed to/etc/pki/INFRA.CA.ca_cert: CA certificate filename, now fixed toca.keyINFRA.CA.ca_key: CA key filename, now fixed toca.keyINFRA.REPO.repo_upstreams: Replaced byrepo_upstreamPGSQL.PG_INSTALL.pgdg_repo: Now handled by node playbooksPGSQL.PG_INSTALL.pg_add_repo: Now handled by node playbooksPGSQL.PG_IDENTITY.pg_backup: Unused and conflicted with partial namesPGSQL.PG_IDENTITY.pg_preflight_skip: No longer used, replaced bypg_idDCS.dcs_name: Removed due to etcd usageDCS.dcs_servers: Replaced by ad hoc groupetcdDCS.dcs_registry: Removed due to etcd usageDCS.dcs_safeguard: Replaced byetcd_safeguardDCS.dcs_clean: Replaced byetcd_clean
Renamed Parameters
nginx_upstream->infra_portalrepo_address->repo_endpointpg_hostname->node_id_from_pgpg_sindex->pg_grouppg_services->pg_default_servicespg_services_extra->pg_servicespg_hba_rules_extra->pg_hba_rulespg_hba_rules->pg_default_hba_rulespgbouncer_hba_rules_extra->pgb_hba_rulespgbouncer_hba_rules->pgb_default_hba_rulesvip_mode->pg_vip_enabledvip_address->pg_vip_addressvip_interface->pg_vip_interfacenode_packages_default->node_default_packagesnode_packages_meta->infra_packagesnode_packages_meta_pip->infra_packages_pipnode_data_dir->node_data
Special thanks to Italian user @alemacci for contributions on SSL encryption, backup, multi-OS distro adaptation, and adaptive parameter templates!
Sources
14 - Pigsty v1.5.1
Highlights
IMPORTANT: Fixed the issue where CREATE INDEX|REINDEX CONCURRENTLY in PG14.0-14.3 could corrupt index data.
Pigsty v1.5.1 upgrades the default PostgreSQL version to 14.4. Strongly recommend updating ASAP.
Software Upgrades
- postgres upgraded to 14.4
- haproxy upgraded to 2.6.0
- grafana upgraded to 9.0.0
- prometheus upgraded to 2.36.0
- patroni upgraded to 2.1.4
Bug Fixes
- Fixed TYPO in
pgsql-migration.yml - Removed PID config item from HAProxy configuration
- Removed i686 packages from default packages
- Enabled all Systemd Redis Services by default
- Enabled all Systemd Patroni Services by default
API Changes
grafana_databaseandgrafana_pgurlmarked as deprecated API, will be removed in future versions
New Applications
- wiki.js: Build local Wikipedia with Postgres
- FerretDB: Provide MongoDB API using Postgres
Sources
15 - Pigsty v1.5.0
Highlights
- Complete Docker support: enabled by default on meta node with many out-of-the-box software templates: bytebase, pgadmin, pgweb, postgrest, minio, etc.
- Infrastructure self-monitoring: Nginx, ETCD, Consul, Prometheus, Grafana, Loki self-monitoring
- CMDB upgrade: compatibility improvements, supports Redis cluster/Greenplum cluster metadata, config file visualization
- Service discovery improvements: Consul can auto-discover all monitoring targets and integrate with Prometheus
- Better cold backup support: default scheduled backup tasks,
pg_probackupbackup tool, one-click delayed replica creation - ETCD can now be used as PostgreSQL/Patroni DCS service, as an alternative to Consul
- Redis playbook/role improvements: now allows init and remove operations for individual Redis instances, not just entire Redis nodes
Monitoring System
Dashboards
- CMDB Overview: visualize Pigsty CMDB Inventory
- DCS Overview: view Consul and ETCD cluster monitoring metrics
- Nginx Overview: view Pigsty Web access metrics and logs
- Grafana Overview: Grafana self-monitoring
- Prometheus Overview: Prometheus self-monitoring
- INFRA Dashboard redesigned to reflect overall infrastructure status
Monitoring Architecture
- Now allows Consul for service discovery (when all services are registered to Consul)
- All Infra components now enable self-monitoring and register to Prometheus and Consul via
infra_registerrole - Metrics collector pg_exporter updated to v0.5.0, new features:
scaleanddefault, allowing metric multiplication factors and default values pg_bgwriter,pg_wal,pg_query,pg_db,pgbouncer_stattime-related metrics now uniformly scaled to seconds from milliseconds/microseconds- Related counter metrics in
pg_tablenow have default value0instead ofNaN pg_classmetrics collector removed by default, related metrics added topg_tableandpg_indexcollectorspg_table_sizemetrics collector now enabled by default with 300-second cache time
Deployment
- New optional package
docker.tgzwith common app images: Pgadmin, Pgweb, Postgrest, ByteBase, Kong, Minio, etc. - New ETCD role: automatically deploys ETCD service on DCS Server nodes and integrates with monitoring
pg_dcs_typespecifies DCS service for PG high-availability: Consul (default), ETCD (alternative)node_crontabparameter for configuring node scheduled tasks like database backups, VACUUM, statistics collection- New
pg_checksumoption: when enabled, database cluster enables data checksums (previously onlycrittemplate enabled by default) - New
pg_delayoption: when instance is Standby Cluster Leader, this parameter configures a delayed replica - New
pg_probackuppackage, default rolereplicatornow has backup-related function permissions - Redis deployment split into two parts: Redis node and Redis instance,
redis_portparameter controls specific instances - Loki and Promtail now installed via
fpm-built RPM packages - DCS3 config template now uses a 3-node
pg-metacluster with a single-node delayed replica
Software Upgrades
- PostgreSQL upgraded to 14.3
- Redis upgraded to 6.2.7
- PG Exporter upgraded to 0.5.0
- Consul upgraded to 1.12.0
- vip-manager upgraded to v1.0.2
- Grafana upgraded to v8.5.2
- Loki & Promtail upgraded to v2.5.0, using fpm packaging
Bug Fixes
- Fixed Loki and Promtail default config filename issues
- Fixed Loki and Promtail environment variable expansion issues
- Complete English documentation translation and revision; documentation JS resources now served locally, no internet access required
API Changes
New Parameters
node_data_dir: Main data mount path, created if doesn’t existnode_crontab_overwrite: Overwrite/etc/crontabinstead of appendingnode_crontab: Node crontab content to append or overwritenameserver_enabled: Enable nameserver on this infra node?prometheus_enabled: Enable prometheus on this infra node?grafana_enabled: Enable grafana on this infra node?loki_enabled: Enable loki on this infra node?docker_enable: Enable docker on this infra node?consul_enable: Enable consul server/agent?etcd_enable: Enable etcd server/client?pg_checksum: Enable pg cluster data checksums?pg_delay: Application delay when backup cluster leader replays replication
Parameter Redesign
*_clean is now a boolean parameter for cleaning existing instances during init.
*_safeguard is also a boolean parameter to prevent cleaning running instances during any playbook execution.
pg_exists_action->pg_cleanpg_disable_purge->pg_safeguarddcs_exists_action->dcs_cleandcs_disable_purge->dcs_safeguard
Parameter Renames
node_ntp_config->node_ntp_enablednode_admin_setup->node_admin_enablednode_admin_pks->node_admin_pk_listnode_dns_hosts->node_etc_hosts_defaultnode_dns_hosts_extra->node_etc_hostsnode_dns_server->node_dns_methodnode_local_repo_url->node_repo_local_urlsnode_packages->node_packages_defaultnode_extra_packages->node_packagesnode_packages_meta->node_packages_metanode_meta_pip_install->node_packages_meta_pipnode_sysctl_params->node_tune_paramsapp_list->nginx_indexesgrafana_plugin->grafana_plugin_methodgrafana_cache->grafana_plugin_cachegrafana_plugins->grafana_plugin_listgrafana_git_plugin_git->grafana_plugin_githaproxy_admin_auth_enabled->haproxy_auth_enabledpg_shared_libraries->pg_libsdcs_type->pg_dcs_type
Sources
16 - Pigsty v1.4.1
Bug fixes / Docker support / English documentation
Docker is now enabled by default on the meta node, allowing you to spin up various software.
Bug Fixes
- Fixed Promtail & Loki configuration variable issues
- Fixed Grafana legacy alerts
- Disabled nameserver by default
- Renamed pg-alias.sh for Patroni shortcuts
- Disabled exemplars queries for all dashboards
- Fixed Loki data directory issue
- Changed
autovacuum_freeze_max_agefrom 100000000 to 1000000000
Sources
17 - Pigsty v1.4.0
Architecture
- Decoupled system into 4 major categories:
INFRA,NODES,PGSQL,REDIS, making Pigsty clearer and more extensible - Single-node deployment =
INFRA+NODES+PGSQL - PGSQL cluster deployment =
NODES+PGSQL - Redis cluster deployment =
NODES+REDIS - Other database deployment =
NODES+ xxx (e.g.,MONGO,KAFKA…)
Accessibility
- CDN for mainland China
- Use
bash -c "$(curl -fsSL http://get.pigsty.cc/latest)"to get latest source - New
downloadscript to download and extract packages
Monitoring Enhancements
- Split monitoring into 5 categories:
INFRA,NODES,REDIS,PGSQL,APP - Logging enabled by default
lokiandpromtailnow enabled by default, with prebuilt loki-rpm
- Model and labels
- Added hidden
dsprometheus datasource variable to all dashboards - Added
iplabel to all metrics, used as join key between database and node metrics
- Added hidden
- INFRA Monitoring
- INFRA main dashboard: INFRA Overview
- Added Log dashboard: Logs Instance
- PGLOG Analysis and PGLOG Session now treated as sample Pigsty APPs
- NODES Monitoring Application
- Pigsty can be used standalone as host monitoring software
- Includes 4 core dashboards: Nodes Overview & Nodes Cluster & Nodes Instance & Nodes Alert
- New identity variables for nodes:
node_clusterandnodename
- PGSQL Monitoring Enhancements
- New PGSQL Cluster, simplified and focused on what matters in a cluster
- New dashboard PGSQL Databases for cluster-level object monitoring
- PGSQL Alert dashboard now focuses solely on PGSQL alerts
- PGSQL Shard added to PGSQL
- Redis Monitoring Enhancements
- Added node monitoring to all Redis dashboards
MatrixDB Support
- MatrixDB (Greenplum 7) can be deployed via
pigsty-matrix.ymlplaybook - MatrixDB monitoring dashboard: PGSQL MatrixDB
- Added sample configuration:
pigsty-mxdb.yml
Software Upgrades
- PostgreSQL 14.2
- PostGIS 3.2
- TimescaleDB 2.6
- Patroni 2.1.3 (Prometheus metrics + failover slots)
- HAProxy 2.5.5 (fixed stats errors, more metrics)
- PG Exporter 0.4.1 (timeout parameters, etc.)
- Grafana 8.4.4
- Prometheus 2.33.4
- Greenplum 6.19.4 / MatrixDB 4.4.0
- Loki now provided as RPM package instead of ZIP archive
Bug Fixes
- Removed Patroni’s Consul dependency, making migration to new Consul clusters easier
- Fixed Prometheus bin/new script default data directory path
- Added restart seconds in vip-manager systemd service
- Fixed typos and tasks
API Changes
New Variables
node_cluster: Identity variable for node clusternodename_overwrite: If set, nodename will be set to node’s hostnamenodename_exchange: Exchange node hostnames between play hosts (in/etc/hosts)node_dns_hosts_extra: Extra static DNS records easily overridable by single instance/clusterpatroni_enabled: If disabled, postgres & patroni bootstrap not executed duringpostgresrolepgbouncer_enabled: If disabled, pgbouncer not started duringpostgresrolepg_exporter_params: Extra URL parameters for pg_exporter when generating monitoring target URLpg_provision: Boolean variable indicating whether to execute provisioning part ofpostgresroleno_cmdb: Used forinfra.ymlandinfra-demo.ymlplaybooks, won’t create CMDB on meta node
Sources
18 - Pigsty v1.3.1
Monitoring
- PGSQL & PGCAT dashboard improvements
- Optimized PGCAT Instance & PGCAT Database layout
- Added key metric panels to PGSQL Instance dashboard (consistent with PGSQL Cluster)
- Added table/index bloat panels to PGCAT Database, removed PGCAT Bloat dashboard
- Added index information to PGCAT Database dashboard
- Fixed broken panels in Grafana 8.3
- Added Redis index to Nginx homepage
Deployment
- New
infra-demo.ymlplaybook for one-click bootstrap - New
infra-jupyter.ymlplaybook for optional JupyterLab server - New
infra-pgweb.ymlplaybook for optional PGWeb server - Added
pgalias on meta node for starting PostgreSQL cluster from admin user - Adjusted
max_locks_per_transactionsin all Patroni config templates pertimescaledb-tunerecommendations - Added
citus.node_conninfo: 'sslmode=prefer'to config templates for SSL-free Citus usage - Added all extensions (except pgrouting) from PGDG14 to package list
- Upgraded node_exporter to v1.3.1
- Added PostgREST v9.0.0 for generating REST APIs from PostgreSQL schemas
Bug Fixes
- Grafana security vulnerability fix (upgraded to v8.3.1, details)
- Fixed
pg_instance&pg_serviceissues inregisterrole when starting playbook mid-run - Fixed Nginx homepage rendering on hosts without
pg_clustervariable - Fixed style issues when upgrading to Grafana 8.3.1
Sources
19 - Pigsty v1.3.0
Redis Support
| Feature | Description |
|---|---|
| Redis Deployment | Standalone, Sentinel, and Cluster modes |
| Redis Monitoring | Overview, Cluster, and Instance dashboards |
PGCAT Overhaul
| Dashboard | Description |
|---|---|
| PGCAT Instance | New instance-level catalog dashboard |
| PGCAT Database | New database-level catalog dashboard |
| PGCAT Table | Redesigned table-level dashboard |
PGSQL Enhancements
| Dashboard | Improvements |
|---|---|
| PGSQL Cluster | Added 10 key metric panels |
| PGSQL Instance | Added 10 key metric panels |
| PGSQL Service | Simplified and redesigned |
| Cross-references | Navigation links between PGCAT and PGSQL dashboards |
Monitor Deployment
- Grafana datasources auto-register during monitor-only deployment
Software Upgrades
- PostgreSQL 13 added to default package list
- PostgreSQL upgraded to 14.1 as default
- Added Greenplum RPM packages and dependencies
- Added Redis RPM and source packages
- Added
perfas default package
Sources
20 - Pigsty v1.2.0
Core Features
- Default to PostgreSQL 14
- Default to TimescaleDB 2.5 extension
- TimescaleDB and PostGIS enabled by default in CMDB
Monitor-Only Mode
- Monitor existing PostgreSQL instances via connection URL only
- pg_exporter deployed on local meta node
- New PGSQL Cluster Monly dashboard for remote clusters
Software Upgrades
- Grafana upgraded to 8.2.2
- pev2 upgraded to v0.11.9
- Promscale upgraded to 0.6.2
- PgWeb upgraded to 0.11.9
- New extensions: pglogical, pg_stat_monitor, orafce
Improvements
- Auto-detect machine specs and use appropriate
node_tuneandpg_conftemplates - Reworked bloat-related views, exposing more information
- Removed TimescaleDB and Citus internal monitoring
- Added
pgsql-audit.ymlplaybook for creating audit reports - All config templates simplified to two: auto and demo
Bug Fixes
- pgbouncer_exporter resource owner changed to
{{ pg_dbsu }}instead of postgres - Fixed pg_exporter duplicate metrics on pg_table/pg_index during
REINDEX TABLE CONCURRENTLY
Sources
21 - Pigsty v1.1.1
- Replaced TimescaleDB
apacheversion withtimescaleversion - Upgraded Prometheus to 2.30
- Fixed pg_exporter config directory owner issue (changed to
{{ pg_dbsu }})
Upgrade Notes
The main change in this version is TimescaleDB — using the official TimescaleDB License (TSL) version to replace the Apache License v2 version from the PGDG repository.
22 - Pigsty v1.1.0
Feature Enhancements
- Added
pg_dummy_filesizeto create filesystem space placeholder - Major homepage redesign
- Added JupyterLab integration
- Added PGWeb console integration
- Added PgBadger support
- Added PEV2 support, execution plan visualization tool
- Added pglog tooling
Software Upgrades
- PostgreSQL upgraded to v13.4 (with official PG14 support)
- pgbouncer upgraded to v1.16 (metric definitions updated)
- Grafana upgraded to v8.1.4
- Prometheus upgraded to v2.29
- node_exporter upgraded to v1.2.2
- HAProxy upgraded to v2.1.1
- Consul upgraded to v1.10.2
- vip-manager upgraded to v1.0.1
API Changes
nginx_upstreamnow has different structure (incompatible)- New config entry:
app_list, navigation entries rendered to homepage - New config entry:
docs_enabled, setup local docs on default server - New config entry:
pev2_enabled, setup local PEV2 tool - New config entry:
pgbadger_enabled, create log summary/report directory - New config entry:
jupyter_enabled, enable JupyterLab server on meta node - New config entry:
jupyter_username, specify user to run JupyterLab - New config entry:
jupyter_password, specify default password for JupyterLab - New config entry:
pgweb_enabled, enable PGWeb server on meta node - New config entry:
pgweb_username, specify user to run PGWeb - Renamed internal flag
repo_existtorepo_exists repo_addressdefault value changed topigstyinstead ofyum.pigsty- HAProxy access point changed to
http://pigstyinstead ofhttp://h.pigsty
Sources
23 - Pigsty v1.0.1
2021-09-14
Documentation Update
- Chinese documentation now available
- Machine-translated English documentation now available
Bug Fixes
pgsql-removeno longer removes primary instances- Replaced pg_instance with pg_cluster + pg_seq (Start-At-Task could fail when pg_instance undefined)
- Removed Citus from default shared preload libraries (Citus forces max_prepared_transaction to non-zero)
- Added ssh sudo check in
configure(now usesssh -t sudo -n lsfor permission check) - Fixed
pg-backupscript typo
Optimizations
- Removed NTP sanity check alert (duplicate of ClockSkew)
- Removed collector.systemd to reduce overhead
Sources
24 - Pigsty v1.0.0
Monitoring System Overhaul
- New dashboards on Grafana 8.0
- New metric definitions, added PG14 support
- Simplified labeling system: static label set (job, cls, ins)
- New alerting rules and derived metrics
- Monitor multiple databases simultaneously
- Real-time log search & csvlog analysis
- Richly-linked dashboards, click through for drill-down/roll-up
Architecture Changes
- Added Citus and TimescaleDB to default installation
- Added PostgreSQL 14beta2 support
- Simplified HAProxy admin page indexing
- Decoupled infrastructure and PGSQL by adding new role
register - Added new roles
lokiandpromtailfor logging - Added new role
environto setup environment for admin user on meta node - Default to
staticservice discovery for Prometheus (instead ofconsul) - Added new role
removefor graceful cluster and instance removal - Upgraded Prometheus and Grafana provisioning logic
- Upgraded to vip-manager 1.0, node_exporter 1.2, pg_exporter 0.4, Grafana 8.0
- Every database on every instance auto-registers as a Grafana datasource
- Moved Consul registration to
registerrole, changed Consul service tags - Added cmdb.sql as pg-meta baseline definition (CMDB & PGLOG)
Application Framework
- Extensible framework for new features
- Core app: PostgreSQL monitoring system
pgsql - Core app: PostgreSQL catalog explorer
pgcat - Core app: PostgreSQL csvlog analyzer
pglog - Added sample app
covidfor COVID-19 data visualization - Added sample app
isdfor ISD weather data visualization
Other
- Added JupyterLab for full Python data science environment
- Added
vonng-echarts-panelto restore ECharts support - Added wrapper scripts
createpg,createdb,createuser - Added CMDB dynamic inventory scripts:
load_conf.py,inventory_cmdb,inventory_conf - Removed obsolete playbooks:
pgsql-monitor,pgsql-service,node-remove, etc.
API Changes
- New variable:
node_meta_pip_install - New variable:
grafana_admin_username - New variable:
grafana_database - New variable:
grafana_pgurl - New variable:
pg_shared_libraries - New variable:
pg_exporter_auto_discovery - New variable:
pg_exporter_exclude_database - New variable:
pg_exporter_include_database - Variable renamed:
grafana_url→grafana_endpoint
Bug Fixes
- Fixed default timezone Asia/Shanghai (CST) issue
- Fixed nofile limits for pgbouncer & patroni
- pgbouncer user list and database list now generated when running tag
pgbouncer
Sources
25 - Pigsty v0.9.1
Update package version:
- PostgreSQL 13.3
- Grafana 7.5.6
Add configure support.
Now install pigsty with 3 steps: download, configure and install:
WoW! just like old time!
Sources
26 - Pigsty v0.9.0
New Stuff
- One-liner install:
curl -fsSL https://pigsty.cc/install | bashbootstraps everything. pigsty-cli: wraps the common Ansible playbooks so you stop copy-pasting command lines. Still beta but already handy.- Loki + Promtail: Postgres, pgbouncer, and Patroni logs stream into Grafana with metrics extracted from log volume.
infra-loki.ymlandpgsql-promtail.ymlwire things up. - Binary exporters: grab monitoring binaries with
files/get_bin.shif you don’t want to rely on repos. - Flight mode: once the meta node is initialized you can run
bin/upgradeto switch into a dynamic inventory using data stored insidepg-meta.
Fixes
- Cleaned up HAProxy health checks that were flooding PG and Patroni logs with
connection resetnoise. - Patroni logs now carry readable timestamps (no more millisecond fragments) and explicit time zones.
- Monitoring queries run by
dbuser_monitorlog only when slower than 1s. - Grafana role refactor keeps the API stable, but uses CDN-hosted plugin bundles for faster installs.
- Pgbouncer user creation now handles md5 passwords properly.
- Hardened SQL templates for DB/user creation, fixed DNS orchestration edge cases, and tidied Makefile typos.
Knob Changes
node_disable_swapdefaults tofalse; Pigsty no longer nukes swap by default.node_sysctl_paramsstops writing kernel tunables unless you explicitly set them.grafana_plugin: installnow means “download from CDN if cache is missing.”repo_url_packagespulls extra RPMs from the Pigsty CDN so installs inside China work out of the box.proxy_env.no_proxyincludes the CDN endpoints.grafana_customizedefaults tofalse; flip it on only if you have the Pigsty Pro UI bits.node_admin_pk_currentadds your current~/.ssh/id_rsa.pubto the admin account.- Loki/Promtail knobs:
loki_clean,loki_data_dir,promtail_enabled,promtail_clean,promtail_port,promtail_status_file,promtail_send_url.
Sources
27 - Pigsty v0.8.0
v0.8 finalizes the provisioning API. Services are completely rebuilt: instead of a hard-coded primary/replica pair you can now declare any number of services, plug in HAProxy, swap in an external load balancer, or hand off to a custom VIP controller. Everything else in the supply chain stabilizes on top of this model.
Service API
The old vip and haproxy knobs moved under the service role. pg_services (plus pg_services_extra) define each exposed endpoint—name, ports, selectors, health checks, weights, and balancer hints. Selectors are JMESPath filters over cluster members, and optional selector_backup pools handle fail-in when replicas are gone. Out of the box we ship primary, replica, default, and offline service definitions; swap dst_port to point at postgres, pgbouncer, or any number.
The HAProxy stanza keeps per-service tuning (maxconn, algorithm, timeouts) while VIP config distinguishes L2/L4 implementations so you can drop Pigsty behind an existing load balancer.
Database Interface Tweaks
Locales can now be split into lc_collate and lc_ctype so extensions like pg_trgm behave with non-C collations. The rest of the pg_databases schema stays the same—owner/template/encoding/connlimit/revokeconn/pgbouncer/comment—just with better defaults and inline comments.
Sources
28 - Pigsty v0.7.0
Pigsty v0.7 focuses on plugging existing fleets into Pigsty’s observability stack. The new monitor-only flow lets you drop Pigsty dashboards onto databases that were provisioned elsewhere, and the declarative APIs for databases and users got a much needed redesign.
Highlights
- Monitor-only deployment flow (
monly) with its own playbook. - Split static Prometheus target files by cluster for easier hand-editing.
- New helper playbooks:
pgsql-createuser.ymlandpgsql-createdb.ymlfor live clusters. - Database and user schema definitions now cover owner/template/locale knobs plus per-role capabilities.
- Bug fixes for extension schema typos and pgbouncer reload.
API Changes
New options:
Removed option:
Structures affected: pg_default_roles, pg_users, pg_databases. Also fixed the pg_default_privilegs typo → pg_default_privileges.
Monitor-Only Mode
When you just want Pigsty’s observability without touching the way databases were provisioned, run the monly flow. Infra still gets bootstrapped on the meta node via ./infra.yml, but database nodes skip the provisioning playbooks and only run ./pgsql-monitor.yml. Config gets much shorter—most of the time you only keep infra vars and a handful of monitoring knobs.
Database Provisioning Interface
pg_databases now exposes owner/template/encoding/locale/connlimit/allowconn knobs plus revokeconn (strip CONNECT from public) and inline comments. Use ./pgsql-createdb.yml -e pg_database=<name> to create or mutate live databases; the generated SQL lives inside /pg/tmp/pg-db-<name>.sql on the primary.
User Provisioning Interface
pg_users swapped username → name, groups → roles, and exploded options into discrete flags (login, superuser, createdb, createrole, inherit, replication, bypassrls, connlimit). Users can also get expire_at / expire_in timers plus pgbouncer defaults to false. Apply changes through ./pgsql-createuser.yml -e pg_user=<name> which renders /pg/tmp/pg-user-<name>.sql on the primary.
Sources
29 - Pigsty v0.6.0
Pigsty v0.6 responds to user feedback with a redesigned provisioning path plus a monitoring stack that can sit beside any managed PG fleet—even a MyBase cluster built elsewhere.
Bug Fixes
- Patroni no longer resets PG HBA on restart.
- Fixed copy typos and the default primary for the
pg-testsandbox cluster. - Patched the dashboard title typo on PG Overview.
Feature Work
- Monitoring supply chain overhaul: Prometheus can now run fully static, exporters accept
service_registrytoggles, andexporter_binary_installlets you drop binaries without hitting repos. Each exporter has its own*_enabledflag. - Prometheus static discovery is rendered straight from inventory, so you can graft Pigsty dashboards onto any PG-as-a-service footprint.
- HAProxy provisioning adds a global console at
h.pigsty, optional auth, fallback routing to the primary when all replicas die, and per-service weight tuning. - ACL defaults now include
dbrole_offlinefor slow-query/ETL workloads plus HBA rules that fence those workloads to marked nodes. - Component refresh: PostgreSQL 13.2, Prometheus 2.25, pg_exporter 0.3.2, node_exporter 1.1, Consul 1.9.3, and a faster ZJU PG mirror.
API Changes
New knobs:
Removed knobs:
Sources
30 - Pigsty v0.5.2
[!INFO]
This historical version is represented by its Git tag and source tree because no GitHub Release was published.
Highlights
- Made
pigsty.ymlthe default configuration and reorganized the standardsandbox.yml,infra.yml, andpgsql.ymlworkflows. - Split VIP management from HAProxy and added administrator authentication, traffic weights, and primary fallback controls.
- Added the nameserver step to the main playbook and refreshed the accompanying documentation.
v0.5.2 is a tagged maintenance snapshot without a separately authored GitHub Release body.
Sources
31 - Pigsty v0.5.1
[!INFO]
This historical version is represented by its Git tag and source tree because no GitHub Release was published.
Highlights
- Fixed PostgreSQL cluster and instance dashboard issues found after
v0.5.0. - Switched the default PostgreSQL mirror to Zhejiang University for faster regional installs.
- Refreshed the README and consolidated the
v0.5documentation snapshot.
v0.5.1 is a tagged maintenance snapshot without a separately authored GitHub Release body.
Sources
32 - Pigsty v0.5.0
Outline
- The official docs site (http://pigsty.cc/) is live.
- Database templating becomes fully declarative: define users, roles, databases, ACLs, extensions, and schemas in config.
- The default access model is refined and HBA management now comes straight from Pigsty instead of Patroni.
- Grafana provisioning switched from shoving a sqlite file to JSON provisioning via API.
- Added the
pg-cluster-replicationdashboard to the open bundle. - CentOS 7.8 offline bundle:
pkg.tgz.
Declarative Database Layouts
Multi-tenant headaches go away once everything is described as code. The new templates let you declare users, passwords, role hierarchies, DB defaults, extensions, schemas, and default privileges in YAML so a single config file replaces piles of runbooks. A stripped example:
33 - Pigsty v0.4.0
Pigsty v0.4 is our second public beta. The observability stack was rebuilt around Grafana 7.3, and ten curated dashboards became the default open-source payload. pg_exporter 0.3.1 drives metrics, and the alert wiring has been cleaned up for the new Grafana release.
Open-Source Dashboards
The OSS build now exposes ten high-signal Grafana panels: PG Overview, Cluster, Service, Instance, Database, Query, Table, Table Catalog, Table Detail, and Node. Even with a lean set it easily outclasses most “enterprise” PG monitoring suites.
Software Refresh
- PostgreSQL 13.1 + Patroni 2.0.1-4, with citus added to the repo
- pg_exporter upgraded to 0.3.1
- Grafana jumps to 7.3; a ton of compatibility fixes landed
- Prometheus 2.23 with the new UI enabled
- Consul 1.9 and related components updated
Other Improvements
- Updated Prometheus alert rules and Alertmanager info links
- Fixed a batch of bugs and typos
- Added a tiny backup script for quick dumps
Offline Bundle
Need an air-gapped install? Grab the CentOS 7.8 package bundle (pkg.tgz) from GitHub and deploy from local media.
Sources
34 - Pigsty v0.3.0
Pigsty v0.3.0 is the very first public preview. It packages a lean observability stack plus a reproducible offline bundle so you can spin up a real PostgreSQL lab without touching the public Internet.
Observability Stack
The open build ships eight curated Grafana dashboards: PG Overview, Cluster, Service, Instance, Database, Table Overview, Table Catalog, and a bare-metal Node view. Even with a trimmed set the coverage still crushes most “enterprise” monitoring stories.
Offline Bundle
Shipyard environments can fetch the CentOS 7.8 offline bundle directly from GitHub (pkg.tgz). Drop it on the management node and you have a deterministic install no matter how broken the mirrors are.
Sources
35 - Pigsty v0.0.5
[!INFO]
This historical version is represented by its Git tag and source tree because no GitHub Release was published.
Highlights
- Added an offline installation mode for environments without Internet access.
- Introduced a dedicated Consul role and refreshed repository bootstrap behavior.
- Added psql startup helpers, split PostgreSQL script tasks, and fixed HAProxy connection-reset noise.
This historical record is reconstructed from the v0.0.5 tag and its source comparison with v0.0.4.
Sources
36 - Pigsty v0.0.4
[!INFO]
This historical version is represented by its Git tag and source tree because no GitHub Release was published.
Highlights
- Split the former monolithic automation into dedicated Meta, Grafana, DNS, Nginx, and Prometheus roles.
- Added static-network handling and revised the local repository upstream policy.
- Expanded role documentation while keeping service registration templates aligned with the new layout.
This historical record is reconstructed from the v0.0.4 tag and its source comparison with v0.0.3.
Sources
37 - Pigsty v0.0.3
[!INFO]
This historical version is represented by its Git tag and source tree because no GitHub Release was published.
Highlights
- Improved the early Pigsty configuration interface and added the monitoring schema.
- Added a Kubernetes playbook and refined the PostgreSQL initialization defaults.
- Simplified the Vagrant bootstrap path and fixed several HAProxy, Patroni, and exporter registration details.
This historical tag predates the public release series. Its record is reconstructed from the tagged source and the commit history leading to v0.0.3.
Sources
38 - Pigsty v0.2.0
[!INFO]
This historical version is represented by its Git tag and source tree because no GitHub Release was published.
Highlights
- Refactored the infrastructure, node, repository, Patroni, PgBouncer, monitoring, and PostgreSQL initialization roles.
- Added etcd as a DCS option, production/test inventory layouts, and configurable database superuser support.
- Added Patroni pause handling, HAProxy 2.2 compatibility, and fixes for older CentOS 7 environments.
v0.2.0 predates curated GitHub Release notes. This record is reconstructed from the tagged source and the comparison with v0.1.0.
Sources
39 - Pigsty v0.1.0
[!INFO]
This historical version is represented by its Git tag and source tree because no GitHub Release was published.
Highlights
- Completed the first large-scale conversion from playbooks to reusable Ansible roles.
- Established the initial PostgreSQL primary/standby, PgBouncer, monitoring, HAProxy, Keepalived, and repository workflows.
- Validated the reorganized project in a production-like test environment.
v0.1.0 is an early engineering milestone rather than a curated GitHub Release. The notes are reconstructed from the tag and its commit history.