版本发布历史
Module:
Categories:
版本 | 发布时间 | 摘要 | 地址 |
---|---|---|---|
v3.1.0 | 2024-11-24 | PG 17 升默认大版本,配置简化,Ubuntu24与ARM 支持,Supabase,MinIO 改进 | v3.1.0 |
v3.0.4 | 2024-10-30 | PG 17 扩展,OLAP 全家桶,pg_duckdb | v3.0.4 |
v3.0.3 | 2024-09-27 | PostgreSQL 17,Etcd 运维优化,IvorySQL 3.4,PostGIS 3.5 | v3.0.3 |
v3.0.2 | 2024-09-07 | 精简安装模式,PolarDB 15支持,监控视图更新 | v3.0.2 |
v3.0.1 | 2024-08-31 | 例行问题修复,Patroni 4支持,Oracle兼容性改进 | v3.0.1 |
v3.0.0 | 2024-08-25 | 333个扩展插件,可插拔内核,MSSQL,Oracle,PolarDB 兼容性 | v3.0.0 |
v2.7.0 | 2024-05-20 | 扩展大爆炸,新增20+强力扩展插件,与多款Docker应用 | v2.7.0 |
v2.6.0 | 2024-02-28 | PG 16 作为默认大版本,引入 ParadeDB 与 DuckDB 等扩展 | v2.6.0 |
v2.5.1 | 2023-12-01 | 例行小版本更新,PG16重要扩展支持 | v2.5.1 |
v2.5.0 | 2023-09-24 | Ubuntu/Debian支持:bullseye, bookworm, jammy, focal | v2.5.0 |
v2.4.1 | 2023-09-24 | Supabase/PostgresML支持与各种新扩展:graphql, jwt, pg_net, vault | v2.4.1 |
v2.4.0 | 2023-09-14 | PG16,监控RDS,服务咨询支持,新扩展:中文分词全文检索/图/HTTP/嵌入等 | v2.4.0 |
v2.3.1 | 2023-09-01 | 带HNSW的PGVector,PG 16 RC1, 文档翻新,中文文档,例行问题修复 | v2.3.1 |
v2.3.0 | 2023-08-20 | 主机VIP, ferretdb, nocodb, MySQL存根, CVE修复 | v2.3.0 |
v2.2.0 | 2023-08-04 | 仪表盘 & 置备重做,UOS 兼容性 | v2.2.0 |
v2.1.0 | 2023-06-10 | 支持 PostgreSQL 12 ~ 16beta | v2.1.0 |
v2.0.2 | 2023-03-31 | 新增 pgvector 支持,修复 MinIO CVE | v2.0.2 |
v2.0.1 | 2023-03-21 | v2 错误修复,安全增强,升级 Grafana 版本 | v2.0.1 |
v2.0.0 | 2023-02-28 | 架构大升级,兼容性、安全性、可维护性显著增强 | v2.0.0 |
v1.5.1 | 2022-06-18 | Grafana 安全性修复 | v1.5.1 |
v1.5.0 | 2022-05-31 | Docker 应用程序支持 | v1.5.0 |
v1.4.1 | 2022-04-20 | 错误修复 & 英文文档完整翻译 | v1.4.1 |
v1.4.0 | 2022-03-31 | MatrixDB 支持,分离 INFRA/NODES/PGSQL/REDIS模块 | v1.4.0 |
v1.3.0 | 2021-11-30 | PGCAT 重整 & PGSQL 增强 & Redis Beta支持 | v1.3.0 |
v1.2.0 | 2021-11-03 | 默认 PGSQL 版本升级至 14 | v1.2.0 |
v1.1.0 | 2021-10-12 | 主页, JupyterLab, PGWEB, Pev2 & pgbadger | v1.1.0 |
v1.0.0 | 2021-07-26 | v1 正式版, 监控系统重整 | v1.0.0 |
v0.9.0 | 2021-04-04 | Pigsty 图形界面, 命令行界面, 日志集成 | v0.9.0 |
v0.8.0 | 2021-03-28 | 服务置备,定制对外暴露的数据库服务 | v0.8.0 |
v0.7.0 | 2021-03-01 | 仅监控部署,监控现有 PostgreSQL 实例 | v0.7.0 |
v0.6.0 | 2021-02-19 | 架构增强,将PG与Consul解耦 | v0.6.0 |
v0.5.0 | 2021-01-07 | 支持在配置中定义业务数据库/用户 | v0.5.0 |
v0.4.0 | 2020-12-14 | 支持 PostgreSQL 13,添加官方文档 | v0.4.0 |
v0.3.0 | 2020-10-22 | 虚拟机置备方案正式定稿 | v0.3.0 |
v0.2.0 | 2020-07-10 | PG监控系统第六版正式发布 | v0.2.0 |
v0.1.0 | 2020-06-20 | 在生产仿真测试环境中验证通过 | v0.1.0 |
v0.0.5 | 2020-08-19 | 离线安装模式:无需互联网访问即可交付 | v0.0.5 |
v0.0.4 | 2020-07-27 | 将 Ansible 剧本重构为 Role Refactor playbooks into ansible roles | v0.0.4 |
v0.0.3 | 2020-06-22 | 接口设计改进 | v0.0.3 |
v0.0.2 | 2020-04-30 | 首次提交 | v0.0.2 |
v0.0.1 | 2019-05-15 | 概念原型 | v0.0.1 |
v3.1.0
亮点特性
- PostgreSQL 17 现已成为默认使用的主要版本 (17.2)
- Ubuntu 24.04 系统支持
- arm 架构支持:EL9, Debian12, Ubuntu 22.04
- Supabase 一键自建,新的剧本
supabase.yml
- MinIO 最佳实践改进,配置模板与 Vagrant 模板
- 提供了一系列开箱即用的配置模板与文档说明。
- 允许在
configure
过程中使用-v|--version
指定使用的 PG 大版本。 - 调整 PG 默认插件策略:默认安装
pg_repack
,wal2json
以及pgvector
三个关键扩展。 - 大幅简化
repo_packages
本地软件源构建逻辑,允许在repo_packages
中使用软件包组别名 - 提供了 WiltonDB,IvorySQL,PolarDB 的软件源镜像,简化三者的安装。
- 默认启用数据库校验和。
- 修复 ETCD 与 MINIO 日志面板
软件升级
- PostgreSQL 17.2, 16.6, 15.10, 14.15, 13.18, 12.22
- PostgreSQL 扩展版本变动请参考:https://ext.pigsty.io
- Patroni 4.0.4
- MinIO 20241107 / MCLI 20241117
- Rclone 1.68.2
- Prometheus: 2.54.0 -> 3.0.0
- VictoriaMetrics 1.102.1 -> 1.106.1
- VictoriaLogs v0.28.0 -> 1.0.0
- vslogcli 1.0.0
- MySQL Exporter 0.15.1 -> 0.16.0
- Redis Exporter 1.62.0 -> 1.66.0
- MongoDB Exporter 0.41.2 -> 0.42.0
- Keepalived Exporter 1.3.3 -> 1.4.0
- DuckDB 1.1.2 -> 1.1.3
- etcd 3.5.16 -> 3.5.17
- tigerbeetle 16.8 -> 0.16.13
API变更
repo_upstream
: 针对每个具体的操作系统发行版生成默认值:roles/node_id/vars
repo_packages
: 允许使用package_map
中定义的别名。repo_extra_packages
: 新增未指定时的默认值,允许使用package_map
中定义的别名。pg_checksum
: 默认值修改为true
,默认打开。pg_packages
: 默认值修改为:postgresql, wal2json pg_repack pgvector, patroni pgbouncer pgbackrest pg_exporter pgbadger vip-manager
pg_extensions
: 默认值修改为空数组[]
。infra_portal
: 允许为home
服务器指定path
,替代默认的本地仓库路径nginx_home
(/www
)
校验和
e62f9ce9f89a58958609da7b234bf2f2 pigsty-v3.1.0.tgz
v3.0.4
特性
- 针对 PostgreSQL 17 编译了所有支持的 Pigsty 扩展插件
- 提供了全新的 OLAP 扩展支持:
pg_duckdb
与pg_parquet
- 简化并优化了最新版本 Supabase 自建的流程
- 新增参数
docker_image
,允许在 Docker 安装后自动拉取镜像。
扩展
欢迎查阅我们最新的 PostgreSQL 扩展目录: https://ext.pigsty.io
统计项 | 总计 | PGDG | PIGSTY | MISC | MISS | PG17 | PG16 | PG15 | PG14 | PG13 | PG12 |
---|---|---|---|---|---|---|---|---|---|---|---|
EL系统扩展 | 338 | 134 | 130 | 4 | 7 | 298 | 334 | 336 | 328 | 319 | 310 |
Deb系统扩展 | 326 | 109 | 143 | 74 | 19 | 290 | 322 | 324 | 316 | 307 | 300 |
RPM 软件包 | 313 | 122 | 129 | 4 | 6 | 275 | 309 | 311 | 303 | 294 | 285 |
DEB 软件包 | 298 | 93 | 142 | 64 | 19 | 264 | 294 | 296 | 288 | 279 | 272 |
版本升级
-
新的PGSQL扩展
-
升级与跟进PG扩展
- pg_search 0.11.0
- pg_analytics 0.2.0
- plv8 3.2.3
- supautils 2.5.0
- icu_ext 1.9.0
- redis_fdw 17
- pg_failover_slots 1.1.0
- pg_later 0.1.3
- plprql 1.0.0
- pg_vectorize 0.18.3
- unit 7.7 -> 7.9
- log_fdw 1.4
- pg_duckdb 0.1.0
- pg_graphql 1.5.9 (+17)
- pg_jsonschema 0.3.2 (+17)
- pgvectorscale 0.4.0 (+17)
- wrappers 0.4.3 +pg17
- pg_ivm 1.9
- pg_timeseries 0.1.6
- pgmq 1.4.4
- pg_protobuf 16 17
- pg_uuidv7 1.6
- pg_readonly
- pgddl 0.28
- pg_safeupdate
- pg_stat_monitor 2.1
- pg_profile 4.7
- system_stats 3.2
- pg_auth_mon 3.0
- login_hook 1.6
- logerrors 2.1.3
- pg-orphaned
- pgnodemx 1.7
- sslutils 1.4 (deb+pg16,17)
- timestamp9 (deb)
-
修复不支持PG16/17的扩展
- pg_mon
- pg_uri
- agg_for_vecs
- quantile
- lower_quantile
- pg_protobuf
- acl
- pg_emailaddr
- pg_zstd
- smlar
- geohash
- pgsmcrypto (+17)
- pg_tiktoken (+17)
- pg_idkit (+17)
-
基础设施软件包
- Grafana 11.3
- duckdb 1.1.2
- etcd 3.5.16
- ferretdb 1.24.0
- minio 20241013133411
- mcli 2024101313411
- pushgateway 1.10
- tigerbeetle 0.16.8
- mongodb_exporter 0.41.2
- redis_exporter 1.64.1
- vector 0.41.1
- vip-manager 2.7
- sealos 5.0.1
v3.0.3
特性
- 提供对最新发布的 PostgreSQL 17 支持。
- 优化了 etcd 配置,监控,与告警规则
- (Oracle兼容的)IvorySQL 3.4 支持,与 PostgreSQL 16.4 同步
版本升级
- PostGIS 3.5
- Grafana 11.2
- duckdb 1.1
- pg_search 0.10.2
- pg_analytics 0.1.4
v3.0.2
特性
- 精简安装模式:使用
slim.yml
进行最精简的 HA PGSQL 部署。 - PolarDB PG 15 的原生支持。
- 优化
monitor.pg_table_bloat
与monitor.pg_index_bloat
,使用安全定义包装函数规避 PolarDB 统计视图权限问题。 - 在各模块的监控注册阶段,尊重
prometheus_enabled
与grafana_enabled
配置选项,关闭时不再注册。 - 在
/etc/profile.d/pgsql.sh
中添加PGDATABASE
与PGPORT
环境变量,设置为pg_primary_db
(默认postgres
)
变更
- 在 Pigsty PGSQL 仓库中移除 PolarDB 11 与 CloudberryDB 1.5.4 的 RPM/APT 包。
- 使用专用的仓库分发 PolarDB 15 与 CloudberryDB 1.6.0 的 RPM/APT 包。
问题修复
- 修复 Redis 的
/etc/tmp.files.d
文件名错误。 - 在管理 pgbouncer 用户时,设置
PGHOST
与PGPORT
环境变量。 - 临时移除
pg_snakeoil
扩展支持,因为 EL8 上游源clamv
出现依赖缺失问题。 - 移除
pgsql
角色的 Notify / Handler,以兼容更老的 Ansible 2.9 版本。
v3.0.1
特性改进
- PolarDB Oracle 兼容性模式支持(需要第三方商业闭源内核)
- 使用 Oracle 兼容的 SQL 语法改写监控视图与相关 SQL 语句
- Patroni 4 支持与适配
- 新增扩展
pg_analytics
,通过 duckdb 为 PG 加装分析能力 - 添加新扩展:
odbc_fdw
与jdbc_fdw
,提供通用的外部数据源连接能力 - 仓库添加新内核
cloudberrydb
(Greenplum 原班开发者的开源分支) - 仓库添加新工具
walminer
,从WAL(replica等级)中提取原始 SQL。(高级特性需自行购买License) - 更新执行计划可视化工具 Pev2 版本至 1.12.1
- 新增Grafana插件:
volkovlabs-rss-datasource
- 在PGCAT databases监控面板中添加了已安装和待安装的扩展插件
- PGSQL 主库初始化后,会重启一次以便 pg_param & pg_files 生效,因此 Supabase PG / PolarDB 集群置备后无需重启。
问题修复
- 修复了 Grafana 11.1.4 面板插件默认不加载的问题
- 修复了特定操作系统上 BlackBox Exporter Ping 探针失效的问题
- 确保 /var/run/postgresql 与 /var/run/redis 临时目录总是在重启后自动创建
- 修复了
cache.yml
剧本没有正确移除老旧的 patroni 3.0.4 RPM 包问题 - 修复了个别告警规则中的描述信息错误
- 移除了 Patroni 配置文件中过时的 Bootstrap User/HBA 参数
v3.0.0
亮点特性
- 扩展大爆炸:
Pigsty v3 提供了史无前例的 333 个可用扩展插件。 包括 121 个扩展 RPM包 与 133 个 DEB包,数量已经超过了 PGDG 官方仓库提供的扩展数量总和(135 RPM/ 109 DEB)。 而且,Pigsty 还将EL系统与Debian生态的独有PG扩展插件相互移植,实现了两大发行版的插件生态大对齐。
- timescaledb periods temporal_tables emaj table_version pg_cron pg_later pg_background pg_timetable
- postgis pgrouting pointcloud pg_h3 q3c ogr_fdw geoip #pg_geohash #mobilitydb
- pgvector pgvectorscale pg_vectorize pg_similarity pg_tiktoken pgml #smlar
- pg_search pg_bigm zhparser hunspell
- hydra pg_lakehouse pg_duckdb duckdb_fdw pg_fkpart pg_partman plproxy #pg_strom citus
- pg_hint_plan age hll rum pg_graphql pg_jsonschema jsquery index_advisor hypopg imgsmlr pg_ivm pgmq pgq #rdkit
- pg_tle plv8 pllua plprql pldebugger plpgsql_check plprofiler plsh #pljava plr pgtap faker dbt2
- prefix semver pgunit md5hash asn1oid roaringbitmap pgfaceting pgsphere pg_country pg_currency pgmp numeral pg_rational pguint ip4r timestamp9 chkpass #pg_uri #pgemailaddr #acl #debversion #pg_rrule
- topn pg_gzip pg_http pg_net pg_html5_email_address pgsql_tweaks pg_extra_time pg_timeit count_distinct extra_window_functions first_last_agg tdigest aggs_for_arrays pg_arraymath pg_idkit pg_uuidv7 permuteseq pg_hashids
- sequential_uuids pg_math pg_random pg_base36 pg_base62 floatvec pg_financial pgjwt pg_hashlib shacrypt cryptint pg_ecdsa pgpcre icu_ext envvar url_encode #pg_zstd #aggs_for_vecs #quantile #lower_quantile #pgqr #pg_protobuf
- pg_repack pg_squeeze pg_dirtyread pgfincore pgdd ddlx pg_prioritize pg_checksums pg_readonly safeupdate pg_permissions pgautofailover pg_catcheck preprepare pgcozy pg_orphaned pg_crash pg_cheat_funcs pg_savior table_log pg_fio #pgpool pgagent
- pg_profile pg_show_plans pg_stat_kcache pg_stat_monitor pg_qualstats pg_store_plans pg_track_settings pg_wait_sampling system_stats pg_meta pgnodemx pg_sqlog bgw_replstatus pgmeminfo toastinfo pagevis powa pg_top #pg_statviz #pgexporter_ext #pg_mon
- passwordcheck supautils pgsodium pg_vault anonymizer pg_tde pgsmcrypto pgaudit pgauditlogtofile pg_auth_mon credcheck pgcryptokey pg_jobmon logerrors login_hook set_user pg_snakeoil pgextwlist pg_auditor noset #sslutils
- wrappers multicorn mysql_fdw tds_fdw sqlite_fdw pgbouncer_fdw mongo_fdw redis_fdw pg_redis_pubsub kafka_fdw hdfs_fdw firebird_fdw aws_s3 log_fdw #oracle_fdw #db2_fdw
- orafce pgtt session_variable pg_statement_rollback pg_dbms_metadata pg_dbms_lock pgmemcache #pg_dbms_job #wiltondb
- pglogical pgl_ddl_deploy pg_failover_slots wal2json wal2mongo decoderbufs decoder_raw mimeo pgcopydb pgloader pg_fact_loader pg_bulkload pg_comparator pgimportdoc pgexportdoc #repmgr #slony
- gis-stack rag-stack fdw-stack fts-stack etl-stack feat-stack olap-stack supa-stack stat-stack json-stack
- 可插拔内核:
Pigsty v3 允许您更换 PostgreSQL 内核,目前支持了 SQL Server 兼容的 Babelfish (线缆协议级仿真),Oracle 兼容的 IvorySQL,以及 PG 版的 RAC PolarDB;此外,现在自托管 Supabase 也在 Debian 系统中可用。 您可以让 Pigsty 中带有 HA,IaC,PITR,监控的生产级 PostgreSQL 集群仿真 MSSQL (via WiltonDB),Oracle via (IvorySQL),Oracle RAC (via PolarDB), MongoDB(via FerretDB),以及 Firebase (via Supabase)。
- 专业级服务:
我们现在提供 Pigsty Pro 专业版,在开源版的功能基础上提供增值服务。专业版提供额外的功能模块:MSSQL,Oracle,Mongo,K8S,Victoria,Kafka,TigerBeetle 等……,并提供更广泛的 PG 大版本、操作系统、芯片架构的支持。 提供针对全系操作系统精准小版本定制的离线安装包,以及 EL7,Debian 11,Ubuntu 20.04 等过保老系统的支持;此外,专业版还提供内核可插拔定制服务,并对PolarDB PG 的原生部署、监控管控支持以满足“国产化”需要。
使用以下命令快速安装体验:
curl -fsSL https://repo.pigsty.cc/get | bash
cd ~/pigsty; ./bootstrap; ./configure; ./install.yml
重大变更
本次 Pigsty 发布调整大版本号,从 2.x 升级到 3.0,带有一些重大变更:
-
首要支持操作系统调整为:EL 8 / EL 9 / Debian 12 / Ubuntu 22.04
- EL7 / Debian 11 / Ubuntu 20.04 等系统进入弃用阶段,不再提供支持
- 有在这些系统上运行需求的用户请考虑我们的 订阅服务
-
默认使用在线安装,不再提供离线软件包,从而解决操作系统小版本兼容性问题。
bootstrap
过程现在不再询问是否下载离线安装包,但如果/tmp/pkg.tgz
存在,仍然会自动使用离线安装包。- 有离线安装需求请自行制作离线软件包或考虑我们的 订阅服务
-
Pigsty 使用的上游软件仓库进行统一调整,地址变更,并对所有软件包进行 GPG 签名与校验
- 标准仓库:
https://repo.pigsty.io/{apt/yum}
- 国内镜像:
https://repo.pigsty.cc/{apt/yum}
- 标准仓库:
-
API 参数变更与配置模板变更
- EL 系与 Debian 系配置模板现在收拢统一,有差异的参数统一放置于
roles/node_id/vars/
目录进行管理。 - 配置目录变更,所有配置文件模板统一放置在
conf
目录下,并分为default
,dbms
,demo
,build
四大类。
- EL 系与 Debian 系配置模板现在收拢统一,有差异的参数统一放置于
其他新特性
- PG OLAP 分析能力史诗级加强:DuckDB 1.0.0,DuckDB FDW,以及 PG Lakehouse,Hydra 移植至 Deb 系统中。
- PG 向量检索与全文检索能力加强:Vectorscale 提供 DiskANN 向量索引,Hunspell 分词字典支持,pg_search 0.8.6。
- 帮助 ParadeDB 解决了软件包构建问题,现在我们在 Debian/Ubuntu 上也能提供这一扩展。
- Supabase 所需的扩展在 Debian/Ubuntu 上全部可用,Supabase 现在可在全OS上自托管。
- 提供了场景化预置扩展堆栈的能力,如果您不知道安装哪些扩展,我们准备了针对特定应用场景的扩展推荐包(Stack)。
- 针对所有 PostgreSQL 生态的扩展,制作了元数据表格、文档、索引、名称映射,针对 EL与Deb 进行对齐,确保扩展可用性。
- 为了解决 DockerHub 被 Ban 的问题,我们加强了
proxy_env
参数的功能并简化其配置方式。 - 建设了一个专用的新软件仓库,提供了 12-17 版本的全部扩展插件,其中,PG16的扩展仓库会在 Pigsty 默认的版本中实装。
- 现有软件仓库升级改造,使用标准的签名与校验机制,确保软件包的完整性与安全性。APT 仓库采用新的标准布局通过
reprepro
构建。 - 提供了 1,2,3,4,43 节点的沙箱环境:
meta
,dual
,trio
,full
,prod
,以及针对 7 大 OS Distro 的快捷配置模板。 - PG Exporter 新增了 PostgreSQL 17 与 pgBouncer 1.23 新监控指标收集器的定义,与使用这些指标的 Grafana Panel
- 监控面板修缮,修复了各种问题,为 PGSQL Pgbouncer 与 PGSQL Patroni 监控面板添加了日志仪表盘。
- 使用全新的
cache.yml
Ansible 剧本,替换了原有制作离线软件包的bin/cache
与bin/release-pkg
脚本。
API变更
- 新参数选项:
pg_mode
现在支持的模式有pgsql
,citus
,gpsql
,mssql
,ivory
,polar
,用于指定 PostgreSQL 集群的模式pgsql
: 标准 PostgreSQL 高可用集群citus
: Citus 水平分布式 PostgreSQL 原生高可用集群gpsql
: 用于 Greenplum 与 GP 兼容数据库的监控(专业版)mssql
: 安装 WiltonDB / Babelfish,提供 Microsoft SQL Server 兼容性模式的标准 PostgreSQL 高可用集群,线缆协议级支持,扩展不可用ivory
: 安装 IvorySQL 提供的 Oracle 兼容性 PostgreSQL 高可用集群,Oracle语法/数据类型/函数/存储过程兼容,扩展不可用 (专业版)polar
: 安装 PolarDB for PostgreSQL (PG RAC)开源版本,提供国产化数据库能力支持,扩展不可用。(专业版)
- 新参数:
pg_parameters
,用于在实例级别指定postgresql.auto.conf
中的参数,覆盖集群配置,实现不同实例成员的个性化配置。 - 新参数:
pg_files
,用于将额外的文件拷贝到PGDATA数据目录,针对需要License文件的商业版PostgreSQL分叉内核设计。 - 新参数:
repo_extra_packages
,用于额外指定需要下载的软件包,与repo_packages
共同使用,便于指定OS版本独有的扩展列表。 - 参数重命名:
patroni_citus_db
重命名为pg_primary_db
,用于指定集群中的主要数据库(在 Citus 模式中使用) - 参数强化:
proxy_env
中的代理服务器配置会写入 Docker Daemon,解决科学上网问题,configure -x
选项会自动在配置中写入当前环境中的代理服务器配置。 - 参数强化:
infra_portal
参数现在支持指定path
选项,对外暴露本机上的目录,提供web服务。 - 参数强化:
repo_url_packages
中的repo.pigsty.io
会在区域为中国时自动替换为repo.pigsty.cc
,解决科学上网问题,此外,现在可以指定下载后的文件名称。 - 参数强化:
pg_databases.extensions
中的extension
字段现在可以支持字典与扩展名字符串两种模式,字典模式提供version
支持,允许安装特定版本的扩展。 - 参数强化:
repo_upstream
参数如果没有显式覆盖定义,将从rpm.yml
或deb.yml
中定义的repo_upstream_default
提取对应系统的默认值。 - 参数强化:
repo_packages
参数如果没有显式覆盖定义,将从rpm.yml
或deb.yml
中定义的repo_packages_default
提取对应系统的默认值。 - 参数强化:
infra_packages
参数如果没有显式覆盖定义,将从rpm.yml
或deb.yml
中定义的infra_packages_default
提取对应系统的默认值。 - 参数强化:
node_default_packages
参数如果没有显式覆盖定义,将从rpm.yml
或deb.yml
中定义的node_packages_default
提取对应系统的默认值。 - 参数强化:
pg_packages
与pg_extensions
中的扩展现在都会从rpm.yml
或deb.yml
中定义的pg_package_map
执行一次查找与翻译。 - 参数强化:
node_packages
与pg_extensions
参数中指定的软件包在安装时会升级至最新版本,node_packages
中现在默认值变为[openssh-server
],帮助修复 OpenSSH CVE - 参数强化:
pg_dbsu_uid
会自动根据操作系统类型调整为26
(EL)或543
(Debian),避免了手工调整。 - 设置了 pgbouncer 默认参数,
max_prepared_statements = 128
启用了事物池化模式下的准备语句支持,并设置server_lifetime
为 600, - 修改了 patroni 模板默认参数,统一增大
max_worker_processes
+8 可用后端进程,提高max_wal_senders
与max_replication_slots
至 50,并增大 OLAP 模板临时文件的大小限制为主磁盘的 1/5
版本升级
截止至发布时刻,Pigsty 主要组件的版本升级如下:
- PostgreSQL 16.4, 15.8, 14.13, 13.16, 12.20
- pg_exporter : 0.7.0
- Patroni: 3.3.2
- pgBouncer: 1.23.1
- pgBackRest: 2.53.1
- duckdb : 1.0.0
- etcd : 3.5.15
- pg_timetable: 5.9.0
- ferretdb: 1.23.1
- vip-manager: 2.6.0
- minio: 20240817012454
- mcli: 20240817113350
- grafana : 11.1.4
- loki : 3.1.1
- promtail : 3.0.0
- prometheus : 2.54.0
- pushgateway : 1.9.0
- alertmanager : 0.27.0
- blackbox_exporter : 0.25.0
- nginx_exporter : 1.3.0
- node_exporter : 1.8.2
- keepalived_exporter : 0.7.0
- pgbackrest_exporter 0.18.0
- mysqld_exporter : 0.15.1
- redis_exporter : v1.62.0
- kafka_exporter : 1.8.0
- mongodb_exporter : 0.40.0
- VictoriaMetrics : 1.102.1
- VictoriaLogs : v0.28.0
- sealos: 5.0.0
- vector : 0.40.0
Pigsty 重新编译了所有 PostgreSQL 扩展插件,PostgreSQL 扩展插件的最新版本,可用的 333 个扩展插件请参考 扩展列表
新应用
Pigsty 现在提供开箱即用的 Dify 与 Odoo 两款使用 PostgreSQL 软件的 Docker Compose 模板:
- Dify: AI智能体工作流编排与 LLMOps,使用 PostgreSQL 作为元数据库,PGVector 作为向量存储。
- Odoo: 企业级开源 ERP 系统,使用 PostgreSQL 作为底层数据库。
Pigsty 专业版现在提供试点的 Kubernetes 部署支持与 Kafka KRaft 集群部署与监控支持
KUBE
: 使用 cri-dockerd 或 containerd 部署由 Pigsty 托管的 Kubernetes 集群KAFKA
:部署由 Kraft 协议支持的高可用 Kafka 集群
问题修复
- 修复了 Ubuntu / Debian 系统中,节点重启后可能出现的 postgresql-common 服务自动启动替代默认数据库集群的缺陷
- 通过
node_packages
中的默认值[openssh-server
],CVE-2024-6387 可以在 Pigsty 安装过程中被自动修复。 - 修复了 Loki 解析 Nginx 日志标签基数过大导致的内存消耗问题。
- 修复了 EL8 系统中上游 Ansible 依赖变化导致的 bootstrap 失效问题(python3.11-jmespath 升级至 python3.12-jmespath)
v2.7.0
亮点特性
新增了大量强力扩展插件,特别是一些使用 rust
与 pgrx
进行开发的强力扩展:
- pg_search v0.7.0:使用 BM25 算法对 SQL 表进行全文搜索
- pg_lakehouse v0.7.0:在对象存储(如 S3)和表格式(如 DeltaLake)上进行查询的引擎
- pg_analytics v0.6.1:加速 PostgreSQL 内部的分析查询处理
- pg_graphql v1.5.4:为 PostgreSQL 数据库提供 GraphQL 支持
- pg_jsonschema v0.3.1:提供 JSON Schema 校验的 PostgreSQL 扩展
- wrappers v0.3.1:由 Supabase 提供的 PostgreSQL 外部数据封装器集合
- pgmq v1.5.2:轻量级消息队列,类似于 AWS SQS 和 RSMQ
- pg_tier v0.0.3:支将将冷数据分级存储到 AWS S3
- pg_vectorize v0.15.0: 在 PG 中实现 RAG 向量检索的封装
- pg_later v0.1.0:现在执行 SQL,并在稍后获取结果
- pg_idkit v0.2.3:生成多种流行类型的标识符(UUID)
- plprql v0.1.0:在 PostgreSQL 中使用 PRQL 查询语言
- pgsmcrypto v0.1.0:PostgreSQL 的国密 SM 算法扩展
- pg_tiktoken v0.0.1:计算 OpenAI 使用的 Token 数量
- pgdd v0.5.2:通过纯 SQL 接口,访问数据目录的元数据
当然,也有一些使用原生 C 和 C++ 开发的强力扩展:
- parquet_s3_fdw 1.1.0:从 S3 存取 Parquet 格式文件,作为湖仓之用
- plv8 3.2.2:使用 V8 引擎,允许在 PostgreSQL 中使用 Javascript 语言编写存储过程
- md5hash 1.0.1:用于存储原生MD5哈希数据类型,而非文本。
- pg_tde 1.0 alpha:PostgreSQL 的实验性加密存储引擎。
- pg_dirtyread 2.6:从 PostgreSQL 表中读取未清理的死元组,用于脏读
- 新的 deb PGDG 扩展:
pg_roaringbitmap
,pgfaceting
,mobilitydb
,pgsql-http
,pg_hint_plan
,pg_statviz
,pg_rrule
- 新的 rpm PGDG 扩展:
pg_profile
,pg_show_plans
, 使用 PGDG 的pgsql_http
,pgsql_gzip
,pg_net
,pg_bigm
替代 Pigsty 维护的 RPM。
新特性
- 允许 Pigsty 在特定 Docker 虚拟机镜像中运行。
- 针对 Ubuntu 与 EL 系操作系统发行版准备了 INFRA & PGSQL 模块的 arm64 软件包
- 新安装脚本,可从 cloudflare 下载软件,可以指定版本,提供更完善的提示信息。
- 新增的 PGSQL PITR 监控面板,用于在 PITR 过程中提供更好的可观测性
- 针对在 Docker 虚拟机镜像中运行 Pigsty 进行了一系列铺垫与准备。
- 新增了 防呆设计,避免在非 Pigsty 纳管的节点上运行 pgsql.yml 剧本 (AdamYLK)
- 针对每个支持的发行版大版本配置了独立的配置文件:el7, el8, el9, debian11, debian12, ubuntu20, ubuntu22
软件版本升级
- 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 (警告:大版本非兼容性变更!)
- 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 重新针对 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)
Docker应用模板
- Odoo:开源 ERP 软件与插件
- Jupyter:使用容器运行 Jupyter Notebook
- PolarDB:运行“国产数据库” PolarDB,应付信创检查!
- supabase:更新至最近的 GA 版本
- bytebase:使用
latest
标签替代特定版本号。 - pg_exporter:更新了 Docker 镜像的例子。
缺陷修复
- 修复了 pg_exporters 角色中的变量空白问题。
- 修复了
minio_cluster
变量没有在全局配置中注释掉的问题 - 修复了 EL7 模板中的
postgis34
插件名称问题,应该使用postgis33
- 修复了 EL8
python3.11-cryptography
依赖名的问题,上游现在变更为python3-cryptography
。 - 修复了
/pg/bin/pg-role
无法在非交互式 Shell 模式下获取操作系统用户名的问题 - 修复了
/pg/bin/pg-pitr
无法正确提示-X
-P
选项的问题
API变更
- 新参数
node_write_etc_hosts
,用于控制是否向目标节点的/etc/hosts
文件写入静态 DNS 解析记录 - 新增了
prometheus_sd_dir
参数,用于指定 Prometheus 静态服务发现的目标文件目录 - configure 脚本新增了
-x|--proxy
参数,用于将当前环境的代理信息写入配置文件 by @waitingsong in https://github.com/Vonng/pigsty/pull/405 - 不再使用 Promtail & Loki 解析 Infra 节点上的 Nginx 日志细节标签,因为这样会导致标签基数爆炸。
- 在 Prometheus 配置中使用 alertmanager API v2 替代 v1
- 在 PGSQL 模块中,使用
/pg/cert/ca.crt
代替/etc/pki/ca.crt
,降低对节点根证书的依赖。
新的贡献者
- @NeroSong made their first contribution in https://github.com/Vonng/pigsty/pull/373
- @waitingsong made their first contribution in https://github.com/Vonng/pigsty/pull/405
完整的变更日志: https://github.com/Vonng/pigsty/compar
离线软件包校验和
ec271a1d34b2b1360f78bfa635986c3a pigsty-pkg-v2.7.0.el8.x86_64.tgz
f3304bfd896b7e3234d81d8ff4b83577 pigsty-pkg-v2.7.0.debian12.x86_64.tgz
5b071c2a651e8d1e68fc02e7e922f2b3 pigsty-pkg-v2.7.0.ubuntu22.x86_64.tgz
v2.6.0
亮点特性
- 现已将 PostgreSQL 16 作为默认主要版本(16.2)
- 新增 ParadeDB 扩展插件:
pg_analytics
,pg_bm25
, andpg_sparse
- 新增 DuckDB 与
duckdb_fdw
插件支持 - 全球 Cloudflare CDN https://repo.pigsty.io 与中国大陆CDN https://repo.pigsty.cc
软件配置变更
- 使用
node_repo_modules
替换node_repo_method
参数,并移除node_repo_local_urls
参数。 - 暂时关闭 Grafana 统一告警功能,避免 “Database Locked” 错误。
- 新增
node_repo_modules
参数,用于指定在节点上添加的上游仓库源。 - 移除
node_local_repo_urls
,其功能由node_repo_modules
&repo_upstream
替代。 - 移除
node_repo_method
参数,其功能由node_repo_modules
替代。 - 在
repo_upstream
添加新的local
源,并通过node_repo_modules
使用,替代node_local_repo_urls
的功能 - 重排
node_default_packages
,infra_packages
,pg_packages
,pg_extensions
参数默认值。 - 在
repo_upstream
中替换repo_upstream.baseurl
时,如果 EL8/9 PGDG小版本特定的仓库可用,使用major.minor
而不是major
替换 $releasever,提高小版本兼容性。
软件版本升级
- 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:新Docker应用模板
PostgreSQL扩展插件
- PostgreSQL 小版本升级: 16.2, 15.6, 14.11, 13.14, 12.18
- PostgreSQL 16: 现在被提升为默认主版本
- pg_exporter 0.6.1:安全修复
- Patroni 3.2.2
- pgBadger 12.4
- pgBackRest 2.50
- vip-manager 2.3.0
- PostGIS 3.4.2
- TimescaleDB 2.14.1
- 向量扩展 PGVector 0.6.0:新增并行创建 HNSW 索引功能
- 新增扩展插件 duckdb_fdw v1.1 ,支持读写 DuckDB 数据 v1.1
- 新增扩展插件 pgsql-gzip ,用于支持 Gzip 压缩解压缩 v1.0.0
- 新增扩展插件 pg_sparse,高效处理稀疏向量(ParadeDB) v0.5.6
- 新增扩展插件 pg_bm25,用于支持高质量全文检索 BM25 算法的插件(ParadeDB) v0.5.6
- 新增扩展插件 pg_analytics,支持 SIMD 与列式存储的PG分析插件(ParadeDB) v0.5.6
- 升级AIML插件 pgml 至 v2.8.1,新增 PG 16 支持。
- 升级列式存储插件 hydra 版本至 v1.1.1,新增 PG 16 支持。
- 升级图扩展插件 age 至 v1.5.0,新增 PG 16 支持。
- 升级GraphQL插件 pg_graphql 版本至 v1.5.0 ,支持 Supabase。
330e9bc16a2f65d57264965bf98174ff pigsty-v2.6.0.tgz
81abcd0ced798e1198740ab13317c29a pigsty-pkg-v2.6.0.debian11.x86_64.tgz
7304f4458c9abd3a14245eaf72f4eeb4 pigsty-pkg-v2.6.0.debian12.x86_64.tgz
f914fbb12f90dffc4e29f183753736bb pigsty-pkg-v2.6.0.el7.x86_64.tgz
fc23d122d0743d1c1cb871ca686449c0 pigsty-pkg-v2.6.0.el8.x86_64.tgz
9d258dbcecefd232f3a18bcce512b75e pigsty-pkg-v2.6.0.el9.x86_64.tgz
901ee668621682f99799de8932fb716c pigsty-pkg-v2.6.0.ubuntu20.x86_64.tgz
39872cf774c1fe22697c428be2fc2c22 pigsty-pkg-v2.6.0.ubuntu22.x86_64.tgz
v2.5.1
跟进 PostgreSQL v16.1, v15.5, 14.10, 13.13, 12.17, 11.22 小版本例行更新。
现在 PostgreSQL 16 的所有重要扩展已经就位(新增 pg_repack
与 timescaledb
支持)
- 软件更新:
- 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
- 移除 PGCAT 监控面板中查询对
monitor
模式前缀(允许用户将pg_stat_statements
扩展装到别的地方) - 新的配置模板
wool.yml
,为阿里云免费99 ECS 单机针对设计。 - 为 EL9 新增
python3-jmespath
软件包,解决 Ansible 依赖更新后 bootstrap 缺少 jmespath 的问题
31ee48df1007151009c060e0edbd74de pigsty-pkg-v2.5.1.el7.x86_64.tgz
a40f1b864ae8a19d9431bcd8e74fa116 pigsty-pkg-v2.5.1.el8.x86_64.tgz
c976cd4431fc70367124fda4e2eac0a7 pigsty-pkg-v2.5.1.el9.x86_64.tgz
7fc1b5bdd3afa267a5fc1d7cb1f3c9a7 pigsty-pkg-v2.5.1.debian11.x86_64.tgz
add0731dc7ed37f134d3cb5b6646624e pigsty-pkg-v2.5.1.debian12.x86_64.tgz
99048d09fa75ccb8db8e22e2a3b41f28 pigsty-pkg-v2.5.1.ubuntu20.x86_64.tgz
431668425f8ce19388d38e5bfa3a948c pigsty-pkg-v2.5.1.ubuntu22.x86_64.tgz
v2.5.0
curl https://get.pigsty.cc/latest | bash
亮点特性
-
使用CDN
repo.pigsty.cc
软件源,提供 rpm/deb 软件包下载。 -
Anolis 操作系统支持( 兼容 EL 8.8 )。
-
使用 PostgreSQL 16 替代 PostgreSQL 14 作为备选主要支持版本
-
新增了 PGSQL Exporter / PGSQL Patroni 监控面板,重做 PGSQL Query 面板
-
扩展更新:
- PostGIS 版本至 3.4( EL8/EL9 ),EL7 仍使用 PostGIS 3.3
- 移除
pg_embedding
,因为开发者不再对其进行维护,建议使用pgvector
替换。 - 新扩展(EL):点云插件
pointcloud
支持,Ubuntu原生带有此扩展。 - 新扩展(EL):
imgsmlr
,pg_similarity
,pg_bigm
用于搜索。 - 重新编译
pg_filedump
为 PG 大版本无关的软件包。。 - 新收纳
hydra
列存储扩展,不再默认安装citus
扩展。
-
软件更新:
- Grafana 更新至 v10.1.5
- Prometheus 更新至 v2.47
- Promtail/Loki 更新至 v2.9.1
- Node Exporter 更新至 v1.6.1
- Bytebase 更新至 v2.10.0
- patroni 更新至 v3.1.2
- pgbouncer 更新至 v1.21.0
- pg_exporter 更新至 v0.6.0
- pgbackrest 更新至 v2.48.0
- pgbadger 更新至 v12.2
- pg_graphql 更新至 v1.4.0
- pg_net 更新至 v0.7.3
- ferretdb 更新至 v0.12.1
- sealos 更新至 4.3.5
- Supabase 支持更新至
20231013070755
Ubuntu 支持说明
Pigsty 支持了 Ubuntu 22.04 (jammy) 与 20.04 (focal) 两个 LTS 版本,并提供相应的离线软件安装包。
相比 EL 系操作系统,一些参数的默认值需要显式指定调整,详情请参考 ubuntu.yml
repo_upstream
:按照 Ubuntu/Debian 的包名进行了调整repo_packages
:按照 Ubuntu/Debian 的包名进行了调整node_repo_local_urls
:默认值为['deb [trusted=yes] http://${admin_ip}/pigsty ./']
node_default_packages
:zlib
->zlib1g
,readline
->libreadline-dev
vim-minimal
->vim-tiny
,bind-utils
->dnsutils
,perf
->linux-tools-generic
,- 新增软件包
acl
,确保 Ansible 权限设置正常工作
infra_packages
:所有含_
的包要替换为-
版本,此外postgresql-client-16
用于替换postgresql16
pg_packages
:Ubuntu 下惯用-
替代_
,不需要手工安装patroni-etcd
包。pg_extensions
:扩展名称与EL系不太一样,Ubuntu下缺少passwordcheck_cracklib
扩展。pg_dbsu_uid
: Ubuntu 下 Deb 包不显式指定uid,需要手动指定,Pigsty 默认分配为543
API变更
默认值变化:
-
repo_modules
现在的默认值为infra,node,pgsql,redis,minio
,启用所有上游源 -
repo_upstream
发生变化,现在添加了 Pigsty Infra/MinIO/Redis/PGSQL 模块化软件源 -
repo_packages
发生变化,移除未使用的karma,mtail,dellhw_exporter
,移除了 PG14 主要扩展,新增了 PG16 主要扩展,添加了 virtualenv 包。 -
node_default_packages
发生变化,默认安装python3-pip
组件。 -
pg_libs
:timescaledb
从 shared_preload_libraries 中移除,现在默认不自动启用。 -
pg_extensions
发生变化,不再默认安装 Citus 扩展,默认安装passwordcheck_cracklib
扩展,EL8,9 PostGIS 默认版本升级至 3.4- pg_repack_${pg_version}* wal2json_${pg_version}* passwordcheck_cracklib_${pg_version}* - postgis34_${pg_version}* timescaledb-2-postgresql-${pg_version}* pgvector_${pg_version}*
-
Patroni 所有模板默认移除
wal_keep_size
参数,避免触发 Patroni 3.1.1 的错误,其功能由min_wal_size
覆盖。
87e0be2edc35b18709d7722976e305b0 pigsty-pkg-v2.5.0.el7.x86_64.tgz
e71304d6f53ea6c0f8e2231f238e8204 pigsty-pkg-v2.5.0.el8.x86_64.tgz
39728496c134e4352436d69b02226ee8 pigsty-pkg-v2.5.0.el9.x86_64.tgz
e3f548a6c7961af6107ffeee3eabc9a7 pigsty-pkg-v2.5.0.debian11.x86_64.tgz
1e469cc86a19702e48d7c1a37e2f14f9 pigsty-pkg-v2.5.0.debian12.x86_64.tgz
cc3af3b7c12f98969d3c6962f7c4bd8f pigsty-pkg-v2.5.0.ubuntu20.x86_64.tgz
c5b2b1a4867eee624e57aed58ac65a80 pigsty-pkg-v2.5.0.ubuntu22.x86_64.tgz
v2.4.1
- Supabase 支持:开源的 Firebase 替代,现可使用 Pigsty 本地托管的 PostgreSQL 实例作为数据存储。
- PostgresML支持:使用SQL完成经典机器学习算法,训练、微调、调用大语言模型(hugging face)。
- FerretDB v1.10 支持,在 PostgreSQL 上提供 MongoDB API与协议兼容能力。
- GraphQL扩展:
pg_graphql
:从现有模式中反射出 GraphQL 模式,提供库内 GraphQL 查询能力。 - JWT支持扩展:
pgjwt
允许您使用 SQL 验证签发 JWT (JSON Web Tokens)。 - 密钥存储扩展:
vault
可以在提供一个安全存储加密密钥的保险柜。 - 数据恢复扩展:
pg_filedump
:可用于快速从PostgreSQL二进制文件中恢复数据 - 图数据库扩展:Apache
age
,为 PostgreSQL 添加 OpenCypher 查询支持,类似 Neo4J - 中文分词扩展:
zhparser
,为中文全文检索提供分词能力,类似 ElasticSearch。 - 高效位图扩展:
pg_roaringbitmap
,在 PostgreSQL 中提供 roaring bitmap 的支持,高效计数聚合统计。 - 向量嵌入替代:
pg_embedding
,提供了不同于 pgvector 的另一种 HNSW 替代实现。 - 可信语言扩展:
pg_tle
,由 AWS 出品的,允许您打包分发管理由可信存储过程语言编写的函数。 - HTTP客户端扩展:
pgsql-http
:使用 SQL 接口,curl API,发起 HTTP 请求,与各类系统交互。 - 异步HTTP扩展:
pg_net
允许您使用 SQL 发起非阻塞的 HTTP/HTTPS 请求。 - 列式存储引擎:
hydra
针对分析场景打造的向量化列存储引擎,原地替代 Citus 列存插件。 - 其他PGDG扩展:新收录8个由PGDG维护的扩展插件,Pigsty支持的插件总数达到 150+ 。
- PostgreSQL 16 内核支持,监控云端 RDS / PolarDB for PostgreSQL。
亮点特性
- Supabase 支持:开源的 Firebase 替代,现可使用 Pigsty 托管的 PostgreSQL 实例存储数据。
- PostgresML支持:在 PostgreSQL 运行各类模型(hugging face),向量操作,经典机器学习算法。
- GraphQL支持扩展:
pg_graphql
:从现有模式中反射出 GraphQL 模式,提供库内 GraphQL 查询能力。 - 异步HTTP客户端扩展:
pg_net
允许您使用 SQL 发起非阻塞的 HTTP/HTTPS 请求 - JWT支持扩展:
pgjwt
允许您使用 SQL 验证签发 JWT (JSON Web Tokens) - 密钥存储扩展:
vault
可以在保险柜里存储加密密钥 - 将FerretDB 版本升级至 v1.10
- 新增组件:
pg_filedump
:可用于快速从PostgreSQL二进制文件中恢复数据 - 减少 EL9 离线软件包的大小,移除非必须依赖项
proj-data*
- 修复了 Patroni 3.1.1 的错误
efabe7632d8994f3fb58f9838b8f9d7d pigsty-pkg-v2.5.0.el7.x86_64.tgz # 1.1G
ea78957e8c8434b120d1c8c43d769b56 pigsty-pkg-v2.5.0.el8.x86_64.tgz # 1.4G
4ef280a7d28872814e34521978b851bb pigsty-pkg-v2.5.0.el9.x86_64.tgz # 1.3G
v2.4.0
使用 bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"
快速上手。
最新特性
- PostgreSQL 16 正式发布,Pigsty提供支持。
- 可以监控云数据库,RDS for PostgreSQL,以及 PolarDB,提供全新的 PGRDS 监控面板
- 正式提供商业支持与咨询服务。并发布首个 LTS 版本,为订阅客户提供最长5年的支持。
- 新扩展插件: Apache AGE, openCypher graph query engine on PostgreSQL
- 新扩展插件: zhparser, full text search for Chinese language
- 新扩展插件: pg_roaringbitmap, roaring bitmap for PostgreSQL
- 新扩展插件: pg_embedding, hnsw alternative to pgvector
- 新扩展插件: pg_tle, admin / manage stored procedure extensions
- 新扩展插件: pgsql-http, issue http request with SQL interface
- 新增插件: pg_auth_mon pg_checksums pg_failover_slots pg_readonly postgresql-unit pg_store_plans pg_uuidv7 set_user
- Redis改进:支持 Redis 哨兵监控,配置主从集群的自动高可用。
API变化
- 新增参数,
REDIS
.redis_sentinel_monitor
,用于指定 Sentinel 集群监控的主库列表
问题修复
- 修复 Grafana 10.1 注册数据源时缺少
uid
的问题
MD5 (pigsty-pkg-v2.4.0.el7.x86_64.tgz) = 257443e3c171439914cbfad8e9f72b17
MD5 (pigsty-pkg-v2.4.0.el8.x86_64.tgz) = 41ad8007ffbfe7d5e8ba5c4b51ff2adc
MD5 (pigsty-pkg-v2.4.0.el9.x86_64.tgz) = 9a950aed77a6df90b0265a6fa6029250
v2.3.1
使用 bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"
快速开始。
最新特性
pgvector
更新至 0.5,添加 hnsw 算法支持。- 支持 PostgreSQL 16 RC1 (el8/el9)
- 默认包中添加了 SealOS 用于快速部署Kubernetes集群。
问题修复
- 修复了
infra
.repo
.repo_pkg
任务:当repo_packages
中包名包含*
时,下载可能会受到/www/pigsty
现有内容的影响。 - 将
vip_dns_suffix
的默认值由.vip
调整为空字符串,即集群本身的名称将默认作为节点集群的 L2 VIP modprobe watchdog
andchown watchdog
ifpatroni_watchdog_mode
isrequired
- 当
pg_dbsu_sudo
=limit
andpatroni_watchdog_mode
=required
时,授予数据库 dbsu 以下命令的 sudo 执行权限/usr/bin/sudo /sbin/modprobe softdog
:在启动 Patroni 服务时确保 softdog 内核模块启用/usr/bin/sudo /bin/chown {{ pg_dbsu }} /dev/watchdog
: 在启动 Patroni 服务时,确保 watchdog 属主正确
文档更新
- 向英文文档中添加了更新内容。
- 添加了简体中文版本的内置文档,修复了 pigsty.cc 文档站的中文文档。
软件更新
- PostgreSQL 16 RC1 for EL8/EL9
- PGVector 0.5.0,支持 hnsw 索引
- 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
ce69791eb622fa87c543096cdf11f970 pigsty-pkg-v2.3.1.el7.x86_64.tgz
495aba9d6d18ce1ebed6271e6c96b63a pigsty-pkg-v2.3.1.el8.x86_64.tgz
38b45582cbc337ff363144980d0d7b64 pigsty-pkg-v2.3.1.el9.x86_64.tgz
v2.3.0
相关文章:《Pigsty v2.3 发布:应用生态丰富》
发布注记:https://github.com/Vonng/pigsty/releases/tag/v2.3.0
使用 bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"
快速开始。
亮点特性
- INFRA: 添加了对 NODE/PGSQL VIP 的监控支持
- PGSQL: 通过小版本升级修复了 PostgreSQL CVE-2023-39417: 15.4, 14.9, 13.12, 12.16,以及 Patroni v3.1.0
- NODE: 允许用户使用
keepalived
为一个节点集群绑定 L2 VIP - REPO: Pigsty 专用 yum 源优化精简,全站默认使用 HTTPS:
get.pigsty.cc
与demo.pigsty.cc
- APP: 升级
app/bytebase
版本至 v2.6.0,app/ferretdb
版本至 v1.8;添加新的应用模板:nocodb,开源的 Airtable。 - REDIS: 升级版本至 v7.2,并重制了 Redis 监控面板。
- MONGO: 添加基于 FerretDB 1.8 实现的基本支持。
- MYSQL: 添加了 Prometheus / Grafana / CA 中的代码存根,便于后续纳管。
API变化
新增一个新的参数组 NODE
.NODE_VIP
:包含 8 个新参数
NODE
.VIP
.vip_enabled
:在此节点集群上启用 vip 吗?NODE
.VIP
.vip_address
:ipv4 格式的节点 vip 地址,如果启用了 vip,则必需NODE
.VIP
.vip_vrid
:必需,整数,1-255 在相同 VLAN 中应该是唯一的NODE
.VIP
.vip_role
:master/backup,默认为备份,用作初始角色NODE
.VIP
.vip_preempt
:可选,true/false,默认为 false,启用 vip 抢占NODE
.VIP
.vip_interface
:节点 vip 网络接口监听,eth0 默认NODE
.VIP
.vip_dns_suffix
:节点 vip dns 名称后缀,默认为空字符串NODE
.VIP
.vip_exporter_port
:keepalived 导出器监听端口,默认为 9650
MD5 (pigsty-pkg-v2.3.0.el7.x86_64.tgz) = 81db95f1c591008725175d280ad23615
MD5 (pigsty-pkg-v2.3.0.el8.x86_64.tgz) = 6f4d169b36f6ec4aa33bfd5901c9abbe
MD5 (pigsty-pkg-v2.3.0.el9.x86_64.tgz) = 4bc9ae920e7de6dd8988ca7ee681459d
v2.2.0
相关文章:《Pigsty v2.2 发布 —— 监控系统大升级》
发布注记:https://github.com/Vonng/pigsty/releases/tag/v2.2.0
快速开始: bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"
亮点特性
- 监控面板重做: https://demo.pigsty.cc
- Vagrant沙箱重做: 支持 libvirt 与新的配置模板
- Pigsty EL Yum 仓库: 统一收纳零碎 RPM,简化安装构建流程。
- 操作系统兼容性: 新增信创操作系统 UOS-v20-1050e 支持
- 新的配置模板:42 节点的生产仿真配置
- 统一使用官方 PGDG citus 软件包(el7)
软件升级
- 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修复
- 修复了 Docker 组权限的问题 29434bd
- 将
infra
操作系统用户组作为额外的组,而不是首要用户组。 - 修复了 Redis Sentinel Systemd 服务的自动启用状态 5c96feb
- 放宽了
bootstrap
&configure
的检查,特别是当/etc/redhat-release
不存在的时候。 - 升级到 Grafana 10,修复了 Grafana 9.x CVE-2023-1410
- 在 CMDB
pglog
模式中添加了 PG 14 - 16 的 command tags 与 错误代码。
API变化
新增1个变量
INFRA
.NGINX
.nginx_exporter_enabled
: 现在用户可以通过设置这个参数来禁用 nginx_exporter 。
默认值变化:
repo_modules
:node,pgsql,infra
: redis 现在由 pigsty-el 仓库提供,不再需要redis
模块。repo_upstream
:- 新增
pigsty-el
: 与具体EL版本无关的RPM: 例如 grafana, minio, pg_exporter, 等等…… - 新增
pigsty-misc
: 与具体EL版本有关的RPM: 例如 redis, prometheus 全家桶,等等…… - 移除
citus
: 现在 PGDG 中有完整的 EL7 - EL9 citus 12 支持 - 移除
remi
: redis 现在由 pigsty-el 仓库提供,不再需要redis
模块。
- 新增
repo_packages
:- ansible python3 python3-pip python3-requests python3-jmespath python3.11-jmespath dnf-utils modulemd-tools # el7: python36-requests python36-idna yum-utils
- grafana loki logcli promtail prometheus2 alertmanager karma pushgateway node_exporter blackbox_exporter nginx_exporter redis_exporter
- redis etcd minio mcli haproxy vip-manager pg_exporter nginx createrepo_c sshpass chrony dnsmasq docker-ce docker-compose-plugin flamegraph
- lz4 unzip bzip2 zlib yum pv jq git ncdu make patch bash lsof wget uuid tuned perf nvme-cli numactl grubby sysstat iotop htop rsync tcpdump
- netcat socat ftp lrzsz net-tools ipvsadm bind-utils telnet audit ca-certificates openssl openssh-clients readline vim-minimal
- postgresql13* wal2json_13* pg_repack_13* passwordcheck_cracklib_13* postgresql12* wal2json_12* pg_repack_12* passwordcheck_cracklib_12* timescaledb-tools
- postgresql15 postgresql15* citus_15* pglogical_15* wal2json_15* pg_repack_15* pgvector_15* timescaledb-2-postgresql-15* postgis33_15* passwordcheck_cracklib_15* pg_cron_15*
- postgresql14 postgresql14* citus_14* pglogical_14* wal2json_14* pg_repack_14* pgvector_14* timescaledb-2-postgresql-14* postgis33_14* passwordcheck_cracklib_14* pg_cron_14*
- postgresql16* wal2json_16* pgvector_16* pg_squeeze_16* postgis34_16* passwordcheck_cracklib_16* pg_cron_16*
- patroni patroni-etcd pgbouncer pgbadger pgbackrest pgloader pg_activity pg_partman_15 pg_permissions_15 pgaudit17_15 pgexportdoc_15 pgimportdoc_15 pg_statement_rollback_15*
- orafce_15* mysqlcompat_15 mongo_fdw_15* tds_fdw_15* mysql_fdw_15 hdfs_fdw_15 sqlite_fdw_15 pgbouncer_fdw_15 multicorn2_15* powa_15* pg_stat_kcache_15* pg_stat_monitor_15* pg_qualstats_15 pg_track_settings_15 pg_wait_sampling_15 system_stats_15
- plprofiler_15* plproxy_15 plsh_15* pldebugger_15 plpgsql_check_15* pgtt_15 pgq_15* pgsql_tweaks_15 count_distinct_15 hypopg_15 timestamp9_15* semver_15* prefix_15* rum_15 geoip_15 periods_15 ip4r_15 tdigest_15 hll_15 pgmp_15 extra_window_functions_15 topn_15
- pg_background_15 e-maj_15 pg_catcheck_15 pg_prioritize_15 pgcopydb_15 pg_filedump_15 pgcryptokey_15 logerrors_15 pg_top_15 pg_comparator_15 pg_ivm_15* pgsodium_15* pgfincore_15* ddlx_15 credcheck_15 safeupdate_15 pg_squeeze_15* pg_fkpart_15 pg_jobmon_15
repo_url_packages
:node_default_packages
:- lz4,unzip,bzip2,zlib,yum,pv,jq,git,ncdu,make,patch,bash,lsof,wget,uuid,tuned,nvme-cli,numactl,grubby,sysstat,iotop,htop,rsync,tcpdump
- netcat,socat,ftp,lrzsz,net-tools,ipvsadm,bind-utils,telnet,audit,ca-certificates,openssl,readline,vim-minimal,node_exporter,etcd,haproxy,python3,python3-pip
infra_packages
- grafana,loki,logcli,promtail,prometheus2,alertmanager,karma,pushgateway
- node_exporter,blackbox_exporter,nginx_exporter,redis_exporter,pg_exporter
- nginx,dnsmasq,ansible,postgresql15,redis,mcli,python3-requests
PGSERVICE
in.pigsty
被移除了,取而代之的是PGDATABASE=postgres
,这用户只需 IP 地址就可以从管理节点访问特定实例。
目录结构变化:
bin/dns
andbin/ssh
现在被移动到vagrant/
目录中。
MD5 (pigsty-pkg-v2.2.0.el7.x86_64.tgz) = 5fb6a449a234e36c0d895a35c76add3c
MD5 (pigsty-pkg-v2.2.0.el8.x86_64.tgz) = c7211730998d3b32671234e91f529fd0
MD5 (pigsty-pkg-v2.2.0.el9.x86_64.tgz) = 385432fe86ee0f8cbccbbc9454472fdd
v2.1.0
相关文章:Pigsty v2.1 发布:向量扩展 / PG12-16 支持
发布注记:https://github.com/Vonng/pigsty/releases/tag/v2.1.0
Highlight
- PostgreSQL 16 beta 支持, 以及 12 ~ 15 的支持.
- 为 PG 12 - 15 新增了 PGVector 扩展支持,用于存储 AI 嵌入。
- 为 Grafana 添加了额外6个默认的扩展面板/数据源插件。
- 添加
bin/profile
脚本用于执行远程 Profiling ,生成火焰图。 - 添加
bin/validate
用于校验pigsty.yml
配置文件合法性。 - 添加
bin/repo-add
用于快速向节点添加软件源定义。 - PostgreSQL 16 可观测性:添加了
pg_stat_io
支持与相关监控面板
软件升级
- 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
改进增强
- 当添加本地用户的公钥时,所有的
id*.pub
都会被添加到远程机器上(例如椭圆曲线算法生成的密钥文件)
v2.0.2
https://github.com/Vonng/pigsty/releases/tag/v2.0.2
亮点
使用开箱即用的 pgvector
存储 AI Embedding、索引、检索向量。
- 新扩展
pgvector
- MinIO CVE-2023-28432 问题修复
变更
- 新扩展插件
pgvector
用于存储 AI 嵌入,并执行向量相似度搜索。 - 修复 MinIO CVE-2023-28432 ,使用 20230324 新提供的 policy API.
- 为 DNSMASQ systemd 服务添加动态重载命令
- 更新 PEV 版本至 v1.8
- 更新 grafana 版本至 v9.4.7
- 更新 MinIO 与 MCLI 版本至 20230324
- 更新 bytebase 版本至 v1.15.0
- 更新监控面板并修复死链接
- 更新了阿里云 Terraform 模板,默认使用 RockyLinux 9
- 使用 Grafana v9.4 的 Provisioning API
- 为众多管理任务添加了 asciinema 视频
- 修复了 EL8 PostgreSQL 的破损依赖:移除 anonymizer_15 faker_15 pgloader
MD5 (pigsty-pkg-v2.0.2.el7.x86_64.tgz) = d46440a115d741386d29d6de646acfe2
MD5 (pigsty-pkg-v2.0.2.el8.x86_64.tgz) = 5fa268b5545ac96b40c444210157e1e1
MD5 (pigsty-pkg-v2.0.2.el9.x86_64.tgz) = c8b113d57c769ee86a22579fc98e8345
v2.0.1
https://github.com/Vonng/pigsty/releases/tag/v2.0.1
安全性改进,与对 v2.0.0 的 BUG 修复。
改进
- 更换猪头 logo 以符合 PostgreSQL 商标政策。
- 将 grafana 版本升级至 v9.4,界面更佳且修复了 bug。
- 将 patroni 版本升级至 v3.0.1,其中包含了一些 bug 修复。
- 修改:将 grafana systemd 服务文件回滚到 rpm 默认的版本。
- 使用缓慢的
copy
代替rsync
来复制 grafana 仪表板,更加可靠。 - 增强:bootstrap 执行后会添加回默认 repo 文件。
- 添加 asciinema 视频,用于各种管理任务。
- 安全增强模式:限制监控用户权限。
- 新的配置模板:
dual.yml
,用于双节点部署。 - 在
crit.yml
模板中启用log_connections
和log_disconnections
。 - 在
crit.yml
模板中的pg_libs
中启用$lib/passwordcheck
。 - 明确授予
pg_monitor
角色监视视图权限。 - 从
dbuser_monitor
中移除默认的dbrole_readonly
以限制监控用户的权限 - 现在 patroni 监听在
{{ inventory_hostname }}
而不是0.0.0.0
- 现在你可以使用
pg_listen
控制 postgres/pgbouncer 监听的地址 - 现在你可以在
pg_listen
中使用${ip}
,${lo}
,${vip}
占位符 - 将 Aliyun terraform 镜像从 centos 7.9 提升到 rocky Linux 9
- 将 bytebase 版本升级到 v1.14.0
BUG修复
- 为 alertmanager 添加缺失的 advertise 地址。
- 解决使用
bin/pgsql-user
创建数据库用户时,pg_mode
变量缺失问题。 - 在
redis.yml
中为 Redis 集群加入任务添加-a password
选项。 - 在
infra-rm.yml
.remove infra data
任务中补充缺失的默认值。 - 修复 prometheus 监控对象定义文件的属主为
prometheus
用户。 - 使用 管理员用户 而不是 root 去删除 DCS 中的元数据。
- 修复了由 grafana 9.4 bug 导致的问题:Meta数据源缺失。
注意事项
EL8 pgdg 上游官方源处于依赖破损状态,请小心使用。涉及到的软件包: postgis33_15, pgloader, postgresql_anonymizer_15*, postgresql_faker_15
如何升级?
cd ~/pigsty; tar -zcf /tmp/files.tgz files; rm -rf ~/pigsty # backup files dir and remove
cd ~; bash -c "$(curl -fsSL https://get.pigsty.cc/latest)" # get latest pigsty source
cd ~/pigsty; rm -rf files; tar -xf /tmp/files.tgz -C ~/pigsty # restore files dir
Checksums
MD5 (pigsty-pkg-v2.0.1.el7.x86_64.tgz) = 5cfbe98fd9706b9e0f15c1065971b3f6
MD5 (pigsty-pkg-v2.0.1.el8.x86_64.tgz) = c34aa460925ae7548866bf51b8b8759c
MD5 (pigsty-pkg-v2.0.1.el9.x86_64.tgz) = 055057cebd93c473a67fb63bcde22d33
特别感谢 @cocoonkid 提供的反馈。
v2.0.0
相关文章:
Pigsty v2.0.0 正式发布!
从v2.0.0开始,PIGSTY 现在是 “PostgreSQL In Great STYle"的首字母缩写,即"全盛状态的PostgreSQL”。
curl -fsSL https://get.pigsty.cc/latest | bash
Download directly from GitHub Release
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Vonng/pigsty/master/bin/get)"
# or download tarball directly with curl (EL9)
curl -L https://github.com/Vonng/pigsty/releases/download/v2.0.0/pigsty-v2.0.0.tgz -o ~/pigsty.tgz
curl -L https://github.com/Vonng/pigsty/releases/download/v2.0.0/pigsty-pkg-v2.0.0.el9.x86_64.tgz -o /tmp/pkg.tgz
# EL7: https://github.com/Vonng/pigsty/releases/download/v2.0.0/pigsty-pkg-v2.0.0.el7.x86_64.tgz
# EL8: https://github.com/Vonng/pigsty/releases/download/v2.0.0/pigsty-pkg-v2.0.0.el8.x86_64.tgz
亮点
- 完美整合 PostgreSQL 15, PostGIS 3.3, Citus 11.2, TimescaleDB 2.10,分布式地理时序超融合数据库。
- OS兼容性大幅增强:支持 EL7,8,9,以及 RHEL, CentOS, Rocky, OracleLinux, AlmaLinux等兼容发行版。
- 安全性改进:自签名CA,全局网络流量SSL加密,密码scram-sha-256认证,备份采用AES加密,重制的HBA规则系统。
- Patroni升级至3.0,提供原生的高可用 Citus 分布式集群支持,默认启用FailSafe模式,无惧DCS故障致全局主库瘫痪。
- 提供基于 pgBackRest 的开箱即用的时间点恢复 PITR 支持,默认支持本地文件系统与专用MinIO/S3集群备份。
- 新模块
ETCD
,可独立部署,简易扩缩容,自带监控高可用,彻底取代 Consul 作为高可用 PG 的 DCS。 - 新模块
MINIO
,可独立部署,支持多盘多节点部署,用作S3本地替代,亦用于集中式 PostgreSQL 备份仓库。 - 大幅精简配置文件参数,无需默认值即可使用;模板自动根据机器规格调整主机与PG参数,HBA/服务的定义更简洁泛用。
- 受 Grafana 与 MinIO 影响,软件协议由 Apache License 2.0 变更为 AGPL 3.0
兼容性
- 支持 EL7, EL8, EL9 三个大版本,并提供三个版本对应的离线软件包,默认开发测试环境由EL7升级至EL9。
- 支持更多EL兼容Linux发行版:RHEL, CentOS, RockyLinux, AlmaLinux, OracleLinux等…
- 源码包与离线软件包的命名规则发生改变,现在版本号,操作系统版本号,架构都会体现在包名中。
PGSQL
: PostgreSQL 15.2, PostGIS 3.3, Citus 11.2, TimescaleDB 2.10 现可同时使用,协同工作。PGSQL
: Patroni 升级至 3.0 版本,作为 PGSQL 的高可用组件。- 默认使用 ETCD 作为 DCS,取代 Consul,减少一个 Consul Agent 失效点。
- 因为 vip-manager 升级至 2.1 并使用 ETCDv3 API,彻底弃用 ETCDv2 API,Patroni同理
- 提供原生的高可用 Citus 分布式集群支持。使用完全开源所有功能的 Citus 11.2。
- 默认启用FailSafe模式,无惧DCS故障致全局主库瘫痪。
PGSQL
: 引入 pgBackrest v2.44 提供开箱即用的 PostgreSQL 时间点恢复 PITR 功能- 默认使用主库上的备份目录创建备份仓库,滚动保留两天的恢复窗口。
- 默认备选备份仓库为专用 MinIO/S3 集群,滚动保留两周的恢复窗口,本地使用需要启用 MinIO 模块。
ETCD
现在作为一个独立部署的模块,带有完整的扩容/缩容方案与监控。MINIO
现在成为一个独立部署的模块,支持多盘多节点部署,用作S3本地替代,亦可用作集中式备份仓库。NODE
模块现在包含haproxy
,docker
,node_exporter
,promtail
功能组件chronyd
现在取代ntpd
成为所有节点默认的 NTP 服务。- HAPROXY 现从属于
NODE
的一部分,而不再是PGSQL
专属,可以 NodePort 的方式对外暴露服务。 - 现在
PGSQL
模块可以使用专用的集中式 HAPROXY 集群统一对外提供服务。
INFRA
模块现在包含dnsmasq
,nginx
,prometheus
,grafana
,loki
等组件- Infra 模块中的 DNSMASQ 服务器默认启用,并添加为所有节点的默认 DNS 服务器之一。
- 添加了
blackbox_exporter
用于主机 PING 探测,pushgateway
用于批处理任务指标。 loki
与promtail
现在使用 Grafana 默认的软件包,使用官方的 Grafana Echarts 面板插件- 提供针对 PostgreSQL 15 的新增可观测性位点的监控支持,添加 Patroni 监控
- 软件版本升级
- 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
安全性
- 启用了一个完整的本地自签名CA:
pigsty-ca
,用于签发内网组件所使用的证书。 - 创建用户/修改密码的操作将不再会在日志文件中留下痕迹。
- Nginx 默认启用 SSL 支持(如需HTTPS,您需要在系统中信任
pigsty-ca
,或使用Chromethisisunsafe
) - ETCD 全面启用 SSL 加密客户端与服务端对等通信
- PostgreSQL 添加并默认启用了 SSL 支持,管理链接默认都使用SSL访问。
- Pgbouncer 添加了 SSL 支持,出于性能考虑默认不启用。
- Patroni 添加了 SSL 支持,并默认限制了管理 API 只能从本机与管理节点使用密码认证方可访问。
- PostgreSQL 的默认密码认证方式由
md5
改为scram-sha-256
。 - Pgbouncer添加了认证查询支持,可以动态管理连接池用户。
- pgBackRest 使用远端集中备份存储仓库时,默认使用
AES-256-CBC
加密备份数据。 - 提供高安全等级配置模板:强制使用全局 SSL,并要求使用管理员证书登陆。
- 所有默认HBA规则现在全部在配置文件中显式定义。
可维护性
- 现有的配置模板可根据机器规格(CPU/内存/存储)自动调整优化。
- 现在可以动态配置 Postgres/Pgbouncer/Patroni/pgBackRest 的日志目录:默认为:
/pg/log/<type>/
- 原有的 IP 地址占位符
10.10.10.10
被替换为一个专用变量:${admin_ip}
,可在多处引用,便于切换备用管理节点。 - 您可以指定
region
来使用不同地区的上游镜像源,以加快软件包的下载速度。 - 现在允许用户定义更细粒度的上游源地址,您可以根据不同的EL版本、架构,以及地区,使用不同的上游源。
- 提供了阿里云与AWS中国地区的 Terraform 模板,可用于一键拉起所需的 EC2 虚拟机。
- 提供了多种不同规格的 Vagrant 沙箱模板:
meta
,full
,el7/8/9
,minio
,build
,citus
- 添加了新的专用剧本:
pgsql-monitor.yml
用于监控现有的 Postgres 实例或 RDS。 - 添加了新的专用剧本:
pgsql-migration.yml
,使用逻辑复制无缝迁移现有实例至 Pigsty管理的集群。 - 添加了一系列专用 Shell 实用命令,封装常见运维操作,方便用户使用。
- 优化了所有 Ansible Role 的实现,使其更加简洁、易读、易维护,无需默认参数即可使用。
- 允许在业务数据库/用户的层次上定义额外的 Pgbouncer 参数。
API变更
Pigsty v2.0 进行了大量变更,新增64个参数,移除13个参数,重命名17个参数。
新增的参数
INFRA
.META
.admin_ip
: 主元节点 IP 地址INFRA
.META
.region
: 上游镜像区域:default|china|europeINFRA
.META
.os_version
: 企业版 Linux 发行版本:7,8,9INFRA
.CA
.ca_cn
: CA 通用名称,默认为 pigsty-caINFRA
.CA
.cert_validity
: 证书有效期,默认为 20 年INFRA
.REPO
.repo_enabled
: 在 infra 节点上构建本地 yum 仓库吗?INFRA
.REPO
.repo_upstream
: 上游 yum 仓库定义列表INFRA
.REPO
.repo_home
: 本地 yum 仓库的主目录,通常与 nginx_home ‘/www’ 相同INFRA
.NGINX
.nginx_ssl_port
: https 监听端口INFRA
.NGINX
.nginx_ssl_enabled
: 启用 nginx https 吗?INFRA
.PROMTETHEUS
.alertmanager_endpoint
: altermanager 端点(ip|domain):端口格式NODE
.NODE_TUNE
.node_hugepage_ratio
: 内存 hugepage 比率,默认禁用,值为 0NODE
.HAPROXY
.haproxy_service
: 要公开的 haproxy 服务列表PGSQL
.PG_ID
.pg_mode
: pgsql 集群模式:pgsql,citus,gpsqlPGSQL
.PG_BUSINESS
.pg_dbsu_password
: dbsu 密码,默认为空字符串表示没有 dbsu 密码PGSQL
.PG_INSTALL
.pg_log_dir
: postgres 日志目录,默认为/pg/data/log
PGSQL
.PG_BOOTSTRAP
.pg_storage_type
: SSD|HDD,默认为 SSDPGSQL
.PG_BOOTSTRAP
.patroni_log_dir
: patroni 日志目录,默认为/pg/log
PGSQL
.PG_BOOTSTRAP
.patroni_ssl_enabled
: 使用 SSL 保护 patroni RestAPI 通信?PGSQL
.PG_BOOTSTRAP
.patroni_username
: patroni rest api 用户名PGSQL
.PG_BOOTSTRAP
.patroni_password
: patroni rest api 密码(重要:请更改此密码)PGSQL
.PG_BOOTSTRAP
.patroni_citus_db
: 由 patroni 管理的 citus 数据库,默认为 postgresPGSQL
.PG_BOOTSTRAP
.pg_max_conn
: postgres 最大连接数,auto
将使用推荐值PGSQL
.PG_BOOTSTRAP
.pg_shmem_ratio
: postgres 共享内存比率,默认为 0.25,范围 0.1~0.4PGSQL
.PG_BOOTSTRAP
.pg_rto
: 恢复时间目标,故障转移的 ttl,默认为 30sPGSQL
.PG_BOOTSTRAP
.pg_rpo
: 恢复点目标,默认最多丢失 1MB 数据PGSQL
.PG_BOOTSTRAP
.pg_pwd_enc
: 密码加密算法:md5|scram-sha-256PGSQL
.PG_BOOTSTRAP
.pgbouncer_log_dir
: pgbouncer 日志目录,默认为/var/log/pgbouncer
PGSQL
.PG_BOOTSTRAP
.pgbouncer_auth_query
: 如果启用,查询 pg_authid 表以检索 biz 用户,而不是填充用户列表PGSQL
.PG_BOOTSTRAP
.pgbouncer_sslmode
: pgbouncer 客户端的 SSL:disable|allow|prefer|require|verify-ca|verify-fullPGSQL
.PG_BOOTSTRAP
.pg_service_provider
: 专用的 haproxy 节点组名称,或者默认为本地节点的空字符串PGSQL
.PG_BOOTSTRAP
.pg_default_service_dest
: 如果 svc.dest=‘default’,则为默认服务目标PGSQL
.PG_BACKUP
.pgbackrest_enabled
: 启用 pgbackrest 吗?PGSQL
.PG_BACKUP
.pgbackrest_clean
: 初始化期间删除 pgbackrest 数据吗?PGSQL
.PG_BACKUP
.pgbackrest_log_dir
: pgbackrest 日志目录,默认为/pg/log
PGSQL
.PG_BACKUP
.pgbackrest_method
: pgbackrest 备份仓库方法,local 或 minioPGSQL
.PG_BACKUP
.pgbackrest_repo
: pgbackrest 备份仓库配置PGSQL
.PG_DNS
.pg_dns_suffix
: pgsql dns 后缀,默认为空字符串PGSQL
.PG_DNS
.pg_dns_target
: auto, primary, vip, none 或 ad hoc ipETCD
.etcd_seq
: etcd 实例标识符,必需ETCD
.etcd_cluster
: etcd 集群和组名称,默认为 etcdETCD
.etcd_safeguard
: 防止清除正在运行的 etcd 实例吗?ETCD
.etcd_clean
: 在初始化期间清除现有的 etcd 吗?ETCD
.etcd_data
: etcd 数据目录,默认为 /data/etcdETCD
.etcd_port
: etcd 客户端端口,默认为 2379ETCD
.etcd_peer_port
: etcd 对等端口,默认为 2380ETCD
.etcd_init
: etcd 初始集群状态,新建或已存在ETCD
.etcd_election_timeout
: etcd 选举超时,默认为 1000msETCD
.etcd_heartbeat_interval
: etcd 心跳间隔,默认为 100msMINIO
.minio_seq
: minio 实例标识符,必须参数MINIO
.minio_cluster
: minio 集群名称,默认为 minioMINIO
.minio_clean
: 初始化时清理 minio 吗?默认为 falseMINIO
.minio_user
: minio 操作系统用户,默认为minio
MINIO
.minio_node
: minio 节点名模式MINIO
.minio_data
: minio 数据目录,使用 {x…y} 来指定多个驱动器MINIO
.minio_domain
: minio 外部域名,默认为sss.pigsty
MINIO
.minio_port
: minio 服务端口,默认为 9000MINIO
.minio_admin_port
: minio 控制台端口,默认为 9001MINIO
.minio_access_key
: 根访问密钥,默认为minioadmin
MINIO
.minio_secret_key
: 根秘密密钥,默认为minioadmin
MINIO
.minio_extra_vars
: minio 服务器的额外环境变量MINIO
.minio_alias
: 本地 minio 部署的别名MINIO
.minio_buckets
: 待创建的 minio 存储桶列表MINIO
.minio_users
: 待创建的 minio 用户列表
移除的参数
INFRA
.CA
.ca_homedir
: CA 主目录,现在固定为/etc/pki/
INFRA
.CA
.ca_cert
: CA 证书文件名,现在固定为ca.key
INFRA
.CA
.ca_key
: CA 密钥文件名,现在固定为ca.key
INFRA
.REPO
.repo_upstreams
: 已被repo_upstream
替代PGSQL
.PG_INSTALL
.pgdg_repo
: 现在由节点 playbooks 负责PGSQL
.PG_INSTALL
.pg_add_repo
: 现在由节点 playbooks 负责PGSQL
.PG_IDENTITY
.pg_backup
: 未使用且与部分名称冲突PGSQL
.PG_IDENTITY
.pg_preflight_skip
: 不再使用,由pg_id
替代DCS
.dcs_name
: 由于使用 etcd 而被移除DCS
.dcs_servers
: 被 ad hoc 组etcd
替代DCS
.dcs_registry
: 由于使用 etcd 而被移除DCS
.dcs_safeguard
: 被etcd_safeguard
替代DCS
.dcs_clean
: 被etcd_clean
替代
重命名的参数
nginx_upstream
->infra_portal
repo_address
->repo_endpoint
pg_hostname
->node_id_from_pg
pg_sindex
->pg_group
pg_services
->pg_default_services
pg_services_extra
->pg_services
pg_hba_rules_extra
->pg_hba_rules
pg_hba_rules
->pg_default_hba_rules
pgbouncer_hba_rules_extra
->pgb_hba_rules
pgbouncer_hba_rules
->pgb_default_hba_rules
vip_mode
->pg_vip_enabled
vip_address
->pg_vip_address
vip_interface
->pg_vip_interface
node_packages_default
->node_default_packages
node_packages_meta
->infra_packages
node_packages_meta_pip
->infra_packages_pip
node_data_dir
->node_data
Checksums
MD5 (pigsty-pkg-v2.0.0-rc1.el7.x86_64.tgz) = af4b5db9dc38c860de609956a8f1f0d3
MD5 (pigsty-pkg-v2.0.0-rc1.el8.x86_64.tgz) = 5b7152e142df3e3cbc06de30bd70e433
MD5 (pigsty-pkg-v2.0.0-rc1.el9.x86_64.tgz) = 1362e2a5680fc1a3a014cc4f304100bd
特别感谢意大利用户 @alemacci 在 SSL加密,备份,多操作系统发行版适配与自适应参数模版上的贡献!
v1.5.1
亮点
重要:修复了PG14.0-14.3中 CREATE INDEX|REINDEX CONCURRENTLY
可能导致索引数据损坏的问题。
Pigsty v1.5.1 升级默认PostgreSQL版本至 14.4 强烈建议尽快更新。
软件升级
- postgres 升级至 to 14.4
- haproxy 升级至 to 2.6.0
- grafana 升级至 to 9.0.0
- prometheus 升级至 2.36.0
- patroni 升级至 2.1.4
问题修复
- 修复了
pgsql-migration.yml
中的TYPO - 移除了HAProxy配置文件中的PID配置项
- 移除了默认软件包中的 i686 软件包
- 默认启用所有Systemd Redis Service
- 默认启用所有Systemd Patroni Service
API变更
grafana_database
与grafana_pgurl
被标记为过时API,将从后续版本移除
New Apps
- wiki.js : 使用Postgres搭建本地维基百科
- FerretDB : 使用Postgres提供MongoDB API
v1.5.0
亮点概述
- 完善的Docker支持:在管理节点上默认启用并提供诸多开箱即用的软件模板:bytebase, pgadmin, pgweb, postgrest, minio等。
- 基础设施自我监控:Nginx, ETCD, Consul, Prometheus, Grafana, Loki 自我监控
- CMDB升级:兼容性改善,支持Redis集群/Greenplum集群元数据,配置文件可视化。
- 服务发现改进:可以使用Consul自动发现所有待监控对象,并纳入Prometheus中。
- 更好的冷备份支持:默认定时备份任务,添加
pg_probackup
备份工具,一键创建延时从库。 - ETCD现在可以用作PostgreSQL/Patroni的DCS服务,作为Consul的备选项。
- Redis剧本/角色改善:现在允许对单个Redis实例,而非整个Redis节点进行初始化与移除。
详细变更列表
监控面板
- CMDB Overview:可视化Pigsty CMDB Inventory。
- DCS Overview:查阅Consul与ETCD集群的监控指标。
- Nginx Overview:查阅Pigsty Web访问指标与访问日志。
- Grafana Overview:Grafana自我监控
- Prometheus Overview:Prometheus自我监控
- INFRA Dashboard进行重制,反映基础设施整体状态
监控架构
- 现在允许使用 Consul 进行服务发现(当所有服务注册至Consul时)
- 现在所有的Infra组件会启用自我监控,并通过
infra_register
角色注册至Prometheus与Consul中。 - 指标收集器 pg_exporter 更新至 v0.5.0,添加新功能,
scale
与default
,允许为指标指定一个倍乘因子,以及指定默认值。 pg_bgwriter
,pg_wal
,pg_query
,pg_db
,pgbouncer_stat
关于时间的指标,单位由默认的毫秒或微秒统一缩放至秒。pg_table
中的相关计数器指标,现在配置有默认值0
,替代原有的NaN
。pg_class
指标收集器默认移除,相关指标添加至pg_table
与pg_index
收集器中。pg_table_size
指标收集器现在默认启用,默认设置有300秒的缓存时间。
部署方案
- 新增可选软件包
docker.tgz
,带有常用应用镜像:Pgadmin, Pgweb, Postgrest, ByteBase, Kong, Minio等。 - 新增角色ETCD,可以在DCS Servers指定的节点上自动部署ETCD服务,并自动纳入监控。
- 允许通过
pg_dcs_type
指定PG高可用使用的DCS服务,Consul(默认),ETCD(备选) - 允许通过
node_crontab
参数,为节点配置定时任务,例如数据库备份、VACUUM,统计收集等。 - 新增了
pg_checksum
选项,启用时,数据库集群将启用数据校验和(此前只有crit
模板默认启用) - 新增了
pg_delay
选项,当实例为Standby Cluster Leader时,此参数可以用于配置一个延迟从库 - 新增了软件包
pg_probackup
,默认角色replicator
现在默认赋予了备份相关函数所需的权限。 - Redis部署现在拆分为两个部分:Redis节点与Redis实例,通过
redis_port
参数可以精确控制一个具体实例。 - Loki 与 Promtail 现在使用
frpm
制作的 RPM软件包进行安装。 - DCS3配置模板现在使用一个3节点的
pg-meta
集群,与一个单节点的延迟从库。
软件升级
- 升级 PostgreSQL 至 14.3
- 升级 Redis 至 6.2.7
- 升级 PG Exporter 至 0.5.0
- 升级 Consul 至 1.12.0
- 升级 vip-manager 至 v1.0.2
- 升级 Grafana 至 v8.5.2
- 升级 Loki & Promtail 至 v2.5.0,使用frpm打包。
问题修复
- 修复了Loki 与 Promtail 默认配置文件名的问题
- 修复了Loki 与 Promtail 环境变量无法正确展开的问题
- 对英文文档进行了一次完整的翻译与修缮,文档依赖的JS资源现在直接从本地获取,无需互联网访问。
API变化
新参数
node_data_dir
: 主要的数据挂载路径,如果不存在会被创建。node_crontab_overwrite
: 覆盖/etc/crontab
而非追加内容。node_crontab
: 要被追加或覆盖的 node crontab 内容。nameserver_enabled
: 在这个基础设施节节点上启用 nameserver 吗?prometheus_enabled
: 在这个基础设施节节点上启用 prometheus 吗?grafana_enabled
: 在这个基础设施节节点上启用 grafana 吗?loki_enabled
: 在这个基础设施节节点上启用 loki 吗?docker_enable
: 在这个基础设施节点上启用 docker 吗?consul_enable
: 启用 consul 服务器/代理吗?etcd_enable
: 启用 etcd 服务器/客户端吗?pg_checksum
: 启用 pg 集群数据校验和吗?pg_delay
: 备份集群主库复制重放时的应用延迟。
参数重制
现在 *_clean
是布尔类型的参数,用于在初始化期间清除现有实例。
*_safeguard
也是布尔类型的参数,用于在执行任何剧本时,避免清除正在运行的实例。
pg_exists_action
->pg_clean
pg_disable_purge
->pg_safeguard
dcs_exists_action
->dcs_clean
dcs_disable_purge
->dcs_safeguard
参数重命名
node_ntp_config
->node_ntp_enabled
node_admin_setup
->node_admin_enabled
node_admin_pks
->node_admin_pk_list
node_dns_hosts
->node_etc_hosts_default
node_dns_hosts_extra
->node_etc_hosts
node_dns_server
->node_dns_method
node_local_repo_url
->node_repo_local_urls
node_packages
->node_packages_default
node_extra_packages
->node_packages
node_packages_meta
->node_packages_meta
node_meta_pip_install
->node_packages_meta_pip
node_sysctl_params
->node_tune_params
app_list
->nginx_indexes
grafana_plugin
->grafana_plugin_method
grafana_cache
->grafana_plugin_cache
grafana_plugins
->grafana_plugin_list
grafana_git_plugin_git
->grafana_plugin_git
haproxy_admin_auth_enabled
->haproxy_auth_enabled
pg_shared_libraries
->pg_libs
dcs_type
->pg_dcs_type
v1.4.1
日常错误修复 / Docker 支持 / 英文文档
现在,默认在元节点上启用 docker。您可以使用它启动海量的各类软件
现在提供英文文档。
Bug 修复
- 修复 promtail & loki 配置变量问题
- 修复 grafana 旧版警报。
- 默认禁用 nameserver
- 为 patroni 快捷方式重命名 pg-alias.sh
- 为所有仪表板禁用 exemplars 查询
- 修复 loki 数据目录问题 https://github.com/Vonng/pigsty/issues/100
- 将 autovacuum_freeze_max_age 从 100000000 更改为 1000000000
v1.4.0
架构
- 将系统解耦为4大类别:
INFRA
、NODES
、PGSQL
、REDIS
,这使得pigsty更加清晰、更易于扩展。 - 单节点部署 =
INFRA
+NODES
+PGSQL
- 部署pgsql集群 =
NODES
+PGSQL
- 部署redis集群 =
NODES
+REDIS
- 部署其他数据库 =
NODES
+ xxx(例如MONGO
、KAFKA
…待定)
可访问性
- 为中国大陆提供CDN。
- 使用
bash -c "$(curl -fsSL http://get.pigsty.cc/latest)"
获取最新源代码。 - 使用新的
download
脚本下载并提取包。
监控增强
- 将监控系统分为5大类别:
INFRA
、NODES
、REDIS
、PGSQL
、APP
- 默认启用日志记录
- 现在默认启用
loki
和promtail
,带有预构建的 loki-rpm。
- 现在默认启用
- 模型和标签
- 为所有仪表板添加了一个隐藏的
ds
prometheus数据源变量,因此您只需选择一个新的数据源而不是修改Grafana数据源和仪表板。 - 为所有指标添加了一个
ip
标签,并将其用作数据库指标和节点指标之间的连接键。
- 为所有仪表板添加了一个隐藏的
- INFRA监控
- Infra主仪表板:INFRA概览
- 添加日志仪表板:日志实例
- PGLOG分析和PGLOG会话现在被视为一个示例Pigsty APP。
- NODES监控应用
- 如果您完全不关心数据库,现在可以单独使用Pigsty作为主机监控软件!
- 包括4个核心仪表板:节点概览 & 节点集群 & 节点实例 & 节点警报
- 为节点引入新的身份变量:
node_cluster
和nodename
- 变量
pg_hostname
现在意味着将主机名设置为与postgres实例名相同,以保持向后兼容性 - 变量
nodename_overwrite
控制是否用nodename覆盖节点的主机名 - 变量
nodename_exchange
将nodename写入彼此的/etc/hosts
- 所有节点指标引用都经过修订,通过
ip
连接 - 节点监控目标在
/etc/prometheus/targets/nodes
下单独管理
- PGSQL监控增强
- 完全新的PGSQL集群,简化并专注于集群中的重要内容。
- 新仪表板PGSQL数据库是集群级对象监控。例如整个集群而不是单个实例的表和查询。
- PGSQL警报仪表板现在只关注pgsql警报。
- PGSQL Shard已添加到PGSQL中。
- Redis监控增强
- 为所有redis仪表板添加节点监控。
MatrixDB支持
- 通过
pigsty-matrix.yml
playbook可以部署MatrixDB(Greenplum 7) - MatrixDB监控仪表板:PGSQL MatrixDB
- 添加示例配置:
pigsty-mxdb.yml
监控增强
- 将监控系统分为5大类别:
INFRA
、NODES
、REDIS
、PGSQL
、APP
- 默认启用日志记录
- 现在默认启用
loki
和promtail
,带有预构建的 loki-rpm。
- 现在默认启用
- 模型和标签
- 为所有仪表板添加了一个隐藏的
ds
prometheus数据源变量,因此您只需选择一个新的数据源而不是修改Grafana数据源和仪表板。 - 为所有指标添加了一个
ip
标签,并将其用作数据库指标和节点指标之间的连接键。
- 为所有仪表板添加了一个隐藏的
- INFRA监控
- Infra主仪表板:INFRA概览
- 添加日志仪表板:日志实例
- PGLOG分析和PGLOG会话现在被视为一个示例Pigsty APP。
- NODES监控应用
- 如果您完全不关心数据库,现在可以单独使用Pigsty作为主机监控软件!
- 包括4个核心仪表板:节点概览 & 节点集群 & 节点实例 & 节点警报
- 为节点引入新的身份变量:
node_cluster
和nodename
- 变量
pg_hostname
现在意味着将主机名设置为与postgres实例名相同,以保持向后兼容性 - 变量
nodename_overwrite
控制是否用nodename覆盖节点的主机名 - 变量
nodename_exchange
将nodename写入彼此的/etc/hosts
- 所有节点指标引用都经过修订,通过
ip
连接 - 节点监控目标在
/etc/prometheus/targets/nodes
下单独管理
- PGSQL监控增强
- 完全新的PGSQL集群,简化并专注于集群中的重要内容。
- 新仪表板PGSQL数据库是集群级对象监控。例如整个集群而不是单个实例的表和查询。
- PGSQL警报仪表板现在只关注pgsql警报。
- PGSQL Shard已添加到PGSQL中。
- Redis监控增强
- 为所有redis仪表板添加节点监控。
MatrixDB支持
- 通过
pigsty-matrix.yml
playbook可以部署MatrixDB(Greenplum 7) - MatrixDB监控仪表板:PGSQL MatrixDB
- 添加示例配置:
pigsty-mxdb.yml
置备改进
现在 pigsty 的工作流如下:
infra.yml ---> 在单一的元节点上安装 pigsty
| 然后将更多节点加入 pigsty 的管理下
|
nodes.yml ---> 为 pigsty 准备节点(节点设置、dcs、node_exporter、promtail)
| 然后选择一个 playbook 在这些节点上部署数据库集群
|
^--> pgsql.yml 在已准备好的节点上安装 postgres
^--> redis.yml 在已准备好的节点上安装 redis
infra-demo.yml =
infra.yml -l meta +
nodes.yml -l pg-test +
pgsql.yml -l pg-test +
infra-loki.yml + infra-jupyter.yml + infra-pgweb.yml
nodes.yml
:用于设置和准备 pigsty 的节点,- 在节点上设置 node、node_exporter、consul agent
node-remove.yml
用于节点注销pgsql.yml
:现在只在已准备好的节点上工作pgsql-remove
现在只负责 postgres 本身(dcs 和节点监控由node.yml
负责)- 添加一系列新选项以在 greenplum/matrixdb 中重用
postgres
角色 redis.yml
:现在在已准备好的节点上工作- 而
redis-remove.yml
现在从节点上移除 redis。 pgsql-matrix.yml
现在在已准备好的节点上安装 matrixdb(Greenplum 7)。
软件升级
- PostgreSQL 14.2
- PostGIS 3.2
- TimescaleDB 2.6
- Patroni 2.1.3 (Prometheus 指标 + 故障转移插槽)
- HAProxy 2.5.5 (修复统计错误,更多指标)
- PG 导出器 0.4.1 (超时参数等)
- Grafana 8.4.4
- Prometheus 2.33.4
- Greenplum 6.19.4 / MatrixDB 4.4.0
- Loki 现在作为 rpm 包提供,而不是 zip 存档。
错误修复
- 删除 patroni 的 consul 依赖,这使其更容易迁移到新的 consul 集群
- 修复 prometheus bin/new 脚本的默认数据目录路径:从
/export/prometheus
更改为/data/prometheus
- 在 vip-manager systemd 服务中添加重新启动秒数
- 修复错别字和任务
API 变更
新增变量
node_cluster
:节点集群的身份变量nodename_overwrite
:如果设置,则 nodename 将设置为节点的主机名nodename_exchange
:交换 play 主机之间的节点主机名(在/etc/hosts
中)node_dns_hosts_extra
:可以通过单个实例/集群轻松覆盖的额外静态 dns 记录patroni_enabled
:如果禁用,postgres & patroni 的引导过程不会在postgres
角色期间执行pgbouncer_enabled
:如果禁用,pgbouncer 在postgres
角色期间不会启动pg_exporter_params
:生成监控目标 url 时为 pg_exporter 提供的额外 url 参数。pg_provision
:布尔值变量,表示是否执行postgres
角色的资源配置部分(模板,数据库,用户)no_cmdb
:用于infra.yml
和infra-demo.yml
播放书,不会在元节点上创建 cmdb。
MD5 (app.tgz) = f887313767982b31a2b094e5589a75ea
MD5 (matrix.tgz) = 3d063437c482d94bd7e35df1a08bbc84
MD5 (pigsty.tgz) = e143b88ebea1474f9ebaffddc6072c49
MD5 (pkg.tgz) = 73e8f5ce995b1f1760cb63c1904fb91b
v1.3.1
监控
- PGSQL & PGCAT 仪表盘改进
- 优化 pgcat 实例 & pgcat 数据库的布局
- 在 pgsql 实例仪表盘中添加关键指标面板,与 pgsql 集群保持一致
- 在 pgcat 数据库中添加表/索引膨胀面板,移除 pgcat 膨胀仪表盘
- 在 pgcat 数据库仪表盘中添加索引信息
- 修复在 grafana 8.3 中的损坏面板
- 在 nginx 主页中添加 redis 索引
部署
- 新的
infra-demo.yml
剧本用于一次性引导 - 使用
infra-jupyter.yml
剧本部署可选的 jupyter lab 服务器 - 使用
infra-pgweb.yml
剧本部署可选的 pgweb 服务器 - 在 meta 节点上新的
pg
别名,可以从 admin 用户启动 postgres 集群(除了 postgres) - 根据
timescaledb-tune
的建议调整所有 patroni 配置模板中的max_locks_per_transactions
- 在配置模板中添加
citus.node_conninfo: 'sslmode=prefer'
以便在没有 SSL 的情况下使用 citus - 在 pgdg14 包列表中添加所有扩展(除了 pgrouting)
- 将 node_exporter 升级到 v1.3.1
- 将 PostgREST v9.0.0 添加到包列表。从 postgres 模式生成 API。
错误修复
- Grafana 的安全漏洞(升级到 v8.3.1 问题)
- 修复
pg_instance
&pg_service
在register
角色中从剧本的中间开始时的问题 - 修复在没有
pg_cluster
变量存在的主机上 nginx 主页渲染问题 - 在升级到 grafana 8.3.1 时修复样式问题
v1.3.0
- 【功能增强】Redis 部署(集群、哨兵、主从)
- 【功能增强】Redis 监控
- Redis 总览仪表盘
- Redis 集群仪表盘
- Redis 实例仪表盘 -【功能增强】 监控:PGCAT 大修
- 新仪表盘:PGCAT 实例
- 新仪表盘:PGCAT 数据库仪表盘
- 重做仪表盘:PGCAT 表格
- 【功能增强】 监控:PGSQL 增强
- 新面板:PGSQL 集群,添加 10 个关键指标面板(默认切换)
- 新面板:PGSQL 实例,添加 10 个关键指标面板(默认切换)
- 简化 & 重新设计:PGSQL 服务
- 在 PGCAT & PGSL 仪表盘之间添加交叉引用 -【功能增强】 监控部署
- 现在 grafana 数据源在仅监控部署期间自动注册 -【功能增强】 软件升级
- 将 PostgreSQL 13 添加到默认包列表
- 默认升级到 PostgreSQL 14.1
- 添加 greenplum rpm 和依赖项
- 添加 redis rpm & 源代码包
- 将 perf 添加为默认包
v1.2.0
- 【功能增强】默认使用 PostgreSQL 14 版本
- 【功能增强】默认使用 TimescaleDB 2.5 扩展
- 现在 timescaledb 和 postgis 默认在 cmdb 中启用
- 【功能增强】 新增仅监控模式:
- 仅通过可连接的 URL,您可以使用 pigsty 监控现有的 pg 实例
- pg_exporter 将在本地的 meta 节点上部署
- 新仪表板 PGSQL Cluster Monly 用于远程集群
- 【功能增强】软件升级
- grafana 升级到 8.2.2
- pev2 升级到 v0.11.9
- promscale 升级到 0.6.2
- pgweb 升级到 0.11.9
- 新增扩展:pglogical、pg_stat_monitor、orafce
-【功能增强】自动检测机器规格并使用适当的
node_tune
和pg_conf
模板 -【功能增强】重做与膨胀相关的视图,现在公开更多信息 -【功能增强】删除 timescale 和 citus 的内部监控 -【功能增强】新剧本pgsql-audit.yml
用于创建审计报告 -【BUG修复】现在 pgbouncer_exporter 资源所有者是 {{ pg_dbsu }} 而不是 postgres -【BUG修复】 修复在执行REINDEX TABLE CONCURRENTLY
时 pg_exporter 在 pg_table pg_index 上的重复指标 -【功能增强】现在所有配置模板都减少到两个:auto 和 demo。(已删除:pub4, pg14, demo4, tiny, oltp
) - 如果
vagrant
是默认用户,则配置pigsty-demo
,否则使用pigsty-auto
。
如何从 v1.1.1 升级
在 1.2.0 中没有 API 变更。您仍然可以使用旧的 pigsty.yml
配置文件 (PG13)。
对于基础设施部分,重新执行 repo
将完成大部分工作。
至于数据库,您仍然可以使用现有的 PG13 实例。就地升级在涉及到像 PostGIS 和 Timescale 这样的扩展时非常棘手。我强烈推荐使用逻辑复制进行数据库迁移。
新的剧本 pgsql-migration.yml
将使这一过程变得容易得多。它将创建一系列的脚本,帮助您近乎零停机时间地迁移您的集群。
v1.1.1
- 【功能增强】 用
timescale
版本替换 timescaledb 的apache
版本 - 【功能增强】 升级 prometheus 到 2.30
- 【BUG修复】 现在 pg_exporter 配置目录的属主是
{{ pg_dbsu }}
,而不再是prometheus
如何从v1.1.0升级?
这个版本的主要变动是 TimescaleDB,使用 TimescaleDB License (TSL)的官方版本替代了 PGDG 仓库中的 Apache License v2 的版本。
stop/pause postgres instance with timescaledb
yum remove -y timescaledb_13
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/$basearch
repo_gpgcheck=0
gpgcheck=0
enabled=1
yum install timescaledb-2-postgresql13
v1.1.0
- 【增强功能】 增加
pg_dummy_filesize
以创建文件系统空间占位符 - 【增强功能】 主页大改版
- 【增强功能】 增加 Jupyter Lab 整合
- 【增强功能】 增加 pgweb 控制台整合
- 【增强功能】 增加 pgbadger 支持
- 【增强功能】 增加 pev2 支持,解释可视化工具
- 【增强功能】 增加 pglog 工具
- 【增强功能】 更新默认的 pkg.tgz 软件版本:
- PostgreSQL 升级至 v13.4(支持官方的 pg14)
- pgbouncer 升级至 v1.16(指标定义更新)
- Grafana 升级至 v8.1.4
- Prometheus 升级至 v2.2.29
- node_exporter 升级至 v1.2.2
- haproxy 升级至 v2.1.1
- consul 升级至 v1.10.2
- vip-manager 升级至 v1.0.1
API 变更
nginx_upstream
现在持有不同的结构。(不兼容)- 新的配置条目:
app_list
,渲染至主页的导航条目 - 新的配置条目:
docs_enabled
,在默认服务器上设置本地文档 - 新的配置条目:
pev2_enabled
,设置本地的 pev2 工具 - 新的配置条目:
pgbadger_enabled
,创建日志概要/报告目录 - 新的配置条目:
jupyter_enabled
,在元节点上启用 Jupyter Lab 服务器 - 新的配置条目:
jupyter_username
,指定运行 Jupyter Lab 的用户 - 新的配置条目:
jupyter_password
,指定 Jupyter Lab 的默认密码 - 新的配置条目:
pgweb_enabled
,在元节点上启用 pgweb 服务器 - 新的配置条目:
pgweb_username
,指定运行 pgweb 的用户 - 将内部标记
repo_exist
重命名为repo_exists
- 现在
repo_address
的默认值为pigsty
而非yum.pigsty
- 现在 haproxy 的访问点为
http://pigsty
而非http://h.pigsty
v1.0.1
2021-09-14
- 文档更新
- 现已支持中文文档
- 现已支持机器翻译的英文文档
- 错误修复:
pgsql-remove
不会移除主实例 - 错误修复:用 pg_cluster + pg_seq 替换 pg_instance
- Start-At-Task 可能因为 pg_instance 未定义而失败
- 错误修复:从默认共享预加载库中移除 citus
- citus 会强制 max_prepared_transaction 的值为非零
- 错误修复:在
configure
中进行 ssh sudo 检查:- 现在使用
ssh -t sudo -n ls
进行权限检查
- 现在使用
- 笔误修复:
pg-backup
脚本的笔误 - 警报调整:移除 NTP 合理性检查警报(与 ClockSkew 重复)
- 导出器调整:移除 collector.systemd 以减少开销
v1.0.0
v1 正式发布,监控系统全面改进
亮点
- 监控系统全面改进
- 在 Grafana 8.0 上新增仪表盘
- 新的度量定义,增加 PG14 支持
- 简化的标签系统:静态标签集:(job, cls, ins)
- 新的警报规则与衍生度量
- 同时监控多个数据库
- 实时日志搜索 & csvlog 分析
- 链接丰富的仪表盘,点击图形元素进行深入|汇总
- 架构变更
- 将 citus 和 timescaledb 加入默认安装部分
- 增加对 PostgreSQL 14beta2 的支持
- 简化 haproxy 管理页面索引
- 通过添加新的角色
register
来解耦基础设施和 pgsql - 添加新角色
loki
和promtail
用于日志记录 - 为管理员节点上的管理员用户添加新角色
environ
以设置环境 - 默认使用
static
服务发现用于 prometheus(而不是consul
) - 添加新角色
remove
以优雅地移除集群和实例 - 升级 prometheus 和 grafana 的配置逻辑
- 升级到 vip-manager 1.0,node_exporter 1.2,pg_exporter 0.4,grafana 8.0
- 现在,每个实例上的每个数据库都可以自动注册为 grafana 数据源
- 将 consul 注册任务移到
register
角色,更改 consul 服务标签 - 添加 cmdb.sql 作为 pg-meta 基线定义(CMDB & PGLOG)
- 应用框架
- 可扩展框架用于新功能
- 核心应用:PostgreSQL 监控系统:
pgsql
- 核心应用:PostgreSQL 目录浏览器:
pgcat
- 核心应用:PostgreSQL Csvlog 分析器:
pglog
- 添加示例应用
covid
用于可视化 covid-19 数据 - 添加示例应用
isd
用于可视化 isd 数据
- 其他
- 添加 jupyterlab,为数据科学提供完整的 python 环境
- 添加
vonng-echarts-panel
以恢复对 Echarts 的支持 - 添加 wrap 脚本
createpg
,createdb
,createuser
- 添加 cmdb 动态库存脚本:
load_conf.py
,inventory_cmdb
,inventory_conf
- 移除过时的剧本:
pgsql-monitor
,pgsql-service
,node-remove
等….
API 变更
- 新变量:
node_meta_pip_install
- 新变量:
grafana_admin_username
- 新变量:
grafana_database
- 新变量:
grafana_pgurl
- 新变量:
pg_shared_libraries
- 新变量:
pg_exporter_auto_discovery
- 新变量:
pg_exporter_exclude_database
- 新变量:
pg_exporter_include_database
- 变量重命名:
grafana_url
为grafana_endpoint
Bug 修复
- 修复默认时区 Asia/Shanghai (CST) 问题
- 修复 pgbouncer & patroni 的 nofile 限制
- 当执行标签
pgbouncer
时,pgbouncer 的用户列表和数据库列表将会被生成
v0.9.0
v0.9极大简化了安装流程,进行了大量日志相关改进,开发了命令行工具(Beta),并修复了一系列问题。
新功能
-
一键安装模式:
/bin/bash -c "$(curl -fsSL https://pigsty.cc/install)"
-
开发命令行工具
pigsty-cli
封装常用Ansible命令,目前pigsty-cli处于Beta状态 -
使用Loki与Promtail收集日志:
- 默认收集Postgres,Pgbouncer,Patroni日志
- 新增部署脚本
infra-loki.yml
与pgsql-promtail.yml
- 定义基于日志的监控指标
- 使用Grafana制作日志相关可视化面板。
-
监控组件可以使用二进制安装,使用
files/get_bin.sh
下载监控二进制组件。 -
飞升模式: 当集群元节点初始化完成后,可以使用
bin/upgrade
升级为动态Inventory 使用pg-meta上的数据库代替YAML配置文件。
问题修复
- 集中修复日志相关问题:
- 修复了HAProxy健康检查造成PG日志中大量
connection reset by peer
的问题。 - 修复了HAProxy健康检查造成Patroni日志中大量出现
Connect Reset
Exception的问题 - 修复了Patroni日志时间戳格式,去除毫秒时间戳,附加完整时区信息。
- 为
dbuser_monitor
配置1秒的log_min_duration_statement
,避免监控查询出现在日志中。
- 修复了HAProxy健康检查造成PG日志中大量
- 重构Grafana角色
- 在保持API不变的前提下重构Grafana角色。
- 使用CDN下载预打包的Grafana插件,加速插件下载
- 其他问题修复
- 修复了
pgbouncer-create-user
未能正确处理 md5 密码的问题。 - 完善了数据库与用户创建SQL模版中参数空置检查。
- 修复了 NODE DNS配置时如果手工中断执行,DNS配置可能出错的问题。
- 重构了Makefile快捷方式 Makefile 中的错别字
- 修复了
参数变更
node_disable_swap
默认为 False,默认不会关闭SWAP。node_sysctl_params
不再有默认修改的系统参数。grafana_plugin
的默认值install
现在意味着当插件缓存不存在时,从CDN下载。repo_url_packages
现在从 Pigsty CDN 下载额外的RPM包,解决墙内无法访问的问题。proxy_env.no_proxy
现在将Pigsty CDN加入到NOPROXY列表中。grafana_customize
现在默认为false
,启用意味着安装Pigsty Pro版UI(默认不开源所以不要启用)node_admin_pk_current
,新增选项,启用后会将当前用户的~/.ssh/id_rsa.pub
添加至管理员的Key中loki_clean
:新增选项,安装Loki时是否清除现有数据loki_data_dir
:新增选项,指明安装Loki时的数据目录promtail_enabled
是否启用Promtail日志收集服务?promtail_clean
是否在安装promtail时移除已有状态信息?promtail_port
promtail使用的默认端口,默认为9080promtail_status_file
保存Promtail状态信息的文件位置promtail_send_url
用于接收日志的loki服务endpoint
v0.8.0
v0.8 针对 服务(Service) 接入部分进行了彻底的重做。现在除了默认的primary
, replica
服务外,用户可以自行定义新的服务。服务的接口可以支持多种不同的实现,例如L4 DPKG VIP可作为Haproxy的替代品与Pigsty集成。同时,针对用户反馈的一些问题进行了集中处理与改进。
改动内容
v0.8是供给方案定稿版本,此后供给系统的API将保持稳定。
API变更
原有vip
与haproxy
角色的所有配置项,现在迁移至service
角色中。
#------------------------------------------------------------------------------
# SERVICE PROVISION
#------------------------------------------------------------------------------
pg_weight: 100 # default load balance weight (instance level)
# - service - #
pg_services: # how to expose postgres service in cluster?
# primary service will route {ip|name}:5433 to primary pgbouncer (5433->6432 rw)
- name: primary # service name {{ pg_cluster }}_primary
src_ip: "*"
src_port: 5433
dst_port: pgbouncer # 5433 route to pgbouncer
check_url: /primary # primary health check, success when instance is primary
selector: "[]" # select all instance as primary service candidate
# replica service will route {ip|name}:5434 to replica pgbouncer (5434->6432 ro)
- name: replica # service name {{ pg_cluster }}_replica
src_ip: "*"
src_port: 5434
dst_port: pgbouncer
check_url: /read-only # read-only health check. (including primary)
selector: "[]" # select all instance as replica service candidate
selector_backup: "[? pg_role == `primary`]" # primary are used as backup server in replica service
# default service will route {ip|name}:5436 to primary postgres (5436->5432 primary)
- name: default # service's actual name is {{ pg_cluster }}-{{ service.name }}
src_ip: "*" # service bind ip address, * for all, vip for cluster virtual ip address
src_port: 5436 # bind port, mandatory
dst_port: postgres # target port: postgres|pgbouncer|port_number , pgbouncer(6432) by default
check_method: http # health check method: only http is available for now
check_port: patroni # health check port: patroni|pg_exporter|port_number , patroni by default
check_url: /primary # health check url path, / as default
check_code: 200 # health check http code, 200 as default
selector: "[]" # instance selector
haproxy: # haproxy specific fields
maxconn: 3000 # default front-end connection
balance: roundrobin # load balance algorithm (roundrobin by default)
default_server_options: 'inter 3s fastinter 1s downinter 5s rise 3 fall 3 on-marked-down shutdown-sessions slowstart 30s maxconn 3000 maxqueue 128 weight 100'
# offline service will route {ip|name}:5438 to offline postgres (5438->5432 offline)
- name: offline # service name {{ pg_cluster }}_replica
src_ip: "*"
src_port: 5438
dst_port: postgres
check_url: /replica # offline MUST be a replica
selector: "[? pg_role == `offline` || pg_offline_query ]" # instances with pg_role == 'offline' or instance marked with 'pg_offline_query == true'
selector_backup: "[? pg_role == `replica` && !pg_offline_query]" # replica are used as backup server in offline service
pg_services_extra: [] # extra services to be added
# - haproxy - #
haproxy_enabled: true # enable haproxy among every cluster members
haproxy_reload: true # reload haproxy after config
haproxy_policy: roundrobin # roundrobin, leastconn
haproxy_admin_auth_enabled: false # enable authentication for haproxy admin?
haproxy_admin_username: admin # default haproxy admin username
haproxy_admin_password: admin # default haproxy admin password
haproxy_exporter_port: 9101 # default admin/exporter port
haproxy_client_timeout: 3h # client side connection timeout
haproxy_server_timeout: 3h # server side connection timeout
# - vip - #
vip_mode: none # none | l2 | l4
vip_reload: true # whether reload service after config
# vip_address: 127.0.0.1 # virtual ip address ip (l2 or l4)
# vip_cidrmask: 24 # virtual ip address cidr mask (l2 only)
# vip_interface: eth0 # virtual ip network interface (l2 only)
新增选项
# - localization - #
pg_encoding: UTF8 # default to UTF8
pg_locale: C # default to C
pg_lc_collate: C # default to C
pg_lc_ctype: en_US.UTF8 # default to en_US.UTF8
pg_reload: true # reload postgres after hba changes
vip_mode: none # none | l2 | l4
vip_reload: true # whether reload service after config
移除选项
haproxy_check_port # Haproxy相关参数已经被Service定义覆盖
haproxy_primary_port
haproxy_replica_port
haproxy_backend_port
haproxy_weight
haproxy_weight_fallback
vip_enabled # vip_enabled参数被vip_mode覆盖
服务管理
pg_services
与 pg_services_extra
定义了集群中的服务,每一个服务的定义结构如下例所示:
一个服务必须指定以下内容:
-
名称:服务的完整名称以数据库集群名为前缀,以
service.name
为后缀,通过-
连接。例如在pg-test
集群中name=primary
的服务,其完整服务名称为pg-test-primary
。 -
端口:在Pigsty中,服务默认采用NodePort的形式对外暴露,因此暴露端口为必选项。但如果使用外部负载均衡服务接入方案,您也可以通过其他的方式区分服务。
-
选择器:选择器指定了服务的成员,采用JMESPath的形式,从所有集群实例成员中筛选变量。默认的
[]
选择器会选取所有的集群成员。此外
selector_backup
会选择或标记用于backup的实例列表(当集群中所有其他成员失效时方才接管服务)
# default service will route {ip|name}:5436 to primary postgres (5436->5432 primary)
- name: default # service's actual name is {{ pg_cluster }}-{{ service.name }}
src_ip: "*" # service bind ip address, * for all, vip for cluster virtual ip address
src_port: 5436 # bind port, mandatory
dst_port: postgres # target port: postgres|pgbouncer|port_number , pgbouncer(6432) by default
check_method: http # health check method: only http is available for now
check_port: patroni # health check port: patroni|pg_exporter|port_number , patroni by default
check_url: /primary # health check url path, / as default
check_code: 200 # health check http code, 200 as default
selector: "[]" # instance selector
haproxy: # haproxy specific fields
maxconn: 3000 # default front-end connection
balance: roundrobin # load balance algorithm (roundrobin by default)
default_server_options: 'inter 3s fastinter 1s downinter 5s rise 3 fall 3 on-marked-down shutdown-sessions slowstart 30s maxconn 3000 maxqueue 128 weight 100'
数据库管理
数据库现在可以对locale的细分选项:lc_ctype
与lc_collate
分别进行指定。支持这一功能的主要原因是PG的扩展插件pg_trgm
需要在lc_ctype!=C
的环境中才能正常支持中文。
旧接口定义
pg_databases:
- name: meta # name is the only required field for a database
owner: postgres # optional, database owner
template: template1 # optional, template1 by default
encoding: UTF8 # optional, UTF8 by default
locale: C # optional, C by default
allowconn: true # optional, true by default, false disable connect at all
revokeconn: false # optional, false by default, true revoke connect from public # (only default user and owner have connect privilege on database)
tablespace: pg_default # optional, 'pg_default' is the default tablespace
connlimit: -1 # optional, connection limit, -1 or none disable limit (default)
extensions: # optional, extension name and where to create
- {name: postgis, schema: public}
parameters: # optional, extra parameters with ALTER DATABASE
enable_partitionwise_join: true
pgbouncer: true # optional, add this database to pgbouncer list? true by default
comment: pigsty meta database # optional, comment string for database
新的接口定义
pg_databases:
- name: meta # name is the only required field for a database
# owner: postgres # optional, database owner
# template: template1 # optional, template1 by default
# encoding: UTF8 # optional, UTF8 by default , must same as template database, leave blank to set to db default
# locale: C # optional, C by default , must same as template database, leave blank to set to db default
# lc_collate: C # optional, C by default , must same as template database, leave blank to set to db default
# lc_ctype: C # optional, C by default , must same as template database, leave blank to set to db default
allowconn: true # optional, true by default, false disable connect at all
revokeconn: false # optional, false by default, true revoke connect from public # (only default user and owner have connect privilege on database)
# tablespace: pg_default # optional, 'pg_default' is the default tablespace
connlimit: -1 # optional, connection limit, -1 or none disable limit (default)
extensions: # optional, extension name and where to create
- {name: postgis, schema: public}
parameters: # optional, extra parameters with ALTER DATABASE
enable_partitionwise_join: true
pgbouncer: true # optional, add this database to pgbouncer list? true by default
comment: pigsty meta database # optional, comment string for database
v0.7.0
v0.7 针对接入已有数据库实例进行了改进,现在用户可以采用 仅监控部署(Monly Deployment) 模式使用Pigsty。同时新增了专用于管理数据库与用户、以及单独部署监控的剧本,并对数据库与用户的定义进行改进。
Features
- Monitor Only Deployment Support #25
- Split monolith static monitor target file into per-cluster conf #36
- Add create user playbook #29
- Add create database playbook #28
- Database provisioning interface enhancement #33
- User provisioning interface enhancement #34
Bug Fix
API变更
新增选项
prometheus_sd_target: batch # batch|single 监控目标定义文件采用单体还是每个实例一个
exporter_install: none # none|yum|binary 监控Exporter的安装模式
exporter_repo_url: '' # 如果设置,这里的REPO连接会加入目标的Yum源中
node_exporter_options: '--no-collector.softnet --collector.systemd --collector.ntp --collector.tcpstat --collector.processes' # Node Exporter默认的命令行选项
pg_exporter_url: '' # 可选,PG Exporter监控对象的URL
pgbouncer_exporter_url: '' # 可选,PGBOUNCER EXPORTER监控对象的URL
移除选项
exporter_binary_install: false # 功能被 exporter_install 覆盖
定义结构变更
pg_default_roles # 变化细节参考 用户管理。
pg_users # 变化细节参考 用户管理。
pg_databases # 变化细节参考 数据库管理。
重命名选项
pg_default_privilegs -> pg_default_privileges # 很明显这是一个错别字
仅监控模式
有时用户不希望使用Pigsty供给方案,只希望使用Pigsty监控系统管理现有PostgreSQL实例。
Pigsty提供了仅监控部署(monly, monitor-only模式,剥离供给方案部分,可用于监控现有PostgreSQL集群。
仅监控模式的部署流程与标准模式大体上保持一致,但省略了很多步骤
- 在元节点上完成基础设施初始化的部分与标准流程保持一致,仍然通过
./infra.yml
完成。 - 不需要在数据库节点上完成 基础设施初始化。
- 不需要在数据库节点上执行数据库初始化的绝大多数任务,而是通过专用的
./pgsql-monitor.yml
完成仅监控系统部署。 - 实际使用的配置项大大减少,只保留基础设施相关变量,与 监控系统相关的少量变量。
数据库管理
Database provisioning interface enhancement #33
旧接口定义
pg_databases: # create a business database 'meta'
- name: meta
schemas: [meta] # create extra schema named 'meta'
extensions: [{name: postgis}] # create extra extension postgis
parameters: # overwrite database meta's default search_path
search_path: public, monitor
新的接口定义
pg_databases:
- name: meta # name is the only required field for a database
owner: postgres # optional, database owner
template: template1 # optional, template1 by default
encoding: UTF8 # optional, UTF8 by default
locale: C # optional, C by default
allowconn: true # optional, true by default, false disable connect at all
revokeconn: false # optional, false by default, true revoke connect from public # (only default user and owner have connect privilege on database)
tablespace: pg_default # optional, 'pg_default' is the default tablespace
connlimit: -1 # optional, connection limit, -1 or none disable limit (default)
extensions: # optional, extension name and where to create
- {name: postgis, schema: public}
parameters: # optional, extra parameters with ALTER DATABASE
enable_partitionwise_join: true
pgbouncer: true # optional, add this database to pgbouncer list? true by default
comment: pigsty meta database # optional, comment string for database
接口变更
- Add new options:
template
,encoding
,locale
,allowconn
,tablespace
,connlimit
- Add new option
revokeconn
, which revoke connect privileges from public for this database - Add
comment
field for database
数据库变更
在运行中集群中创建新数据库可以使用pgsql-createdb.yml
剧本,在配置中定义完新数据库后,执行以下剧本。
./pgsql-createdb.yml -e pg_database=<your_new_database_name>
通过-e pg_datbase=
告知需要创建的数据库名称,则该数据库即会被创建(或修改)。具体执行的命令参见集群主库/pg/tmp/pg-db-{{ database.name}}.sql
文件。
用户管理
User provisioning interface enhancement #34
旧接口定义
pg_users:
- username: test # example production user have read-write access
password: test # example user's password
options: LOGIN # extra options
groups: [ dbrole_readwrite ] # dborole_admin|dbrole_readwrite|dbrole_readonly
comment: default test user for production usage
pgbouncer: true # add to pgbouncer
新接口定义
pg_users:
# complete example of user/role definition for production user
- name: dbuser_meta # example production user have read-write access
password: DBUser.Meta # example user's password, can be encrypted
login: true # can login, true by default (should be false for role)
superuser: false # is superuser? false by default
createdb: false # can create database? false by default
createrole: false # can create role? false by default
inherit: true # can this role use inherited privileges?
replication: false # can this role do replication? false by default
bypassrls: false # can this role bypass row level security? false by default
connlimit: -1 # connection limit, -1 disable limit
expire_at: '2030-12-31' # 'timestamp' when this role is expired
expire_in: 365 # now + n days when this role is expired (OVERWRITE expire_at)
roles: [dbrole_readwrite] # dborole_admin|dbrole_readwrite|dbrole_readonly
pgbouncer: true # add this user to pgbouncer? false by default (true for production user)
parameters: # user's default search path
search_path: public
comment: test user
接口变更
username
field rename toname
groups
field rename toroles
options
now split into separated configration entries:login
,superuser
,createdb
,createrole
,inherit
,replication
,bypassrls
,connlimit
expire_at
andexpire_in
optionspgbouncer
option for user is nowfalse
by default
用户管理
在运行中集群中创建新数据库可以使用pgsql-createuser.yml
剧本,在配置中定义完新数据库后,执行以下剧本。
./pgsql-createuser.yml -e pg_user=<your_new_user_name>
通过-e pg_user=
告知需要创建的数据库名称,则该数据库即会被创建(或修改)。具体执行的命令参见集群主库/pg/tmp/pg-user-{{ user.name}}.sql
文件。
v0.6.0
v0.6 对数据库供给方案进行了修改与调整,根据用户的反馈添加了一系列实用功能与修正。针对监控系统的移植性进行优化,便于与其他外部数据库供给方案对接。
BUG修复
- 修复了新版本Patroni重启后会重置PG HBA的问题
- 修复了PG Overview Dashboard标题中的别字
- 修复了沙箱集群
pg-test
的默认主库,原来为pg-test-2
,应当为pg-test-1
- 修复了过时代码注释
功能改进
- 改造Prometheus与监控供给方式
- Haproxy供给重构与改进 #8
- 访问控制模型改进。#7
- 添加了默认角色
dbrole_offline
,用于慢查询,ETL,交互式查询场景。 - 修改默认HBA规则,允许
dbrole_offline
分组的用户访问pg_role == 'offline'
及pg_offline_query == true
的实例。
- 添加了默认角色
- 软件更新 Release v0.6
- PostgreSQL 13.2
- Prometheus 2.25
- PG Exporter 0.3.2
- Node Exporter 1.1
- Consul 1.9.3
- 更新默认PG源:PostgreSQL现在默认使用浙江大学的镜像,加速下载安装
接口变更
新增选项
service_registry: consul # 服务注册机制:none | consul | etcd | both
prometheus_options: '--storage.tsdb.retention=30d' # prometheus命令行选项
prometheus_sd_method: consul # Prometheus使用的服务发现机制:static|consul
prometheus_sd_interval: 2s # Prometheus服务发现刷新间隔
pg_offline_query: false # 设置后将允许dbrole_offline角色连接与查询该实例
node_exporter_enabled: true # 设置后将安装配置Node Exporter
pg_exporter_enabled: true # 设置后将安装配置PG Exporter
pgbouncer_exporter_enabled: true # 设置后将安装配置Pgbouncer Exporter
dcs_disable_purge: false # 双保险,强制 dcs_exists_action = abort 避免误删除DCS实例
pg_disable_purge: false # 双保险,强制 pg_exists_action = abort 避免误删除数据库实例
haproxy_weight: 100 # 配置实例的相对负载均衡权重
haproxy_weight_fallback: 1 # 配置集群主库在只读服务中的相对权重
移除选项
prometheus_metrics_path # 与 exporter_metrics_path 重复
prometheus_retention # 功能被 prometheus_options 覆盖
v0.5.0
Pigsty 现在有了官方网站啦:pigsty.cc 🎉 !
亮点特性
- Pigsty官方文档站正式上线!
- 添加了数据库模板的定制支持,用户可以通过配置文件定制所需的数据库内部对象。
- 对默认访问控制模型进行了改进
- 重构了HBA管理的逻辑,现在将由Pigsty替代Patroni直接负责生成HBA
- 将Grafana监控系统的供给方案从sqlite改为JSON文件静态Provision
- 将
pg-cluster-replication
面板加入Pigsty开源免费套餐。 - 最新的经过测试的离线安装包:pkg.tgz (v0.5)
定制数据库
您是否烦恼过单实例多租户的问题?比如总有研发拿着PostgreSQL当MySQL使,明明是一个Schema就能解决的问题,非要创建一个新的数据库出来,在一个实例中创建出几十个不同的DB。 不要忧伤,不要心急。Pigsty已经提供数据库内部对象的Provision方案,您可以轻松地在配置文件中指定所需的数据库内对象,包括:
- 角色
- 用户/角色名
- 密码
- 用户属性
- 用户备注
- 用户所属的权限组
- 数据库
- 属主
- 额外的模式
- 额外的扩展插件
- 数据库级的自定义配置参数
- 数据库
- 属主
- 额外的模式
- 额外的扩展插件
- 数据库级的自定义配置参数
- 默认权限
- 默认情况下这里配置的权限会应用至所有由 超级用户 和 管理员用户创建的对象上。
- 默认扩展
- 所有新创建的业务数据库都会安装有这些默认扩展
- 默认模式
- 所有新创建的业务数据库都会创建有这些默认的模式
配置样例
# 通常是每个DB集群配置的变量
pg_users:
- username: test
password: test
comment: default test user
groups: [ dbrole_readwrite ] # dborole_admin|dbrole_readwrite|dbrole_readonly
pg_databases: # create a business database 'test'
- name: test
extensions: [{name: postgis}] # create extra extension postgis
parameters: # overwrite database meta's default search_path
search_path: public,monitor
# 通常是整个环境统一配置的全局变量
# - system roles - #
pg_replication_username: replicator # system replication user
pg_replication_password: DBUser.Replicator # system replication password
pg_monitor_username: dbuser_monitor # system monitor user
pg_monitor_password: DBUser.Monitor # system monitor password
pg_admin_username: dbuser_admin # system admin user
pg_admin_password: DBUser.Admin # system admin password
# - default roles - #
pg_default_roles:
- username: dbrole_readonly # sample user:
options: NOLOGIN # role can not login
comment: role for readonly access # comment string
- username: dbrole_readwrite # sample user: one object for each user
options: NOLOGIN
comment: role for read-write access
groups: [ dbrole_readonly ] # read-write includes read-only access
- username: dbrole_admin # sample user: one object for each user
options: NOLOGIN BYPASSRLS # admin can bypass row level security
comment: role for object creation
groups: [dbrole_readwrite,pg_monitor,pg_signal_backend]
# NOTE: replicator, monitor, admin password are overwritten by separated config entry
- username: postgres # reset dbsu password to NULL (if dbsu is not postgres)
options: SUPERUSER LOGIN
comment: system superuser
- username: replicator
options: REPLICATION LOGIN
groups: [pg_monitor, dbrole_readonly]
comment: system replicator
- username: dbuser_monitor
options: LOGIN CONNECTION LIMIT 10
comment: system monitor user
groups: [pg_monitor, dbrole_readonly]
- username: dbuser_admin
options: LOGIN BYPASSRLS
comment: system admin user
groups: [dbrole_admin]
- username: dbuser_stats
password: DBUser.Stats
options: LOGIN
comment: business read-only user for statistics
groups: [dbrole_readonly]
# object created by dbsu and admin will have their privileges properly set
pg_default_privilegs:
- GRANT USAGE ON SCHEMAS TO dbrole_readonly
- GRANT SELECT ON TABLES TO dbrole_readonly
- GRANT SELECT ON SEQUENCES TO dbrole_readonly
- GRANT EXECUTE ON FUNCTIONS TO dbrole_readonly
- GRANT INSERT, UPDATE, DELETE ON TABLES TO dbrole_readwrite
- GRANT USAGE, UPDATE ON SEQUENCES TO dbrole_readwrite
- GRANT TRUNCATE, REFERENCES, TRIGGER ON TABLES TO dbrole_admin
- GRANT CREATE ON SCHEMAS TO dbrole_admin
- GRANT USAGE ON TYPES TO dbrole_admin
# schemas
pg_default_schemas: [monitor]
# extension
pg_default_extensions:
- { name: 'pg_stat_statements', schema: 'monitor' }
- { name: 'pgstattuple', schema: 'monitor' }
- { name: 'pg_qualstats', schema: 'monitor' }
- { name: 'pg_buffercache', schema: 'monitor' }
- { name: 'pageinspect', schema: 'monitor' }
- { name: 'pg_prewarm', schema: 'monitor' }
- { name: 'pg_visibility', schema: 'monitor' }
- { name: 'pg_freespacemap', schema: 'monitor' }
- { name: 'pg_repack', schema: 'monitor' }
- name: postgres_fdw
- name: file_fdw
- name: btree_gist
- name: btree_gin
- name: pg_trgm
- name: intagg
- name: intarray
# postgres host-based authentication rules
pg_hba_rules:
- title: allow meta node password access
role: common
rules:
- host all all 10.10.10.10/32 md5
- title: allow intranet admin password access
role: common
rules:
- host all +dbrole_admin 10.0.0.0/8 md5
- host all +dbrole_admin 172.16.0.0/12 md5
- host all +dbrole_admin 192.168.0.0/16 md5
- title: allow intranet password access
role: common
rules:
- host all all 10.0.0.0/8 md5
- host all all 172.16.0.0/12 md5
- host all all 192.168.0.0/16 md5
- title: allow local read-write access (local production user via pgbouncer)
role: common
rules:
- local all +dbrole_readwrite md5
- host all +dbrole_readwrite 127.0.0.1/32 md5
- title: allow read-only user (stats, personal) password directly access
role: replica
rules:
- local all +dbrole_readonly md5
- host all +dbrole_readonly 127.0.0.1/32 md5
pg_hba_rules_extra: []
# pgbouncer host-based authentication rules
pgbouncer_hba_rules:
- title: local password access
role: common
rules:
- local all all md5
- host all all 127.0.0.1/32 md5
- title: intranet password access
role: common
rules:
- host all all 10.0.0.0/8 md5
- host all all 172.16.0.0/12 md5
- host all all 192.168.0.0/16 md5
pgbouncer_hba_rules_extra: []
数据库模板
- pg-init-template.sql 用于初始化
template1
数据的脚本模板 - pg-init-business.sql 用于初始化其他业务数据库的脚本模板
权限模型
v0.5 改善了默认的权限模型,主要是针对单实例多租户的场景进行优化,并收紧权限控制。
- 撤回了普通业务用户对非所属数据库的默认
CONNECT
权限 - 撤回了非管理员用户对所属数据库的默认
CREATE
权限 - 撤回了所有用户在
public
模式下的默认创建权限。
供给方式
原先Pigsty采用直接拷贝Grafana自带的grafana.db的方式完成监控系统的初始化。
这种方式虽然简单粗暴管用,但不适合进行精细化的版本控制管理。在v0.5中,Pigsty采用了Grafana API完成了监控系统面板供给的工作。
您所需的就是在grafana_url
中填入带有用户名密码的Grafana URL。
因此,监控系统可以背方便地添加至已有的Grafana中。
v0.4.0
第二个公开测试版v0.4现已正式发行!
监控系统
Pigsty v0.4对监控系统进行了整体升级改造,精心挑选了10个面板作为标准的Pigsty开源内容。同时,针对Grafana 7.3的不兼容升级进行了大量适配改造工作。使用升级的pg_exporter v0.3.1
作为默认指标导出器,调整了监控报警规则的监控面板连接。
Pigsty开源版
Pigsty开源版选定了以下10个Dashboard作为开源内容。其他Dashboard作为可选的商业支持内容提供。
- PG Overview
- PG Cluster
- PG Service
- PG Instance
- PG Database
- PG Query
- PG Table
- PG Table Catalog
- PG Table Detail
- Node
尽管进行了少量阉割,这10个监控面板所涵盖的内容仍然可以吊打所有同类软件。
软件升级
Pigsty v0.4进行了大量软件适配工作,包括:
- Upgrade to PostgreSQL 13.1, Patroni 2.0.1-4, add citus to repo.
- Upgrade to
pg_exporter 0.3.1
- Upgrade to Grafana 7.3, Ton’s of compatibility work
- Upgrade to prometheus 2.23, with new UI as default
- Upgrade to consul 1.9
其他改进
- Update prometheus alert rules
- Fix alertmanager info links
- Fix bugs and typos.
- add a simple backup script
离线安装包
- v0.4的离线安装包(CentOS 7.8)已经可以从Github下载:pkg.tgz
v0.3.0
首个Pigsty公开测试版本现在已经释出!
监控系统
Pigsty v0.3 包含以下8个监控面板作为开源内容:
- PG Overview
- PG Cluster
- PG Service
- PG Instance
- PG Database
- PG Table Overview
- PG Table Catalog
- Node
离线安装包
- v0.3 离线安装包(CentOS 7.8)已经可以从Github下载:pkg.tgz
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.