Skip to content

工作中所使用的 Postgres

Postgres 实际应用概览,覆盖日常运维与架构中的常用能力。

MVCC 多版本控制

一个绕不开的话题,主要是对抗表空间膨胀、解决垃圾回收问题,以及主从库之间从库查询冲突。

目前方法:每日低峰期定时 vacuum(gocron 定时任务);根据 pgstattuple 对磁盘空间利用率进行分析,决定是否 vacuum full / pg_repack

流复制

主从复制、读写分离的基础,五种同步方式。

逻辑订阅

大版本升级、数据并归、迁移。

执行计划调优

调节成本因子比例,如不同的磁盘类型比例有所区别。

参数调优

主机和服务相关参数。

分区表

采用 pg_pathman,根据业务数据量决定是否分区;pg_pathman 能够在不停服的前提下自动分区数据。

高可用

Patroni。

分表

Citus:注意亲和性、表之间的 join、DDL 等限制。

监控与日志

Prometheus 套件、自定义监控项;Filebeat / Elasticsearch / Kibana 日志收集。

统计

结合数据库自带统计信息及 pg_stat_statements 插件生成报表。

压测

pgbench、自定义 SQL。

备份恢复

wal-g 全量和实时增量。

连接池

pgbouncer,主要用于分表中各个服务之间。

FDW

(待补充)