开箱即用的PostgreSQL发行套件-Pigsty


Pigsty 是开箱即用的开源 PostgreSQL 发行版。带有全面专业的监控系统,稳定可靠的部署方案;提供简单省心的用户界面,与灵活开放的扩展机制。可以用于大规模生产数据库的监控部署与管理;也可以在本地 1 核 1GB 的虚拟机中运行,用于学习、开发、测试与数据分析等场景。注意该软件方案主要在AGPLv3.0协议下授权。
PostgreSQL In Great STYle.
—— A battery-included, local-first, open-source RDS PG alternative.

特性
全面专业的监控系统,基于 Grafana & Prometheus & pg_exporter
稳定可靠的部署方案,基于 Ansible 的物理机/虚拟机部署。
简单省心的安装方式与用户界面,开箱即用的沙箱环境,降低使用门槛。
高可用数据库集群架构,基于 Patroni 实现,具有秒级故障自愈能力。
基于 DCS 的服务发现与配置管理,维护管理自动化,智能化。
无需互联网访问与代理的离线安装模式,快速且可靠。
代码定义的基础设施,可配置,可定制。
基于 PostgreSQL 13 与 Patroni 2.0,享受最新特性。
长时间的大规模生产环境验证(200+ node x 64C|400GB|3TB)
功能介绍
监控系统
Pigsty 带有一个针对大规模数据库集群管理而设计的专业级 PostgreSQL 监控系统。包括约 1200 类指标,20 + 监控面板,上千个监控仪表盘,覆盖了从全局大盘到单个查询的详细信息。面向专业用户,提供不可替代的价值点。监控系统基于业内最佳实践,采用 Prometheus、Grafana 作为监控基础设施。开源开放,定制便利,可复用,可移植,没有厂商锁定。可与各类已有数据库实例集成。
部署方案
数据库是管理数据的软件,管控系统是管理数据库的软件。
Pigsty 内置了一套以 Ansible 为核心的数据库管控方案。并基于此封装了命令行工具与图形界面。它集成了数据库管理中的核心功能:包括数据库集群的创建,销毁,扩缩容;用户、数据库、服务的创建等。Pigsty 采纳 “Infra as Code” 的设计哲学使用了声明式配置,通过大量可选的配置选项对数据库与运行环境进行描述与定制,并通过幂等的预置剧本自动创建所需的数据库集群,提供近似私有云般的使用体验。其吸纳了 Kubernetes 架构设计中的精髓,采用声明式的配置方式与幂等的操作剧本。用户只需要描述 “自己想要什么样的数据库”,而无需关心 Pigsty 如何去创建它,修改它。Pigsty 会根据用户的配置文件清单,在几分钟内从裸机节点上创造出所需的数据库集群。
高可用
Pigsty 创建的数据库集群是分布式、高可用的数据库集群。Pigsty 创建的数据库基于 DCS、Patroni、Haproxy 实现了高可用。数据库集群中的每个数据库实例在使用上都是幂等的,任意实例都可以通过内建负载均衡组件提供完整的读写服务,提供分布式数据库的使用体验。数据库集群可以自动进行故障检测与主从切换,普通故障能在几秒到几十秒内自愈,且期间只读流量不受影响。故障时。集群中只要有任意实例存活,就可以对外提供完整的服务。其架构方案经过审慎的设计与评估,着眼于以最小复杂度实现所需功能。该方案经过长时间,大规模的生产环境验证,已经被多个行业内的组织所使用。

用户界面
Pigsty 旨在降低 PostgreSQL 的使用门槛,因此在易用性上做了大量工作。部署分为三步:下载源码,配置环境,执行安装,均可通过一行命令完成。遵循经典的软件安装模式,并提供了配置向导。您需要准备的只是一台 CentOS7.8 机器及其 root 权限。管理新节点时,Pigsty 基于 Ansible 通过 ssh 发起管理,无需安装 Agent,即使是新手也可以轻松完成部署。
在管理与使用上,Pigsty 提供了不同层次的用户界面,以满足不同用户的需求。新手用户可以使用一键拉起的本地沙箱与图形用户界面,而开发者则可以选择使用 pigsty-cli 命令行工具与配置文件的方式进行管理。经验丰富的 DBA、运维与架构师则可以直接通过 Ansible 原语对执行的任务进行精细控制。
服务发现
Pigsty 提供了可选的服务发现机制,基于 DCS(Consul/Etcd)实现。监控系统将自动从服务注册中心发现所有的监控对象,而 Patroni 则使用 DCS 作为集中的配置存储。Consul 提供 DNS 可用作客户端服务发现机制,而 UI 可以让您对环境中的服务一览无余。
沙箱环境
Pigsty 既可以在生产环境中管理成百上千个高规格的生产节点,也可以独立运行于本地 1 核 1GB 虚拟机中,作为开箱即用的数据库实例使用。在本地计算机上使用时,Pigsty 提供基于 Vagrant 与 Virtualbox 的沙箱。可以一键拉起与生产环境一致的数据库环境,用于学习,开发,测试数据分析,数据可视化等场景。
离线安装
Pigsty 支持离线安装,对于没有互联网访问的环境尤为方便。Pigsty 的离线安装包中带有监控系统,数据库以及所有相关的依赖。您可以通过向导自动下载,或从 Github Release 页面或 CDN 手工下载离线安装包。
数据分析
Pigsty 提供了一种名为 “Datalet” 的扩展机制,允许用户和开发者对 Pigsty 进行进一步的定制,将其用到意想不到的地方,例如数据分析与可视化。Pigsty 集成了 Echarts,以及常用地图底图等,可以方便地实现高级可视化需求。比起 Julia,Matlab,R 这样的传统科学计算语言 / 绘图库而言,PG + Grafana + Echarts 的组合允许您以极低的成本制作出可分享,可交付,标准化的数据应用或可视化作品。
所有 Pigsty 高级专题监控面板都会以 Datalet 的方式发布。Pigsty 也自带了一些的 Datalet 案例:Redis 监控系统,疫情数据分析,七普人口数据分析,PG 日志挖掘等。
最新版本:2.1
v2.1.0 于2023年6月上旬发布,为跟随 PG 社区主干的例行升级,添加 PG 11 - 16 支持,现在您可以使用 Pigsty 部署 PG 15.3 , 14.8, 13.11, 12.15, 与 16 beta1。v2.1 针对 PostgreSQL 16 进行了适配,改进了监控系统效果,添加了一系列便利命令工具,建议按需升级。具体更新内容包括:
PostgreSQL 16 beta 支持,以及 12 ~ 15 支持。
添加 PGVector for AI Embedding for 12 - 15
为 grafana 添加 6 个额外的面板和数据源插件
添加 bin/profile 来配置文件远程进程并生成火焰图
添加 bin/validate 验证 pigsty.yml 配置文件
添加 bin/repo-add 来添加上游 repo 文件到 /etc/yum.repos.d
PostgreSQL 16 可观察性:pg_stat_io 和相应的仪表板
PostgreSQL 15.3、14.8、13.11、12.15、11.20 和 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
更新说明详见此处。
最新版本:2.3
Pigsty v2.3 现已于2023年8月下旬发布,此版本进一步完善了监控系统、应用生态、并跟进 PostgreSQL 例行的小版本更新(CVE 修复)。跟随 PostgreSQL 主干小版本进行更新,包括 15.4, 14.9, 13.12, 12.16 以及 16.beta3,此更新修复了一个 CVE 安全漏洞。此外高可用管控 Patroni 也升级到 3.1 版本,解决了一些 BUG 。
v2.3 提供了对 FerretDB 的支持,它是一个构建在 PostgreSQL 之上,真正开源的 MongoDB 替代。用户可以使用 MongoDB 客户端访问它,但是真正的数据都存储在底层的 PostgreSQL 里。还默认添加了一款名为 NocoDB 的开源应用:这是 AirTable 的开源替代:这是一个数据库 - 电子表格的混合体,可以用低代码的方式快速打造一个多人在线协作应用。新增了为主机节点集群绑定一个 L2 VIP 的功能,使用 VRRP 协议确保全链路上没有单点,并提供了完整的监控:keepalived_exporter 被用于收集监控数据。而且每一个 Node VIP (keepalived)与 PGSQL VIP (vip-manager)都会添加到 blackbox_exporter 的 ICMP / PING 监控列表中。
在监控系统上,v2.3 在 v2.2 的基础上进行了打磨优化:新增了 VIP 监控,VIP 与节点 PING 指标被加入到 NODE / PGSQL 监控的醒目位置;PGSQL 监控新增了锁等待树视图;REDIS 监控进行了风格优化;MinIO 监控适配的新的监控指标名称;MySQL / MongoDB 监控新增了实现存根,为后续实现奠定基础。
MongoDB 支持
MongoDB 是一个很受欢迎的 NoSQL 文档数据库。但由于开源协议问题(SSPL),与软件定位问题(Postgres 发型版),Pigsty 决定使用 FerretDB 来提供对 MongoDB 的支持。FerretDB 是一个有趣的开源项目:它让 PostgreSQL 可以提供 MongoDB 的能力。
MongoDB 与 PostgreSQL 是两个非常不同的数据库系统:MongoDB 使用文档模型,使用专用的查询语言进行交互 。但是鉴于 PostgreSQL 也提供了完整的 JSON/JSONB/GIN 功能支持,所以这么做在理论上也是完全可行的:FerretDB 负责将你的 SON 查询转换为 SQL 查询:use test
在 Pigsty 定义一个 FerretDB 集群与其他类型的数据库并无二致,你仅需要提供核心的身份参数:集群名称与实例号。需要关注的是 mongo_pgurl 参数,它指定了 FerretDB 底层使用的 PostgreSQL 地址。
可以直接填入一个已由 Pigsty 创建的任意 PostgreSQL 服务地址。数据库不需要预先配置什么,只需要确保所使用的用户具有 DDL 权限即可。配置完成后使用 ./mongo.yml -l ferret 即可完成安装。当然,如果更喜欢使用容器,也可以直接 cd pigsty/app/ferretdb; make 使用 docker-compose 拉起 FerretDB 使用。安装完成后可以使用任何 MongoDB Client 访问 FerretDB,例如 MongoSH:
mongosh 'mongodb://test:test@10.10.10.45:27017/test?authMechanism=PLAIN'
对于那些希望从 MongoDB 迁移到 PostgreSQL 的用户来说,这是一种改造成本极小的折衷手段。Pigsty 同样提供了另一种支持方式 MongoFDW:在 PostgreSQL 中使用 SQL 查询现有的 MongoDB 集群。
新应用:NocoDB
在 v2.3 中添加了对 NocoDB 的内置支持,可以使用默认的 Docker Compose 模板,一键拉起 NocoDB 并使用内置的 PostgreSQL 作为存储。NocoDB 是 Airtable 的开源替代品,那 AirTable 又是什么呢?其实有点类似于 Google Docs/腾讯云文档。但是提供了非常丰富的接口,钩子,可以用来实现一些非常强大的功能。
NocoDB 可以让各种关系型数据库变身成为 Excel,运行你自己的本地云文档软件。它也可以让用户用低代码的方式实现一些需求:比如你可以把自动生成的表单发送给别人填写,将结果自动整理成为实时共享、可协作、可编程的多维表格。在 Pigsty 中拉起 NocoDB 非常容易,只需要一行命令即可。可以修改 .env 中的 DATABASE_URL 参数来使用不同的数据库。
cd ~/pigsty/app/nocodb; make up
Node VIP 支持
Pigsty v2.3 新增了为主机节点集群绑定一个 L2 VIP 的功能,使用 VRRP 协议确保全链路上没有单点,并提供了完整的监控。
在古早的 Pigsty 版本中(0.5 前),曾经提供过基于 Keepalived 的 L2 VIP 功能实现。但随后被 HAProxy + VIP-Manager 所取代:HAProxy 不挑网络,可以进行灵活的健康检查、流量分发,更是提供了一个简单易用的管控界面。而 VIP Manager 则可以将一个 L2 VIP 绑定在数据库集群主库上。但通用的 L2 VIP 需求仍然是存在的,例如,如果用户选择使用 HAProxy 集群接入,那么 HAProxy 本身的可靠性如何保证?尽管你可以使用 DNS LB 的方式进行切换,但 VRRP 在可靠性与易用性上显然更胜一筹。此外,MinIO/ETCD ,Prometheus 这些组件,有时也会有这样的需求。
想要为集群绑定一个 L2 VIP 其实很简单,只需要启用 vip_enabled,分配一个 VLAN 中唯一的 VirtualRouterID 号与 VIP 地址就可以了。默认情况下,所有集群成员使用 BACKUP 初始状态以非抢占模式工作。你可以通过设置 vip_role 与 vip_preempt 来改变这一行为。L2 VIP 会自动被纳入监控中。当 MASTER 宕机后, BACKUP 会立即进行接管。
监控系统改进
Pigsty v2.2 基于 Grafana 10 对监控系统进行了彻底的翻新重制。v2.3 在 v2.2 的基础上进行了更多优化。例如新增的 NODE VIP 监控面板用于展示一个 VIP 的状态:所属集群/成员,网络 RT,KA 的状态等等。
更丝滑的构建流程
Pigsty v2.2 提供了官方 Yum 源,在 v2.3 中则默认启用了全站 HTTPS。当选择直接从互联网下载 Pigsty 所需的软件时,可能会遭遇到功夫网的烦恼。例如默认的 Grafana / Prometheus Yum 源下载速度极慢。除此之外,还有一些零散的 RPM 包需要通过 Web URL 的方式,而不是 repotrack RPM 的方式进行下载。
在 v2.2 中解决了这个问题。Pigsty 提供了一个官方的 yum 源:http://get.pigsty.cc ,并配置为默认的上游源之一。所有零散的 RPM,需要翻墙的 RPM 都放置其中,可以有效加快在线安装 / 构建速度。此外 Pigsty 还在 v2.2 中提供了对信创操作系统,统信 UOS 1050e uel20 的支持,满足一些特殊客户的特殊需求。Pigsty 针对这些系统重新编译了 PG 相关的 RPM 包,为有需求的客户提供支持。
安装
Pigsty v2.3 的安装命令为:bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"
一行命令,即可在全新机器上完整安装 Pigsty. 如果你想要尝鲜 beta 版本,将 latest 换为 beta 即可。对于没有互联网访问的特殊环境,也可以使用以下链接下载 Pigsty,以及打包了所有软件的离线安装包:https://get.pigsty.cc/v2.3.0/pigsty-v2.3.0.tgz
以上就是 Pigsty v2.3 带来的变化。更多细节可参考 Pigsty 官方文档与 Github Release Note。
项目主页:https://github.com/Vonng/pigsty
PostgreSQL In Great STYle.
—— A battery-included, local-first, open-source RDS PG alternative.

特性
全面专业的监控系统,基于 Grafana & Prometheus & pg_exporter
稳定可靠的部署方案,基于 Ansible 的物理机/虚拟机部署。
简单省心的安装方式与用户界面,开箱即用的沙箱环境,降低使用门槛。
高可用数据库集群架构,基于 Patroni 实现,具有秒级故障自愈能力。
基于 DCS 的服务发现与配置管理,维护管理自动化,智能化。
无需互联网访问与代理的离线安装模式,快速且可靠。
代码定义的基础设施,可配置,可定制。
基于 PostgreSQL 13 与 Patroni 2.0,享受最新特性。
长时间的大规模生产环境验证(200+ node x 64C|400GB|3TB)
功能介绍
监控系统
Pigsty 带有一个针对大规模数据库集群管理而设计的专业级 PostgreSQL 监控系统。包括约 1200 类指标,20 + 监控面板,上千个监控仪表盘,覆盖了从全局大盘到单个查询的详细信息。面向专业用户,提供不可替代的价值点。监控系统基于业内最佳实践,采用 Prometheus、Grafana 作为监控基础设施。开源开放,定制便利,可复用,可移植,没有厂商锁定。可与各类已有数据库实例集成。
部署方案
数据库是管理数据的软件,管控系统是管理数据库的软件。
Pigsty 内置了一套以 Ansible 为核心的数据库管控方案。并基于此封装了命令行工具与图形界面。它集成了数据库管理中的核心功能:包括数据库集群的创建,销毁,扩缩容;用户、数据库、服务的创建等。Pigsty 采纳 “Infra as Code” 的设计哲学使用了声明式配置,通过大量可选的配置选项对数据库与运行环境进行描述与定制,并通过幂等的预置剧本自动创建所需的数据库集群,提供近似私有云般的使用体验。其吸纳了 Kubernetes 架构设计中的精髓,采用声明式的配置方式与幂等的操作剧本。用户只需要描述 “自己想要什么样的数据库”,而无需关心 Pigsty 如何去创建它,修改它。Pigsty 会根据用户的配置文件清单,在几分钟内从裸机节点上创造出所需的数据库集群。
高可用
Pigsty 创建的数据库集群是分布式、高可用的数据库集群。Pigsty 创建的数据库基于 DCS、Patroni、Haproxy 实现了高可用。数据库集群中的每个数据库实例在使用上都是幂等的,任意实例都可以通过内建负载均衡组件提供完整的读写服务,提供分布式数据库的使用体验。数据库集群可以自动进行故障检测与主从切换,普通故障能在几秒到几十秒内自愈,且期间只读流量不受影响。故障时。集群中只要有任意实例存活,就可以对外提供完整的服务。其架构方案经过审慎的设计与评估,着眼于以最小复杂度实现所需功能。该方案经过长时间,大规模的生产环境验证,已经被多个行业内的组织所使用。

用户界面
Pigsty 旨在降低 PostgreSQL 的使用门槛,因此在易用性上做了大量工作。部署分为三步:下载源码,配置环境,执行安装,均可通过一行命令完成。遵循经典的软件安装模式,并提供了配置向导。您需要准备的只是一台 CentOS7.8 机器及其 root 权限。管理新节点时,Pigsty 基于 Ansible 通过 ssh 发起管理,无需安装 Agent,即使是新手也可以轻松完成部署。
在管理与使用上,Pigsty 提供了不同层次的用户界面,以满足不同用户的需求。新手用户可以使用一键拉起的本地沙箱与图形用户界面,而开发者则可以选择使用 pigsty-cli 命令行工具与配置文件的方式进行管理。经验丰富的 DBA、运维与架构师则可以直接通过 Ansible 原语对执行的任务进行精细控制。
服务发现
Pigsty 提供了可选的服务发现机制,基于 DCS(Consul/Etcd)实现。监控系统将自动从服务注册中心发现所有的监控对象,而 Patroni 则使用 DCS 作为集中的配置存储。Consul 提供 DNS 可用作客户端服务发现机制,而 UI 可以让您对环境中的服务一览无余。
沙箱环境
Pigsty 既可以在生产环境中管理成百上千个高规格的生产节点,也可以独立运行于本地 1 核 1GB 虚拟机中,作为开箱即用的数据库实例使用。在本地计算机上使用时,Pigsty 提供基于 Vagrant 与 Virtualbox 的沙箱。可以一键拉起与生产环境一致的数据库环境,用于学习,开发,测试数据分析,数据可视化等场景。
离线安装
Pigsty 支持离线安装,对于没有互联网访问的环境尤为方便。Pigsty 的离线安装包中带有监控系统,数据库以及所有相关的依赖。您可以通过向导自动下载,或从 Github Release 页面或 CDN 手工下载离线安装包。
数据分析
Pigsty 提供了一种名为 “Datalet” 的扩展机制,允许用户和开发者对 Pigsty 进行进一步的定制,将其用到意想不到的地方,例如数据分析与可视化。Pigsty 集成了 Echarts,以及常用地图底图等,可以方便地实现高级可视化需求。比起 Julia,Matlab,R 这样的传统科学计算语言 / 绘图库而言,PG + Grafana + Echarts 的组合允许您以极低的成本制作出可分享,可交付,标准化的数据应用或可视化作品。
所有 Pigsty 高级专题监控面板都会以 Datalet 的方式发布。Pigsty 也自带了一些的 Datalet 案例:Redis 监控系统,疫情数据分析,七普人口数据分析,PG 日志挖掘等。
最新版本:2.1
v2.1.0 于2023年6月上旬发布,为跟随 PG 社区主干的例行升级,添加 PG 11 - 16 支持,现在您可以使用 Pigsty 部署 PG 15.3 , 14.8, 13.11, 12.15, 与 16 beta1。v2.1 针对 PostgreSQL 16 进行了适配,改进了监控系统效果,添加了一系列便利命令工具,建议按需升级。具体更新内容包括:
PostgreSQL 16 beta 支持,以及 12 ~ 15 支持。
添加 PGVector for AI Embedding for 12 - 15
为 grafana 添加 6 个额外的面板和数据源插件
添加 bin/profile 来配置文件远程进程并生成火焰图
添加 bin/validate 验证 pigsty.yml 配置文件
添加 bin/repo-add 来添加上游 repo 文件到 /etc/yum.repos.d
PostgreSQL 16 可观察性:pg_stat_io 和相应的仪表板
PostgreSQL 15.3、14.8、13.11、12.15、11.20 和 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
更新说明详见此处。
最新版本:2.3
Pigsty v2.3 现已于2023年8月下旬发布,此版本进一步完善了监控系统、应用生态、并跟进 PostgreSQL 例行的小版本更新(CVE 修复)。跟随 PostgreSQL 主干小版本进行更新,包括 15.4, 14.9, 13.12, 12.16 以及 16.beta3,此更新修复了一个 CVE 安全漏洞。此外高可用管控 Patroni 也升级到 3.1 版本,解决了一些 BUG 。
v2.3 提供了对 FerretDB 的支持,它是一个构建在 PostgreSQL 之上,真正开源的 MongoDB 替代。用户可以使用 MongoDB 客户端访问它,但是真正的数据都存储在底层的 PostgreSQL 里。还默认添加了一款名为 NocoDB 的开源应用:这是 AirTable 的开源替代:这是一个数据库 - 电子表格的混合体,可以用低代码的方式快速打造一个多人在线协作应用。新增了为主机节点集群绑定一个 L2 VIP 的功能,使用 VRRP 协议确保全链路上没有单点,并提供了完整的监控:keepalived_exporter 被用于收集监控数据。而且每一个 Node VIP (keepalived)与 PGSQL VIP (vip-manager)都会添加到 blackbox_exporter 的 ICMP / PING 监控列表中。
在监控系统上,v2.3 在 v2.2 的基础上进行了打磨优化:新增了 VIP 监控,VIP 与节点 PING 指标被加入到 NODE / PGSQL 监控的醒目位置;PGSQL 监控新增了锁等待树视图;REDIS 监控进行了风格优化;MinIO 监控适配的新的监控指标名称;MySQL / MongoDB 监控新增了实现存根,为后续实现奠定基础。
MongoDB 支持
MongoDB 是一个很受欢迎的 NoSQL 文档数据库。但由于开源协议问题(SSPL),与软件定位问题(Postgres 发型版),Pigsty 决定使用 FerretDB 来提供对 MongoDB 的支持。FerretDB 是一个有趣的开源项目:它让 PostgreSQL 可以提供 MongoDB 的能力。
MongoDB 与 PostgreSQL 是两个非常不同的数据库系统:MongoDB 使用文档模型,使用专用的查询语言进行交互 。但是鉴于 PostgreSQL 也提供了完整的 JSON/JSONB/GIN 功能支持,所以这么做在理论上也是完全可行的:FerretDB 负责将你的 SON 查询转换为 SQL 查询:use test
在 Pigsty 定义一个 FerretDB 集群与其他类型的数据库并无二致,你仅需要提供核心的身份参数:集群名称与实例号。需要关注的是 mongo_pgurl 参数,它指定了 FerretDB 底层使用的 PostgreSQL 地址。
可以直接填入一个已由 Pigsty 创建的任意 PostgreSQL 服务地址。数据库不需要预先配置什么,只需要确保所使用的用户具有 DDL 权限即可。配置完成后使用 ./mongo.yml -l ferret 即可完成安装。当然,如果更喜欢使用容器,也可以直接 cd pigsty/app/ferretdb; make 使用 docker-compose 拉起 FerretDB 使用。安装完成后可以使用任何 MongoDB Client 访问 FerretDB,例如 MongoSH:
mongosh 'mongodb://test:test@10.10.10.45:27017/test?authMechanism=PLAIN'
对于那些希望从 MongoDB 迁移到 PostgreSQL 的用户来说,这是一种改造成本极小的折衷手段。Pigsty 同样提供了另一种支持方式 MongoFDW:在 PostgreSQL 中使用 SQL 查询现有的 MongoDB 集群。
新应用:NocoDB
在 v2.3 中添加了对 NocoDB 的内置支持,可以使用默认的 Docker Compose 模板,一键拉起 NocoDB 并使用内置的 PostgreSQL 作为存储。NocoDB 是 Airtable 的开源替代品,那 AirTable 又是什么呢?其实有点类似于 Google Docs/腾讯云文档。但是提供了非常丰富的接口,钩子,可以用来实现一些非常强大的功能。
NocoDB 可以让各种关系型数据库变身成为 Excel,运行你自己的本地云文档软件。它也可以让用户用低代码的方式实现一些需求:比如你可以把自动生成的表单发送给别人填写,将结果自动整理成为实时共享、可协作、可编程的多维表格。在 Pigsty 中拉起 NocoDB 非常容易,只需要一行命令即可。可以修改 .env 中的 DATABASE_URL 参数来使用不同的数据库。
cd ~/pigsty/app/nocodb; make up
Node VIP 支持
Pigsty v2.3 新增了为主机节点集群绑定一个 L2 VIP 的功能,使用 VRRP 协议确保全链路上没有单点,并提供了完整的监控。
在古早的 Pigsty 版本中(0.5 前),曾经提供过基于 Keepalived 的 L2 VIP 功能实现。但随后被 HAProxy + VIP-Manager 所取代:HAProxy 不挑网络,可以进行灵活的健康检查、流量分发,更是提供了一个简单易用的管控界面。而 VIP Manager 则可以将一个 L2 VIP 绑定在数据库集群主库上。但通用的 L2 VIP 需求仍然是存在的,例如,如果用户选择使用 HAProxy 集群接入,那么 HAProxy 本身的可靠性如何保证?尽管你可以使用 DNS LB 的方式进行切换,但 VRRP 在可靠性与易用性上显然更胜一筹。此外,MinIO/ETCD ,Prometheus 这些组件,有时也会有这样的需求。
想要为集群绑定一个 L2 VIP 其实很简单,只需要启用 vip_enabled,分配一个 VLAN 中唯一的 VirtualRouterID 号与 VIP 地址就可以了。默认情况下,所有集群成员使用 BACKUP 初始状态以非抢占模式工作。你可以通过设置 vip_role 与 vip_preempt 来改变这一行为。L2 VIP 会自动被纳入监控中。当 MASTER 宕机后, BACKUP 会立即进行接管。
监控系统改进
Pigsty v2.2 基于 Grafana 10 对监控系统进行了彻底的翻新重制。v2.3 在 v2.2 的基础上进行了更多优化。例如新增的 NODE VIP 监控面板用于展示一个 VIP 的状态:所属集群/成员,网络 RT,KA 的状态等等。
更丝滑的构建流程
Pigsty v2.2 提供了官方 Yum 源,在 v2.3 中则默认启用了全站 HTTPS。当选择直接从互联网下载 Pigsty 所需的软件时,可能会遭遇到功夫网的烦恼。例如默认的 Grafana / Prometheus Yum 源下载速度极慢。除此之外,还有一些零散的 RPM 包需要通过 Web URL 的方式,而不是 repotrack RPM 的方式进行下载。
在 v2.2 中解决了这个问题。Pigsty 提供了一个官方的 yum 源:http://get.pigsty.cc ,并配置为默认的上游源之一。所有零散的 RPM,需要翻墙的 RPM 都放置其中,可以有效加快在线安装 / 构建速度。此外 Pigsty 还在 v2.2 中提供了对信创操作系统,统信 UOS 1050e uel20 的支持,满足一些特殊客户的特殊需求。Pigsty 针对这些系统重新编译了 PG 相关的 RPM 包,为有需求的客户提供支持。
安装
Pigsty v2.3 的安装命令为:bash -c "$(curl -fsSL https://get.pigsty.cc/latest)"
一行命令,即可在全新机器上完整安装 Pigsty. 如果你想要尝鲜 beta 版本,将 latest 换为 beta 即可。对于没有互联网访问的特殊环境,也可以使用以下链接下载 Pigsty,以及打包了所有软件的离线安装包:https://get.pigsty.cc/v2.3.0/pigsty-v2.3.0.tgz
以上就是 Pigsty v2.3 带来的变化。更多细节可参考 Pigsty 官方文档与 Github Release Note。
项目主页:https://github.com/Vonng/pigsty