这是本节的多页打印视图。 .
Release
- 1: Pigsty v1.5.1
- 2: Pigsty v1.5.0
- 3: Pigsty v1.4.1
- 4: Pigsty v1.4.0
- 5: Pigsty v1.3.1
- 6: Pigsty v1.3.0
- 7: Pigsty v1.2.0
- 8: Pigsty v1.1.1
- 9: Pigsty v1.1.0
- 10: Pigsty v1.0.1
- 11: Pigsty v1.0.0
- 12: Pigsty v0.9.1
- 13: Pigsty v0.9.0
- 14: Pigsty v0.8.0
- 15: Pigsty v0.7.0
- 16: Pigsty v0.6.0
- 17: Pigsty v0.5.2
- 18: Pigsty v0.5.1
- 19: Pigsty v0.5.0
- 20: Pigsty v0.4.0
- 21: Pigsty v0.3.0
- 22: Pigsty v0.0.5
- 23: Pigsty v0.0.4
- 24: Pigsty v0.0.3
- 25: Pigsty v0.2.0
- 26: Pigsty v0.1.0
截至 v4.5.0 的每一个稳定数字标签都有独立的 x.y.z 页面,小版本与补丁版本也全部收录。每条记录交叉核对 Pigsty 发布文章、历史 About / 发布注记 档案以及对应的 GitHub Release 或标签,并附上精确的源码对比链接。尚未产生真实标签的规划版本继续保持草稿状态。
1 - Pigsty v1.5.1
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
信息来源
2 - Pigsty v1.5.0
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_cleanpg_disable_purge->pg_safeguarddcs_exists_action->dcs_cleandcs_disable_purge->dcs_safeguard
参数重命名
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
信息来源
3 - Pigsty v1.4.1
v1.4.1 ·
日常错误修复 / Docker 支持 / 英文文档
现在,默认在元节点上启用 docker。您可以使用它启动海量的各类软件
现在提供英文文档。
Bug 修复
- 修复 promtail & loki 配置变量问题
- 修复 grafana 旧版警报。
- 默认禁用 nameserver
- 为 patroni 快捷方式重命名 pg-alias.sh
- 为所有仪表板禁用 exemplars 查询
- 修复 loki 数据目录问题 https://github.com/pgsty/pigsty/issues/100
- 将 autovacuum_freeze_max_age 从 100000000 更改为 1000000000
信息来源
4 - Pigsty v1.4.0
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。
- 现在默认启用
- 模型和标签
- 为所有仪表板添加了一个隐藏的
dsprometheus 数据源变量,因此您只需选择一个新的数据源而不是修改 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.ymlplaybook 可以部署 MatrixDB(Greenplum 7) - MatrixDB 监控仪表板:PGSQL MatrixDB
- 添加示例配置:
pigsty-mxdb.yml
监控增强
- 将监控系统分为5大类别:
INFRA、NODES、REDIS、PGSQL、APP - 默认启用日志记录
- 现在默认启用
loki和promtail,带有预构建的 loki-rpm。
- 现在默认启用
- 模型和标签
- 为所有仪表板添加了一个隐藏的
dsprometheus 数据源变量,因此您只需选择一个新的数据源而不是修改 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.ymlplaybook 可以部署 MatrixDB(Greenplum 7) - MatrixDB 监控仪表板:PGSQL MatrixDB
- 添加示例配置:
pigsty-mxdb.yml
置备改进
现在 pigsty 的工作流如下:
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。
信息来源
5 - Pigsty v1.3.1
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 时修复样式问题
信息来源
6 - Pigsty v1.3.0
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 添加为默认包
信息来源
7 - Pigsty v1.2.0
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 将使这一过程变得容易得多。它将创建一系列的脚本,帮助您近乎零停机时间地迁移您的集群。
信息来源
8 - Pigsty v1.1.1
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 的版本。
信息来源
9 - Pigsty v1.1.0
v1.1 ·
- 【增强功能】 增加
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
信息来源
10 - Pigsty v1.0.1
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 以减少开销
信息来源
11 - Pigsty v1.0.0
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 的用户列表和数据库列表将会被生成
信息来源
12 - Pigsty v0.9.1
v0.9.1 ·
发布亮点
- PostgreSQL 更新至 13.3,Grafana 更新至 7.5.6。
- 新增
configure配置向导。 - 安装流程收敛为下载、配置、安装三步:
信息来源
13 - Pigsty v0.9.0
v0.9.0 ·
v0.9 极大简化了安装流程,进行了大量日志相关改进,开发了命令行工具(Beta),并修复了一系列问题。
新功能
-
一键安装模式:
-
开发命令行工具
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 ResetException 的问题 - 修复了 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_portpromtail 使用的默认端口,默认为9080promtail_status_file保存 Promtail 状态信息的文件位置promtail_send_url用于接收日志的 loki 服务 endpoint
信息来源
14 - Pigsty v0.8.0
v0.8.0 ·
v0.8 针对 服务(Service) 接入部分进行了彻底的重做。现在除了默认的 primary, replica 服务外,用户可以自行定义新的服务。服务的接口可以支持多种不同的实现,例如 L4 DPKG VIP 可作为 Haproxy 的替代品与 Pigsty 集成。同时,针对用户反馈的一些问题进行了集中处理与改进。
改动内容
v0.8 是供给方案定稿版本,此后供给系统的 API 将保持稳定。
API 变更
原有 vip 与 haproxy 角色的所有配置项,现在迁移至 service 角色中。
新增选项
移除选项
服务管理
pg_services 与 pg_services_extra 定义了集群中的 服务,每一个服务的定义结构如下例所示:
一个服务必须指定以下内容:
-
名称:服务的完整名称以数据库集群名为前缀,以
service.name为后缀,通过-连接。例如在pg-test集群中name=primary的服务,其完整服务名称为pg-test-primary。 -
端口:在 Pigsty 中,服务默认采用 NodePort 的形式对外暴露,因此暴露端口为必选项。但如果使用外部负载均衡服务接入方案,您也可以通过其他的方式区分服务。
-
选择器:选择器指定了服务的成员,采用 JMESPath 的形式,从所有集群实例成员中筛选变量。默认的
[]选择器会选取所有的集群成员。此外
selector_backup会选择或标记用于 backup 的实例列表(当集群中所有其他成员失效时方才接管服务)
数据库管理
数据库现在可以对 locale 的细分选项:lc_ctype 与 lc_collate 分别进行指定。支持这一功能的主要原因是 PG 的扩展插件 pg_trgm 需要在 lc_ctype!=C 的环境中才能正常支持中文。
旧接口定义
新的接口定义
信息来源
15 - Pigsty v0.7.0
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 变更
新增选项
移除选项
定义结构变更
重命名选项
仅监控模式
有时用户不希望使用 Pigsty 供给方案,只希望使用 Pigsty 监控系统管理现有 PostgreSQL 实例。
Pigsty 提供了仅监控部署(monly, monitor-only 模式,剥离供给方案部分,可用于监控现有 PostgreSQL 集群。
仅监控模式的部署流程与标准模式大体上保持一致,但省略了很多步骤
- 在 元节点 上完成基础设施初始化的部分与标准流程保持一致,仍然通过
./infra.yml完成。 - 不需要在 数据库节点 上完成 基础设施初始化。
- 不需要在 数据库节点 上执行数据库初始化的绝大多数任务,而是通过专用的
./pgsql-monitor.yml完成仅监控系统部署。 - 实际使用的配置项大大减少,只保留基础设施相关变量,与 监控系统相关的少量变量。
数据库管理
Database provisioning interface enhancement #33
旧接口定义
新的接口定义
接口变更
- Add new options:
template,encoding,locale,allowconn,tablespace,connlimit - Add new option
revokeconn, which revoke connect privileges from public for this database - Add
commentfield for database
数据库变更
在运行中集群中创建新数据库可以使用 pgsql-createdb.yml 剧本,在配置中定义完新数据库后,执行以下剧本。
通过 -e pg_datbase= 告知需要创建的数据库名称,则该数据库即会被创建(或修改)。具体执行的命令参见集群主库 /pg/tmp/pg-db-{{ database.name}}.sql 文件。
用户管理
User provisioning interface enhancement #34
旧接口定义
新接口定义
接口变更
usernamefield rename tonamegroupsfield rename torolesoptionsnow split into separated configration entries:login,superuser,createdb,createrole,inherit,replication,bypassrls,connlimitexpire_atandexpire_inoptionspgbounceroption for user is nowfalseby default
用户管理
在运行中集群中创建新数据库可以使用 pgsql-createuser.yml 剧本,在配置中定义完新数据库后,执行以下剧本。
通过 -e pg_user= 告知需要创建的数据库名称,则该数据库即会被创建(或修改)。具体执行的命令参见集群主库 /pg/tmp/pg-user-{{ user.name}}.sql 文件。
信息来源
16 - Pigsty v0.6.0
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 现在默认使用浙江大学的镜像,加速下载安装
接口变更
新增选项
移除选项
信息来源
17 - Pigsty v0.5.2
[!INFO]
这个历史版本只有 Git 标签与源码树,没有单独发布 GitHub Release。
发布亮点
- 将
pigsty.yml设为默认配置,并重组标准的sandbox.yml、infra.yml与pgsql.yml工作流。 - 将 VIP 管理从 HAProxy 中拆分,新增管理员认证、流量权重与主库兜底控制。
- 在主剧本中加入域名服务器步骤,并同步更新相关文档。
v0.5.2 是没有独立 GitHub Release 正文的维护标签,本说明依据标签提交整理。
信息来源
18 - Pigsty v0.5.1
[!INFO]
这个历史版本只有 Git 标签与源码树,没有单独发布 GitHub Release。
发布亮点
- 修复
v0.5.0之后发现的 PostgreSQL 集群与实例仪表盘问题。 - 默认 PostgreSQL 镜像切换至浙江大学镜像,改善区域内安装速度。
- 更新 README,并整理
v0.5系列文档快照。
v0.5.1 是没有独立 GitHub Release 正文的维护标签,本说明依据标签提交整理。
信息来源
19 - Pigsty v0.5.0
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 方案,您可以轻松地在配置文件中指定所需的数据库内对象,包括:
- 角色
- 用户/角色名
- 密码
- 用户属性
- 用户备注
- 用户所属的权限组
- 数据库
- 属主
- 额外的模式
- 额外的扩展插件
- 数据库级的自定义配置参数
- 数据库
- 属主
- 额外的模式
- 额外的扩展插件
- 数据库级的自定义配置参数
- 默认权限
- 默认情况下这里配置的权限会应用至所有由 超级用户 和 管理员用户创建的对象上。
- 默认扩展
- 所有新创建的业务数据库都会安装有这些默认扩展
- 默认模式
- 所有新创建的业务数据库都会创建有这些默认的模式
配置样例
数据库模板
- 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 中。
信息来源
20 - Pigsty v0.4.0
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
信息来源
21 - Pigsty v0.3.0
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
信息来源
22 - Pigsty v0.0.5
[!INFO]
这个历史版本只有 Git 标签与源码树,没有单独发布 GitHub Release。
发布亮点
- 新增离线安装模式,支持在无法访问互联网的环境中完成交付。
- 引入独立 Consul 角色,并更新软件仓库引导逻辑。
- 加入 psql 启动辅助脚本,拆分 PostgreSQL 脚本任务,并修复 HAProxy 连接重置噪声。
本历史记录依据 v0.0.5 标签及其与 v0.0.4 的源码差异整理。
信息来源
23 - Pigsty v0.0.4
[!INFO]
这个历史版本只有 Git 标签与源码树,没有单独发布 GitHub Release。
发布亮点
- 将原有单体自动化拆分为 Meta、Grafana、DNS、Nginx 与 Prometheus 等独立角色。
- 新增静态网络处理,并调整本地软件仓库的上游策略。
- 补充角色文档,使服务注册模板与新的目录布局保持一致。
本历史记录依据 v0.0.4 标签及其与 v0.0.3 的源码差异整理。
信息来源
24 - Pigsty v0.0.3
[!INFO]
这个历史版本只有 Git 标签与源码树,没有单独发布 GitHub Release。
发布亮点
- 改进早期 Pigsty 配置接口,并加入监控模式。
- 新增 Kubernetes 剧本,调整 PostgreSQL 初始化默认值。
- 简化 Vagrant 引导流程,修复 HAProxy、Patroni 与监控注册中的若干问题。
这是公开发布系列之前的历史标签;本记录依据 v0.0.3 标签源码与对应提交历史整理。
信息来源
25 - Pigsty v0.2.0
[!INFO]
这个历史版本只有 Git 标签与源码树,没有单独发布 GitHub Release。
发布亮点
- 重构基础设施、节点、仓库、Patroni、PgBouncer、监控与 PostgreSQL 初始化角色。
- 新增 etcd DCS、生产/测试清单布局与可配置数据库超级用户支持。
- 增加 Patroni 暂停处理、HAProxy 2.2 适配及旧版 CentOS 7 修复。
v0.2.0 早于带有完整正文的 GitHub Release;本记录依据标签源码及其与 v0.1.0 的差异整理。
信息来源
26 - Pigsty v0.1.0
[!INFO]
这个历史版本只有 Git 标签与源码树,没有单独发布 GitHub Release。
发布亮点
- 完成首轮从剧本到可复用 Ansible 角色的大规模重构。
- 建立 PostgreSQL 主从、PgBouncer、监控、HAProxy、Keepalived 与软件仓库的早期工作流。
- 在生产仿真测试环境中验证重组后的项目结构。
v0.1.0 是早期工程里程碑,并非带有独立正文的 GitHub Release;本说明依据标签与提交历史整理。