Pigsty v1.5.1 现已发布,具体更新内容如下:
内核
在PostgreSQL 14.0 至 14.3 中,出现了一个BUG。当你使用
CREATE INDEX CONCURRENTLY | REINDEX CONCURRENTLY
在线重建索引时,有可能会导致静默的 索引数据腐坏。 在 2022.06.16日,PostgreSQL 全球开发组 Release 了 14.4 以解决这一问题。
https://www.postgresql.org/about/news/postgresql-14-out-of-cycle-release-coming-june-16-2022-2466/
因为在线重建索引是一个非常重要的生产级运维功能,允许用户在不影响表读写的情况下建立新的索引。强烈建议所有使用 PG14 的用户尽快升级小版本至 14.4 。
Pigsty v1.5.0 默认使用 PostgreSQL 14.3 ,在v1.5.1中已经升级为 PG 14.4。
扩展
Pigsty v1.5.1 对 Citus和TimescaleDB扩展插件进行了升级。
Citus 11
https://www.citusdata.com/updates/v11-0
Citus 于3天前紧跟着 PG 14.4 正式释出 v11,把所有企业版的特性都开源了,当然最重要的特性就是在线平衡数据分区(自动平滑扩缩容),可谓功德无量。Pigsty立刻就把它给搞进 v1.5.1 了。有了 Citus 企业版特性,这下PG真的成为了:分布式地理空间时序超融合数据库了。
Citus 是原生的PG插件扩展,主要针对的场景包括:
- 多租户,让数据按照租户自动分片。
- 实时分析,并行加速实时聚合,压到秒级响应。
它的主要应用场景与 TiDB 或 MyCat中间件类似。都是海量CRUD。核心能力是水平分片与并行计算,可自动对大表进行透明的水平分片,(e.g 支持到PB级)。在此基础上,通过多节点,多进程,多worker的方式,让 sum/avg/count/... 这些聚合“分析”函数的响应时间进入“在线”业务的容忍范畴(例如1秒上下)。
Pigsty默认安装Citus,但默认不启用它。启用Citus非常简单,通常您需要修改两个参数:max_prepared_transaction 修改为一个大于 max_connections 的值以启用两阶段提交。 并在 shared_preload_libraries 中填入 citus 并放置于首位。
然后你只需 CREATE EXTENSION citus ,即可使用此分布式扩展。
Citus 可以与地理空间扩展 PostGIS 很好的共同配合,但与 TimescaleDB 相性不佳。您可以同时使用两种插件,但最好不要在同样的表上交叉使用,因为这是两种不同的数据分区方案。
TimescaleDB
https://docs.timescale.com/timescaledb/latest/overview/release-notes/
TimescaleDB 也于近期(2022-05-24) 发布了2.7版本,该版本显著增强了 连续聚合 的能力,例如在连续聚合中使用 DISTINCT, FILTER, HAVING FILTER, Ordered-Set Agg, Hypothetical-Set Agg。
TimescaleDB 是一个原生的 PostgreSQL 插件,提供了强大的时序数据存储、处理、分析能力。它有一个商业的多节点集群版本,而单节点的版本作为PG插件的形式完全开源免费。
Pigsty的CMDB默认启用了 TimescaleDB ,它可以很好地与 PostGIS 扩展插件提供的地理空间能力相互配合。但是和 Citus 的相性不佳(Citus针对业务字段进行水平分片,而 TimescaleDB 针对时间分区进行定制优化)。
尽管TimescaleDB与Citus可以在同一个数据库集簇中同时启用,但建议您还是根据自身的业务场景,在两者中选择一个启用。
Patroni
https://patroni.readthedocs.io/en/latest/releases.html
Patroni作为Pigsty使用的数据库高可用组建,于本月发布了 2.1.4 版本,此版本修复了一系列问题。
HAProxy
https://www.haproxy.com/blog/announcing-haproxy-2-6/
HAproxy是Pigsty默认使用的负载均衡器,于本月释出了 2.6 版本。此版本有大量有趣的新功能,例如用于精细控制流量的命令行工具,HTTP3支持,新的负载均衡算法,以及更稳定的在线配置重载。
基础设施升级
https://grafana.com/docs/grafana/latest/release-notes/release-notes-9-0-0/
Grafana 升级至 9.0,整体UI有了显著改善。9.0的统一告警功能有了显著增强并默认启用。针对 Prometheus 与Loki,Grafana 9 提供了辅助编写查询的可视化工具(类似PromLens),能显著提升开发使用体验。
不过需要注意的是,例如 Auth Proxy 这样的功能现在变为了企业版特性。
新的应用
Pigsty新增了两个 Docker 应用:开箱即用的本地维基百科,以及为Postgres提供MongoDB API 能力的 FerretDB(原名叫 MangoDB,碰瓷 MongoDB 被呲了才改名的)
WIKI.js
你自己的维基百科,数据使用Postgres存储,与Markdown互通。
https://pigsty.cc/zh/docs/app/docker/wiki/
FerretDB
为PostgreSQL提供MongoDB兼容的API,您可以用MongoDB API来使用PG了
后续工作
公告指出,Pigsty v1.6 的开发正在筹划中,拟于7月释出一个Beta版本。1.6版本重点关注安全性,加密,证书。元节点上将默认创建一个本地 CA,每个节点,ETCD/Consul都会默认添加此 CA,并启用可选的SSL流量加密。此外,Postgres,Pgbouncer,PG Exporter,都将开始提供针对SSL加密的可选支持。默认的数据库密码认证方式将从 md5 升级至更安全的 SCRAM-SHA-256。
Pigsty v1.6 还将提供自动适配的参数模板。在先前版本中,如果用户需要在不同规格的机器上部署,通常需要自己选择对应规格的配置模板,例如:
tiny, mini, micro, small, medium, large, nxlarge....,
诸如此类。自动适配的模板将自动根据操作系统的配置规格进行适配,用户无需显式选择,通常只需要在功能上选择 OLTP,OLAP,CRIT,TINY 四种模式之一即可。
非常感谢用户 @Alemacci 提供了一系列关于安全与自动配置的功能实现,这些功能将在充分测试后于1.6.0释出。这位帅哥太高产了,一次性把一大堆功能都做了,包括:
- 可配置的日志目录
- 所有组件的SSL支持
- CA基础设施与证书签发
- Postgres的 SCRAM-SHA-256 认证改造
- 自动适配机器的Patroni配置模板
诸如此类,都是非常务实,迫切需要的功能。