核心概念
介绍 PostgreSQL 集群的中涉及到的重要概念
世界上最先进的开源关系型数据库!
而 Pigsty 帮它进入全盛状态:开箱即用、可靠、可观测、可维护、可伸缩! 配置 | 管理 | 剧本 | 监控 | 参数
了解关于 PostgreSQL 的重要主题与概念。
描述 你想要的 PostgreSQL 集群
管理 您所创建的 PostgreSQL 集群。
使用幂等的剧本,将您的描述变为现实。
pgsql.yml
:初始化PostgreSQL集群或添加新的从库。pgsql-rm.yml
:移除PostgreSQL集群,或移除某个实例pgsql-user.yml
:在现有的PostgreSQL集群中添加新的业务用户pgsql-db.yml
:在现有的PostgreSQL集群中添加新的业务数据库pgsql-monitor.yml
:将远程postgres实例纳入监控中pgsql-migration.yml
:为现有的PostgreSQL集群生成迁移手册和脚本在 Grafana 仪表盘 中查阅 PostgreSQL 的详情状态。
在 Pigsty 中共有 26 个与 PostgreSQL 相关的监控面板:
PGSQL 模块的配置参数列表
PG_ID
: 计算和校验 PostgreSQL 实例身份PG_BUSINESS
: PostgreSQL业务对象定义PG_INSTALL
: 安装 PostgreSQL 内核,支持软件包与扩展插件PG_BOOTSTRAP
: 使用 Patroni 初始化高可用 PostgreSQL 集群PG_PROVISION
: 创建 PostgreSQL 用户、数据库和其他数据库内对象PG_BACKUP
: 使用 pgbackrest 设置备份仓库PG_SERVICE
: 暴露 PostgreSQL 服务,绑定 VIP (可选),以及注册DNSPG_EXPORTER
: 为 PostgreSQL 实例添加监控,并注册至基础设施中。参数 | 参数组 | 类型 | 级别 | 说明 | 中文说明 |
---|---|---|---|---|---|
pg_mode |
PG_ID |
enum | C | pgsql cluster mode: pgsql,citus,gpsql | pgsql 集群模式: pgsql,citus,gpsql |
pg_cluster |
PG_ID |
string | C | pgsql cluster name, REQUIRED identity parameter | pgsql 集群名称, 必选身份参数 |
pg_seq |
PG_ID |
int | I | pgsql instance seq number, REQUIRED identity parameter | pgsql 实例号, 必选身份参数 |
pg_role |
PG_ID |
enum | I | pgsql role, REQUIRED, could be primary,replica,offline | pgsql 实例角色, 必选身份参数, 可为 primary,replica,offline |
pg_instances |
PG_ID |
dict | I | define multiple pg instances on node in {port:ins_vars} format |
在一个节点上定义多个 pg 实例,使用 {port:ins_vars} 格式 |
pg_upstream |
PG_ID |
ip | I | repl upstream ip addr for standby cluster or cascade replica | 级联从库或备份集群或的复制上游节点IP地址 |
pg_shard |
PG_ID |
string | C | pgsql shard name, optional identity for sharding clusters | pgsql 分片名,对 citus 与 gpsql 等水平分片集群为必选身份参数 |
pg_group |
PG_ID |
int | C | pgsql shard index number, optional identity for sharding clusters | pgsql 分片号,正整数,对 citus 与 gpsql 等水平分片集群为必选身份参数 |
gp_role |
PG_ID |
enum | C | greenplum role of this cluster, could be master or segment | 这个集群的 greenplum 角色,可以是 master 或 segment |
pg_exporters |
PG_ID |
dict | C | additional pg_exporters to monitor remote postgres instances | 在该节点上设置额外的 pg_exporters 用于监控远程 postgres 实例 |
pg_offline_query |
PG_ID |
bool | I | set to true to enable offline query on this instance | 设置为 true 将此只读实例标记为特殊的离线从库,承载 Offline 服务,允许离线查询 |
pg_users |
PG_BUSINESS |
user[] | C | postgres business users | postgres 业务用户 |
pg_databases |
PG_BUSINESS |
database[] | C | postgres business databases | postgres 业务数据库 |
pg_services |
PG_BUSINESS |
service[] | C | postgres business services | postgres 业务服务 |
pg_hba_rules |
PG_BUSINESS |
hba[] | C | business hba rules for postgres | postgres 的业务 hba 规则 |
pgb_hba_rules |
PG_BUSINESS |
hba[] | C | business hba rules for pgbouncer | pgbouncer 的业务 hba 规则 |
pg_replication_username |
PG_BUSINESS |
username | G | postgres replication username, replicator by default |
postgres 复制用户名,默认为 replicator |
pg_replication_password |
PG_BUSINESS |
password | G | postgres replication password, DBUser.Replicator by default |
postgres 复制密码,默认为 DBUser.Replicator |
pg_admin_username |
PG_BUSINESS |
username | G | postgres admin username, dbuser_dba by default |
postgres 管理员用户名,默认为 dbuser_dba |
pg_admin_password |
PG_BUSINESS |
password | G | postgres admin password in plain text, DBUser.DBA by default |
postgres 管理员明文密码,默认为 DBUser.DBA |
pg_monitor_username |
PG_BUSINESS |
username | G | postgres monitor username, dbuser_monitor by default |
postgres 监控用户名,默认为 dbuser_monitor |
pg_monitor_password |
PG_BUSINESS |
password | G | postgres monitor password, DBUser.Monitor by default |
postgres 监控密码,默认为 DBUser.Monitor |
pg_dbsu_password |
PG_BUSINESS |
password | G/C | dbsu password, empty string means no dbsu password by default | dbsu 密码,默认为空字符串意味着不设置 dbsu 密码,最好不要设置。 |
pg_dbsu |
PG_INSTALL |
username | C | os dbsu name, postgres by default, better not change it | 操作系统 dbsu 名称,默认为 postgres,最好不要更改 |
pg_dbsu_uid |
PG_INSTALL |
int | C | os dbsu uid and gid, 26 for default postgres users and groups | 操作系统 dbsu uid 和 gid,对于默认的 postgres 用户和组为 26 |
pg_dbsu_sudo |
PG_INSTALL |
enum | C | dbsu sudo privilege, none,limit,all,nopass. limit by default | dbsu sudo 权限, none,limit,all,nopass,默认为 limit,有限sudo权限 |
pg_dbsu_home |
PG_INSTALL |
path | C | postgresql home directory, /var/lib/pgsql by default |
postgresql 主目录,默认为 /var/lib/pgsql |
pg_dbsu_ssh_exchange |
PG_INSTALL |
bool | C | exchange postgres dbsu ssh key among same pgsql cluster | 在 pgsql 集群之间交换 postgres dbsu ssh 密钥 |
pg_version |
PG_INSTALL |
enum | C | postgres major version to be installed, 15 by default | 要安装的 postgres 主版本,默认为 15 |
pg_bin_dir |
PG_INSTALL |
path | C | postgres binary dir, /usr/pgsql/bin by default |
postgres 二进制目录,默认为 /usr/pgsql/bin |
pg_log_dir |
PG_INSTALL |
path | C | postgres log dir, /pg/log/postgres by default |
postgres 日志目录,默认为 /pg/log/postgres |
pg_packages |
PG_INSTALL |
string[] | C | pg packages to be installed, ${pg_version} will be replaced |
要安装的 pg 包,${pg_version} 将被替换为实际主版本号 |
pg_extensions |
PG_INSTALL |
string[] | C | pg extensions to be installed, ${pg_version} will be replaced |
要安装的 pg 扩展,${pg_version} 将被替换为实际主版本号 |
pg_safeguard |
PG_BOOTSTRAP |
bool | G/C/A | prevent purging running postgres instance? false by default | 防误删保险,禁止清除正在运行的 postgres 实例?默认为 false |
pg_clean |
PG_BOOTSTRAP |
bool | G/C/A | purging existing postgres during pgsql init? true by default | 在 pgsql 初始化期间清除现有的 postgres?默认为 true |
pg_data |
PG_BOOTSTRAP |
path | C | postgres data directory, /pg/data by default |
postgres 数据目录,默认为 /pg/data |
pg_fs_main |
PG_BOOTSTRAP |
path | C | mountpoint/path for postgres main data, /data by default |
postgres 主数据的挂载点/路径,默认为 /data |
pg_fs_bkup |
PG_BOOTSTRAP |
path | C | mountpoint/path for pg backup data, /data/backup by default |
pg 备份数据的挂载点/路径,默认为 /data/backup |
pg_storage_type |
PG_BOOTSTRAP |
enum | C | storage type for pg main data, SSD,HDD, SSD by default | pg 主数据的存储类型,SSD、HDD,默认为 SSD,影响自动优化的参数。 |
pg_dummy_filesize |
PG_BOOTSTRAP |
size | C | size of /pg/dummy , hold 64MB disk space for emergency use |
/pg/dummy 的大小,默认保留 64MB 磁盘空间用于紧急抢修 |
pg_listen |
PG_BOOTSTRAP |
ip(s) | C/I | postgres/pgbouncer listen addresses, comma separated list | postgres/pgbouncer 的监听地址,用逗号分隔的IP列表,默认为 0.0.0.0 |
pg_port |
PG_BOOTSTRAP |
port | C | postgres listen port, 5432 by default | postgres 监听端口,默认为 5432 |
pg_localhost |
PG_BOOTSTRAP |
path | C | postgres unix socket dir for localhost connection | postgres 的 Unix 套接字目录,用于本地连接 |
pg_namespace |
PG_BOOTSTRAP |
path | C | top level key namespace in etcd, used by patroni & vip | 在 etcd 中的顶级键命名空间,被 patroni & vip 用于高可用管理 |
patroni_enabled |
PG_BOOTSTRAP |
bool | C | if disabled, no postgres cluster will be created during init | 如果禁用,初始化期间不会创建 postgres 集群 |
patroni_mode |
PG_BOOTSTRAP |
enum | C | patroni working mode: default,pause,remove | patroni 工作模式:default,pause,remove |
patroni_port |
PG_BOOTSTRAP |
port | C | patroni listen port, 8008 by default | patroni 监听端口,默认为 8008 |
patroni_log_dir |
PG_BOOTSTRAP |
path | C | patroni log dir, /pg/log/patroni by default |
patroni 日志目录,默认为 /pg/log/patroni |
patroni_ssl_enabled |
PG_BOOTSTRAP |
bool | G | secure patroni RestAPI communications with SSL? | 使用 SSL 保护 patroni RestAPI 通信? |
patroni_watchdog_mode |
PG_BOOTSTRAP |
enum | C | patroni watchdog mode: automatic,required,off. off by default | patroni 看门狗模式:automatic,required,off,默认为 off |
patroni_username |
PG_BOOTSTRAP |
username | C | patroni restapi username, postgres by default |
patroni restapi 用户名,默认为 postgres |
patroni_password |
PG_BOOTSTRAP |
password | C | patroni restapi password, Patroni.API by default |
patroni restapi 密码,默认为 Patroni.API |
pg_primary_db |
PG_BOOTSTRAP |
string | C | 指定集群中首要使用的数据库名,Citus等模式会用到,默认为 postgres |
|
pg_parameters |
PG_BOOTSTRAP |
dict | C | 覆盖 postgresql.auto.conf 中的 PostgreSQL 参数 | |
pg_conf |
PG_BOOTSTRAP |
enum | C | config template: oltp,olap,crit,tiny. oltp.yml by default |
配置模板:oltp,olap,crit,tiny,默认为 oltp.yml |
pg_max_conn |
PG_BOOTSTRAP |
int | C | postgres max connections, auto will use recommended value |
postgres 最大连接数,auto 将使用推荐值 |
pg_shared_buffer_ratio |
PG_BOOTSTRAP |
float | C | postgres shared buffer memory ratio, 0.25 by default, 0.1~0.4 | postgres 共享缓冲区内存比率,默认为 0.25,范围 0.1~0.4 |
pg_rto |
PG_BOOTSTRAP |
int | C | recovery time objective in seconds, 30s by default |
恢复时间目标(秒),默认为 30s |
pg_rpo |
PG_BOOTSTRAP |
int | C | recovery point objective in bytes, 1MiB at most by default |
恢复点目标(字节),默认为 1MiB |
pg_libs |
PG_BOOTSTRAP |
string | C | preloaded libraries, timescaledb,pg_stat_statements,auto_explain by default |
预加载的库,默认为 timescaledb,pg_stat_statements,auto_explain |
pg_delay |
PG_BOOTSTRAP |
interval | I | replication apply delay for standby cluster leader | 备份集群主库的WAL重放应用延迟,用于制备延迟从库 |
pg_checksum |
PG_BOOTSTRAP |
bool | C | enable data checksum for postgres cluster? | 为 postgres 集群启用数据校验和? |
pg_pwd_enc |
PG_BOOTSTRAP |
enum | C | passwords encryption algorithm: md5,scram-sha-256 | 密码加密算法:md5,scram-sha-256 |
pg_encoding |
PG_BOOTSTRAP |
enum | C | database cluster encoding, UTF8 by default |
数据库集群编码,默认为 UTF8 |
pg_locale |
PG_BOOTSTRAP |
enum | C | database cluster local, C by default |
数据库集群本地化设置,默认为 C |
pg_lc_collate |
PG_BOOTSTRAP |
enum | C | database cluster collate, C by default |
数据库集群排序,默认为 C |
pg_lc_ctype |
PG_BOOTSTRAP |
enum | C | database character type, en_US.UTF8 by default |
数据库字符类型,默认为 en_US.UTF8 |
pgbouncer_enabled |
PG_BOOTSTRAP |
bool | C | if disabled, pgbouncer will not be launched on pgsql host | 如果禁用,则不会配置 pgbouncer 连接池 |
pgbouncer_port |
PG_BOOTSTRAP |
port | C | pgbouncer listen port, 6432 by default | pgbouncer 监听端口,默认为 6432 |
pgbouncer_log_dir |
PG_BOOTSTRAP |
path | C | pgbouncer log dir, /pg/log/pgbouncer by default |
pgbouncer 日志目录,默认为 /pg/log/pgbouncer |
pgbouncer_auth_query |
PG_BOOTSTRAP |
bool | C | query postgres to retrieve unlisted business users? | 使用 AuthQuery 来从 postgres 获取未列出的业务用户? |
pgbouncer_poolmode |
PG_BOOTSTRAP |
enum | C | pooling mode: transaction,session,statement, transaction by default | 池化模式:transaction,session,statement,默认为 transaction |
pgbouncer_sslmode |
PG_BOOTSTRAP |
enum | C | pgbouncer client ssl mode, disable by default | pgbouncer 客户端 SSL 模式,默认为禁用 |
pg_provision |
PG_PROVISION |
bool | C | provision postgres cluster after bootstrap | 在引导后置备 postgres 集群内部的业务对象? |
pg_init |
PG_PROVISION |
string | G/C | provision init script for cluster template, pg-init by default |
为集群模板提供初始化脚本,默认为 pg-init |
pg_default_roles |
PG_PROVISION |
role[] | G/C | default roles and users in postgres cluster | postgres 集群中的默认预定义角色和系统用户 |
pg_default_privileges |
PG_PROVISION |
string[] | G/C | default privileges when created by admin user | 由管理员用户创建数据库内对象时的默认权限 |
pg_default_schemas |
PG_PROVISION |
string[] | G/C | default schemas to be created | 要创建的默认模式列表 |
pg_default_extensions |
PG_PROVISION |
extension[] | G/C | default extensions to be created | 要创建的默认扩展列表 |
pg_reload |
PG_PROVISION |
bool | A | reload postgres after hba changes | 更改HBA后,是否立即重载 postgres 配置 |
pg_default_hba_rules |
PG_PROVISION |
hba[] | G/C | postgres default host-based authentication rules | postgres 基于主机的认证规则,全局PG默认HBA |
pgb_default_hba_rules |
PG_PROVISION |
hba[] | G/C | pgbouncer default host-based authentication rules | pgbouncer 默认的基于主机的认证规则,全局PGB默认HBA |
pgbackrest_enabled |
PG_BACKUP |
bool | C | enable pgbackrest on pgsql host? | 在 pgsql 主机上启用 pgbackrest? |
pgbackrest_clean |
PG_BACKUP |
bool | C | remove pg backup data during init? | 在初始化时删除以前的 pg 备份数据? |
pgbackrest_log_dir |
PG_BACKUP |
path | C | pgbackrest log dir, /pg/log/pgbackrest by default |
pgbackrest 日志目录,默认为 /pg/log/pgbackrest |
pgbackrest_method |
PG_BACKUP |
enum | C | pgbackrest repo method: local,minio,etc… | pgbackrest 使用的仓库:local,minio,等… |
pgbackrest_repo |
PG_BACKUP |
dict | G/C | pgbackrest repo: https://pgbackrest.org/configuration.html#section-repository | pgbackrest 仓库定义:https://pgbackrest.org/configuration.html#section-repository |
pg_weight |
PG_SERVICE |
int | I | relative load balance weight in service, 100 by default, 0-255 | 在服务中的相对负载均衡权重,默认为 100,范围 0-255 |
pg_service_provider |
PG_SERVICE |
enum | G/C | dedicate haproxy node group name, or empty string for local nodes by default | 专用的 haproxy 节点组名称,或默认空字符,使用本地节点上的 haproxy |
pg_default_service_dest |
PG_SERVICE |
enum | G/C | default service destination if svc.dest=‘default’ | 如果 svc.dest=‘default’,默认服务指向哪里?postgres 或 pgbouncer,默认指向 pgbouncer |
pg_default_services |
PG_SERVICE |
service[] | G/C | postgres default service definitions | postgres 默认服务定义列表,全局共用。 |
pg_vip_enabled |
PG_SERVICE |
bool | C | enable a l2 vip for pgsql primary? false by default | 是否为 pgsql 主节点启用 L2 VIP?默认不启用 |
pg_vip_address |
PG_SERVICE |
cidr4 | C | vip address in <ipv4>/<mask> format, require if vip is enabled |
vip 地址的格式为 |
pg_vip_interface |
PG_SERVICE |
string | C/I | vip network interface to listen, eth0 by default | 监听的 vip 网络接口,默认为 eth0 |
pg_dns_suffix |
PG_SERVICE |
string | C | pgsql dns suffix, ’’ by default | pgsql dns 后缀,默认为空 |
pg_dns_target |
PG_SERVICE |
enum | C | auto, primary, vip, none, or ad hoc ip | PG DNS 解析到哪里?auto、primary、vip、none 或者特定的 IP 地址 |
pg_exporter_enabled |
PG_EXPORTER |
bool | C | enable pg_exporter on pgsql hosts? | 在 pgsql 主机上启用 pg_exporter 吗? |
pg_exporter_config |
PG_EXPORTER |
string | C | pg_exporter configuration file name | pg_exporter 配置文件/模板名称 |
pg_exporter_cache_ttls |
PG_EXPORTER |
string | C | pg_exporter collector ttl stage in seconds, ‘1,10,60,300’ by default | pg_exporter 收集器阶梯TTL配置,默认为4个由逗号分隔的秒数:‘1,10,60,300’ |
pg_exporter_port |
PG_EXPORTER |
port | C | pg_exporter listen port, 9630 by default | pg_exporter 监听端口,默认为 9630 |
pg_exporter_params |
PG_EXPORTER |
string | C | extra url parameters for pg_exporter dsn | pg_exporter dsn 中传入的额外 URL 参数 |
pg_exporter_url |
PG_EXPORTER |
pgurl | C | overwrite auto-generate pg dsn if specified | 如果指定,则覆盖自动生成的 postgres DSN 连接串 |
pg_exporter_auto_discovery |
PG_EXPORTER |
bool | C | enable auto database discovery? enabled by default | 监控是否启用自动数据库发现?默认启用 |
pg_exporter_exclude_database |
PG_EXPORTER |
string | C | csv of database that WILL NOT be monitored during auto-discovery | 启用自动发现时,排除在外的数据库名称列表,用逗号分隔 |
pg_exporter_include_database |
PG_EXPORTER |
string | C | csv of database that WILL BE monitored during auto-discovery | 启用自动发现时,只监控这个列表中的数据库,名称用逗号分隔 |
pg_exporter_connect_timeout |
PG_EXPORTER |
int | C | pg_exporter connect timeout in ms, 200 by default | pg_exporter 连接超时,单位毫秒,默认为 200 |
pg_exporter_options |
PG_EXPORTER |
arg | C | overwrite extra options for pg_exporter | pg_exporter 的额外命令行参数选项 |
pgbouncer_exporter_enabled |
PG_EXPORTER |
bool | C | enable pgbouncer_exporter on pgsql hosts? | 在 pgsql 主机上启用 pgbouncer_exporter 吗? |
pgbouncer_exporter_port |
PG_EXPORTER |
port | C | pgbouncer_exporter listen port, 9631 by default | pgbouncer_exporter 监听端口,默认为 9631 |
pgbouncer_exporter_url |
PG_EXPORTER |
pgurl | C | overwrite auto-generate pgbouncer dsn if specified | 如果指定,则覆盖自动生成的 pgbouncer dsn 连接串 |
pgbouncer_exporter_options |
PG_EXPORTER |
arg | C | overwrite extra options for pgbouncer_exporter | pgbouncer_exporter 的额外命令行参数选项 |
一些使用/管理 Pigsty中 PostgreSQL 数据库的教程。
介绍 PostgreSQL 集群的中涉及到的重要概念
介绍 PostgreSQL 集群的整体架构与实现细节。
用户/角色指的是使用 SQL 命令 CREATE USER/ROLE
创建的,数据库集簇内的逻辑对象。
数据库指的是使用 SQL 命令 CREATE DATABASE
创建的,数据库集簇内的逻辑对象。
分离读写操作,正确路由流量,稳定可靠地交付 PostgreSQL 集群提供的能力。
定义,创建,安装,启用 PostgreSQL 插件。
Pigsty 中基于主机的身份认证 HBA(Host-Based Authentication)详解。
根据需求场景选择合适的实例与集群类型,配置出满足需求的 PostgreSQL 数据库集群。
如何使用 ansible 剧本来管理 PostgreSQL 集群
Pigsty 中常用的 PostgreSQL 管理预案,用于维护生产环境中的数据库集群。
Pigsty 提供的默认角色系统与权限模型
如何使用 pgBackRest 备份/恢复/PITR PostgreSQL 数据库集群
如何将现有的 PostgreSQL 集群以最小的停机时间迁移至新的、由Pigsty管理的 PostgreSQL 集群?
Pigsty监控系统架构概览,以及如何监控现存的 PostgreSQL 实例?
Pigsty 为 PostgreSQL 提供了诸多开箱即用的 Grafana 监控仪表盘
Pigsty PGSQL 模块提供的完整监控指标列表与释义
PostgreSQL 常见问题答疑