## 下载问题

#### **源码包从哪里下载？**

Pigsty源码包：`pigsty.tgz` 可以从以下位置获取：

* [Github Release](https://github.com/Vonng/pigsty/releases) 是最权威最全面的下载地址，包含所有历史发行版本。
* 大陆用户无法访问Github时，可以访问百度云盘下载：[https://pan.baidu.com/s/1DZIa9X2jAxx69Zj-aRHoaw](https://pan.baidu.com/s/1DZIa9X2jAxx69Zj-aRHoaw) (提取码: `8su9`)
* 如果用户需要进行离线安装，则可以预先从Github或其他渠道下载源码包与离线安装包，并通过scp，ftp等方式上传至服务器。

```bash
curl -SL https://github.com/Vonng/pigsty/releases/download/v1.3.0/pigsty.tgz -o ~/pigsty.tgz
```

#### **源码包的版本策略**

Pigsty遵循语义版本号规则: `<major>.<minor>.<release>`。大版本更新意味着重大的根本性架构调整（通常不会发生），
次版本号增长意味着一次显著更新，通常意味着软件包版本更新，API的微小变动，以及其它增量功能变更，通常会包含一份升级注意事项说明。
release版本号通常用于Bug修复与文档更新，Release版本号增长不会变更软件包版本（即 v1.1.0 与 v1.0.0对应的 `pkg.tgz`是相同的）。

-----------

#### 离线安装包从哪里下载？

`configure`过程中，如果离线安装包`/tmp/pkg.tgz`不存在，将会自动提示用户下载，默认从Github Release下载。

如果用户需要在**没有互联网访问**，或Github访问受限的环境下进行安装，就需要自行下载并将其上传至目标服务器指定位置。

```bash  
# curl -SL https://github.com/Vonng/pigsty/releases/download/v1.3.0/pkg.tgz    -o /tmp/pkg.tgz
```

将其放置于安装机器的 `/tmp/pkg.tgz` 路径下，即可在安装过程中自动使用。离线软件包默认会解压至：`/www/pigsty`。



-----------

#### 不使用离线安装包？

离线安装包中包含了从各路Yum源与Github Release中收集下载的软件包。
用户也可以选择不使用预先打包好的离线安装包，而是直接从原始上游下载
。当用户使用非 CentOS 7.8 操作系统时，通常可以使用这种方式解决绝大多数依赖错漏问题。
不使用离线安装包只需要在`configure`过程中提示下载时选择否 `n`即可。



-----------

#### 安装yum软件包时报错

默认的离线软件安装包基于CentOS 7.8环境制作，如果出现问题，可以删除`/www/pigsty`中出现问题的相关rpm包，以及`/www/pigsty/repo_complete`标记文件。
执行`make repo-download`重新下载与当前操作系统版本匹配的依赖软件包即可。

注意，从原始上游下载所有安装包时，速度受网络条件影响可能会很慢。通常出现兼容性问题的RPM软件包只占很小的一部分，
您可以考虑下载并解压离线安装包，删除其中的**不兼容项目**，以加快速度。

-------------

#### **有些软件包下载速度太慢**

Pigsty已经尽可能使用国内yum镜像进行下载，然而少量软件包仍然受到**GFW**的影响，导致下载缓慢，例如直接从Github下载的相关软件。有以下解决方案：

1. Pigsty提供**离线软件安装包**，预先打包了所有软件及其依赖。在`configure`时会自动提示下载。

2. 通过[`proxy_env`](v-connect#proxy_env)指定代理服务器，通过代理服务器下载，或直接使用墙外服务器。


-----------

#### **Vagrant沙箱第一次启动太慢**

Pigsty沙箱默认使用CentOS 7虚拟机，Vagrant首次启动虚拟机时，会下载`CentOS/7`的ISO镜像Box，尺寸不小。（当然用户也可以选择自行下载CentOS 7 安装盘ISO安装）。
使用代理会提高下载速度，下载CentOS7 Box只需要在首次启动沙箱时进行，后续重建沙箱时会直接复用。


-----------

#### 1.0 GA意味着什么？

Pigsty从0.3版本开始就实际应用于真实世界的生产环境中，并不是1.0才真正General Available。
1.0是一个里程碑节点，对监控系统进行了彻底的升级改造，1.0后的新版本都会给出版本升级方案指导。


-----------

#### **编辑Pigsty配置文件的GUI工具是什么？**

一个单独的命令行工具[`pigsty-cli`](https://github.com/Vonng/pigsty-cli)，目前处于beta状态。


-----------







## 环境问题


#### **Pigsty的安装环境**

安装Pigsty需要至少一个机器节点：规格至少为1核1GB，采用Linux内核，安装CentOS 7发行版，处理器为x86_64架构。建议使用**全新**节点（刚装完操作系统）。

在生产环境中，建议使用更高规格的机器，并部署**多个管理节点**作为容灾冗余。生产环境中**管理节点**负责发出控制命令，管理部署数据库集群，采集监控数据，运行定时任务等。

-----------


#### **Pigsty的操作系统要求**

Pigsty强烈建议使用CentOS 7.8操作系统安装元节点与数据库节点，这是一个经过充分验证的操作系统版本，可以有效避免将精力消耗在无谓的问题上。

Pigsty的默认开发、测试、部署环境都基于CentOS 7.8，CentOS 7.6也经过充分的验证。其他CentOS 7.x及其等效版本RHEL7 , Oracle Linux 7理论上没有问题，但并未进行测试与验证。

在使用**仅监控模式**监控已有PostgreSQL数据库集群时，可以使用不同的Linux发行版。因为监控系统相关组件均为Go编写的二进制，可以兼容各种Linux发行版，但这并不是官方支持的行为。

后续其他操作系统支持可能以容器镜像的形式提供。


-----------

#### 为什么不使用Docker与Kubernetes？

虽然Docker对于提高环境兼容性有非常好的效果，然而数据库并不属于容器使用的最佳场景。此外Docker与Kubernetes本身也有使用门槛。为了满足“降低门槛”的主旨，Pigsty采用裸机部署。

Pigsty在设计之初就考虑到容器化云化的需求，这体现在其配置定义的声明式实现中。并不需要太多修改就可以迁移改造为云原生解决方案。当时机成熟时，会使用Kubernetes Operator的方式进行重构。


-----------







## 集成问题


#### **是否可以监控已有的PG实例？**

对于非Pigsty供给方案创建的外部数据库，可以使用[仅监控模式](t-monly.md)部署，详情请参考文档。
注意Pigsty部署需要目标机器ssh sudo权限。因此通常无法支持云厂商RDS，但例如MyBase for PostgreSQL的ECS托管云数据库是可以纳入监控的。

-----------

#### **云厂商RDS监控不了有什么办法？**

目前Pigsty官方不支持对纯RDS的监控，因为缺少机器指标的监控系统是半成品。
但用户可以通过本地部署PG Exporter远程连接监控RDS，以及Prometheus本地静态服务发现抓取本地Exporter，并通过手工配置Label的方式实现曲线救国。

-----------

## 监控系统问题

-----------

#### **为什么PG Instance Log面板没有数据？**

日志收集目前是一个Beta特性，需要额外的安装步骤。执行`make logging`会安装`loki`与`promtail`，执行后该面板方可用。

详情请参考：[启用实时日志收集](t-logging.md)

loki是比较新的日志收集方案，不是所有人都愿意接受，因此作为选装项目。

-----------

#### **监控系统的数据量有多大？**

这取决于用户数据库的复杂程度（workload），作为参考：200个生产数据库实例1天产生的监控数据量约为16GB。Pigsty默认保留30天监控数据，可以通过参数调整。

-----------




## 架构问题

#### Pigsty都装了什么东西？

详情请参考[**系统架构**](c-arch.md)

![](../_media/infra.svg)

Pigsty是一套带有完整运行时的数据库解决方案。在本机上，Pigsty可以作为开发、测试、数据分析的环境。在生产环境中，Pigsty可以用于部署，管理，监控大规模PostgreSQL集群。

-----------


#### **Pigsty数据库如何保证高可用**

Patroni 2.0作为HA Agent，Consul作为DCS，Haproxy作为默认流量分发器。Pigsty的数据库集群成员在使用上幂等：只要集群还有任意一个实例存活，读写与只读流量都可以继续工作。

DCS自身的可用性通过多节点共识保证，故生产环境中建议部署3个或更多管理节点，或使用外部的DCS集群。

-----------





## 软件问题


#### 使用**ipython**时报错。

这是因为当前版本`pip3`默认安装的ipython版本存在BUG：其依赖`jedi`的版本过高（`0.18`）。您需要手动安装低版本的`jedi`（`0.17`）：

```bash
pip3 install jedi==0.17.2
```

-----------

#### 关机后虚拟机内没有监控数据

Virtualbox虚拟机关机后虚拟机内时间可能与宿主机不一致。

可以尝试使用以下命令：`make sync`，强制执行NTP时间同步。

```bash
sudo ntpdate -u pool.ntp.org
```

即可解决长时间休眠或关机重启后监控系统没有数据的问题。
