上手
如何快速拉起Pigsty
准备
安装Pigsty需要一个机器节点:规格至少为1核2GB,采用Linux内核,安装CentOS 7发行版,处理器为x86_64架构。该节点在生产环境中被用作元节点(管理节点),发出控制命令,采集监控数据,运行定时任务。
安装
安装需要root权限。使用带有sudo权限的用户(或root)执行以下命令即可完成安装:
curl -fsSL https://pigsty.cc/pigsty.tgz | gzip -d | tar -xC ~; cd ~/pigsty # 下载源码
make config # 配置环境
make install # 安装软件
在使用离线安装包的情况下,整个安装过程耗时约10~15分钟。
./configure
会自动检测环境。如果节点拥有多个IP地址,请指定一个主要IP地址。沙箱环境中的IP地址固定为10.10.10.10
。此外,如果离线安装包/tmp/pkg.tgz
不存在,程序会提示是否从网络下载。
沙箱
如果希望在本机运行Pigsty,可以使用虚拟机软件,或使用Pigsty沙箱。沙箱是本地演示/测试/开发环境,运行于由 Vagrant 托管的本地 Virtualbox 虚拟机上。这两者都是跨平台软件,可以在MacOS|Windows|Linux下运行。
以MacOS为例,在本机终端中依次执行以下命令,即可拉起沙箱。
make deps # 安装homebrew,并通过homebrew安装vagrant与virtualbox(需重启)
make dns # 向本机/etc/hosts写入静态域名 (需sudo输入密码)
make start # 使用Vagrant拉起单个meta节点 (start4则为4个节点)
make demo # 使用单节点Demo配置并安装 (demo4则为4节点demo)
使用
安装完毕后,用可以直接访问该节点上的端口来使用Pigsty监控系统。
例如,Pigsty监控系统默认使用3000端口,默认管理用户与密码均为:admin
。
在使用沙箱时,用户可以通过make dns
写入的默认本地域名访问Pigsty提供的相关服务,例如这里的:http://g.pigsty。Pigsty对外暴露的相关服务如下表所示:
当使用普通机器部署时,将这里的IP地址(10.10.10.10)换为用户自己的节点IP即可。
直接通过IP地址访问虽然方便,但更合适的做法是通过 nginx_upstream
为各个服务指定域名,并通过域名访问不同的服务。Pigsty自带的Nginx会默认通过80端口对外代理所有Web访问。
部署
Pigsty安装完成后,这台机器将作为Pigsty的元节点。用户可以从元节点发起控制,部署新PG集群。部署新数据库集群分为三步:
-
将用于部署的机器节点纳入管理
当前用户可以从当前节点免密码ssh登陆目标节点,并带有免密码的sudo权限。
-
定义数据库集群(配置文件或图形界面)
-
执行数据库集群部署剧本
如果用户通过make start4
与make demo4
启动沙箱,则无需配置直接执行此命令即可。
./pgsql.yml -l pg-test # 初始化pg-test数据库集群
更多信息请参考部署一章
FAQ
安装与使用过程中的常见问题,请参考 FAQ
接下来做什么?
1 - FAQ
Pigsty快速上手常见问题
下载问题
源码包从哪里下载?
Pigsty源码包:pigsty.tgz
可以从多个地方下载:Pigsty官网,Pigsty CDN,以及Github。
- Pigsty官网是最新最快都的下载地址,也是默认使用的地址。但只提供最新版本,不提供历史版本。
- Github Release 是最权威最全面的下载地址,包含所有历史版本。
- Pigsty CDN则主要用于下载历史版本,以及离线软件包。
https://pigsty.cc/pigsty.tgz # 官网最新
https://github.com/Vonng/pigsty/releases/download/v0.9/pigsty.tgz # Github
http://pigsty-1304147732.cos.accelerate.myqcloud.com/v0.9/pigsty.tgz # CDN
离线安装包从哪里下载?
默认情况下,用户不需要操心这个问题。configure
过程中如果发现离线安装包不存在,将会自动提示用户下载。但如果用户需要在没有互联网访问的环境下进行安装,就需要自行下载并将其上传至目标服务器。
离线安装包pkg.tgz
可以从Github Release 或CDN(专为大陆提供)下载。
https://github.com/Vonng/pigsty/releases/download/v0.9/pkg.tgz # Github
http://pigsty-1304147732.cos.accelerate.myqcloud.com/v0.9/pkg.tgz # CDN (China)
将其放置于安装机器的 /tmp/pkg.tgz
路径下,即可在安装过程中自动使用。离线软件包默认会解压至:/www/pigsty
。
不使用离线安装包?
离线安装包中包含了从各路Yum源与Github Release中收集下载的软件包。用户也可以选择不使用预先打包好的离线安装包,而是直接从原始上游下载。当用户使用非 CentOS 7.8 操作系统时,通常可以使用这种方式解决绝大多数依赖错漏问题。不使用离线安装包也很简单,在make config
提示时选择否 n
即可。
安装yum软件包时报错
默认的离线软件安装包基于CentOS 7.8环境制作,如果出现问题,可以删除/www/pigsty
中出现问题的相关rpm包,以及/www/pigsty/repo_complete
标记文件。执行make repo-download
重新下载与当前操作系统版本匹配的依赖软件包即可。
有些软件包下载速度太慢
Pigsty已经尽可能使用国内yum镜像进行下载,然而少量软件包仍然受到GFW的影响,导致下载缓慢,例如直接从Github下载的相关软件。有以下解决方案:
-
Pigsty提供离线软件安装包,预先打包了所有软件及其依赖。在make config
时会自动提示下载。
-
通过proxy_env
指定代理服务器,通过代理服务器下载,或直接使用墙外服务器。
-
通过URL直接下载的软件,Pigsty CDN提供了镜像(文件名不变,前缀换掉),例如:
http://pigsty-1304147732.cos.accelerate.myqcloud.com/pkg/pg_exporter-0.3.2-1.el7.x86_64.rpm
Vagrant沙箱第一次启动太慢
Pigsty沙箱默认使用CentOS 7虚拟机,Vagrant首次启动虚拟机时,会下载CentOS/7
的ISO镜像Box,尺寸不小。(当然您也可以选择自己下一个CentOS 7 ISO然后用虚拟机安装)。使用代理可能会提高下载速度,好在这个下载只需要在第一次启动时进行。
版本问题
Pigsty源码有哪几种分支?
除了常规的语义版本号之外,Pigsty有三个主要分支:Default, Pro, Beta。pigsty.tgz
为标准开源版本,pigsty-beta.tgz
为BETA版本,pigsty-pro.tgz
为专业版本。普通用户使用默认的pigsty.tgz
即可,专业版目前不提供公开下载。
我需要要等1.0 GA吗?
Pigsty从0.3开始就实际应用于真实世界的生产环境中,并不是1.0才真正General Available。然而1.0计划了若干变更(例如监控指标的重新定义改造,PG14的支持),而Pigsty不会对v1.0前的版本提供升级支持。是否现在就用于生产请视自身情况考虑。
编辑Pigsty配置文件的GUI工具是什么?
那是一个单独的命令行工具pigsty-cli
,目前处于beta状态。将于Pigsty v1.0一同正式发布。
环境问题
Pigsty的安装环境
安装Pigsty需要至少一个机器节点:规格至少为1核2GB,采用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供给方案创建的外部数据库,可以使用仅监控模式部署,详情请参考文档。注意Pigsty部署需要目标机器ssh sudo权限。因此通常无法支持云厂商RDS,但例如MyBase for PostgreSQL的ECS托管云数据库是可以纳入监控的。
云厂商RDS监控不了有什么办法?
目前Pigsty官方不支持对纯RDS的监控,因为缺少机器指标的监控系统只能说是半成品。但用户可以通过本地部署PG Exporter远程连接监控RDS,以及Prometheus本地静态服务发现抓取本地Exporter,并通过手工配置Label的方式实现曲线救国。
监控系统问题
监控系统中的Dashboard与文档不一致?
为什么监控系统里只有10个Dashboard?因为开源版本的Pigsty只提供这些监控面板,当然也绝对够用了。
为什么PG Instance Log面板没有数据?
日志收集目前是一个Beta特性,需要额外的安装步骤。执行make logging
会安装loki
与promtail
,执行后该面板方可用。毕竟loki还是比较新的日志收集方案,不是所有人都愿意接受。
监控系统的数据量有多大?
这取决于您数据库的复杂程度(workload),作为参考:200个生产数据库实例1天产生的监控数据量约为16GB。Pigsty默认保留30天监控数据,可以通过参数调整。
架构问题
Pigsty都装了什么东西?
详情请参考系统架构。
Pigsty是一套带有完整运行时的数据库解决方案。在本机上,Pigsty可以作为开发、测试、数据分析的环境。在生产环境中,Pigsty可以用于部署,管理,监控大规模PostgreSQL集群。
Pigsty数据库如何保证高可用
Patroni 2.0作为HA Agent,Consul作为DCS,Haproxy作为默认流量分发器。Pigsty的数据库集群成员在使用上幂等:只要集群还有任意一个实例存活,读写与只读流量都可以继续工作。
DCS自身的可用性通过多节点共识保证,故生产环境中建议部署3~5个meta节点,或使用外部的DCS集群。
Pigsty问题交流群