# Pigsty v1.4.0

> MatrixDB 支持，分离 INFRA/NODES/PGSQL/REDIS 模块

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

**v1\.4\.0 · 2022-03-31**
- [查看发布](https://github.com/pgsty/pigsty/releases/tag/v1.4.0)
- [源码 · tar\.gz](https://github.com/pgsty/pigsty/archive/refs/tags/v1.4.0.tar.gz)
- [源码 · zip](https://github.com/pgsty/pigsty/archive/refs/tags/v1.4.0.zip)
- [pgsty\/pigsty](https://github.com/pgsty/pigsty)

## 架构

- 将系统解耦为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](https://github.com/Vonng/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](https://github.com/Vonng/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 的工作流如下：

```text
 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。

```text
MD5 (app.tgz) = f887313767982b31a2b094e5589a75ea
MD5 (matrix.tgz) = 3d063437c482d94bd7e35df1a08bbc84
MD5 (pigsty.tgz) = e143b88ebea1474f9ebaffddc6072c49
MD5 (pkg.tgz) = 73e8f5ce995b1f1760cb63c1904fb91b
```

## 信息来源

- [GitHub Release](https://github.com/pgsty/pigsty/releases/tag/v1.4.0)
- [Pigsty v1.4 发布文章](https://pigsty.cc/blog/pigsty/v1.4/)
- [历史 About / 发布注记](https://pigsty.cc/docs/about/release/#v140)
- [源码对比：`v1.3.1...v1.4.0`](https://github.com/pgsty/pigsty/compare/v1.3.1...v1.4.0)
