---
title: 开源PostgreSQL参考架构
description: "开源PostgreSQL是典型的OLTP数据库，有很多在大型商业RDBMS中所具有的特性，包括事务、子查询、触发器、视图、外键引用完整性和复杂锁定功能，是功能最为强大的开源数据库，适用于功能要求较全的数据库系统，地理空间数据处理等。商业MPP架构的数据库很多基于PostgreSQL开发。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/twp/kunpengdbs_19_0004.html
sourcePath: /source/zh/kunpengdbs/twp/kunpengdbs_19_0004.html
indexId: d522daab7227126280e7def1cf29aa18e26bb8802e22a04f890b32d3375a11cb49
---
# 开源PostgreSQL参考架构

#### 组件场景

开源PostgreSQL是典型的OLTP数据库，有很多在大型商业RDBMS中所具有的特性，包括事务、子查询、触发器、视图、外键引用完整性和复杂锁定功能，是功能最为强大的开源数据库，适用于功能要求较全的数据库系统，地理空间数据处理等。商业MPP架构的数据库很多基于PostgreSQL开发。


#### 组件原理

PostgreSQL原理如图1所示，主要进程说明如表1所示。

图1 PostgreSQL原理


**表1 PostgreSQL主要进程说明**

| 进程类别 | 进程名称 | 说明 |
| --- | --- | --- |
| 主进程 | Postmaster | Postmaster是整个数据库实例的总控进程，负责启动和关闭该数据库实例。其默认监测UNIXDomain Socket和TCP/IP（Windows等，一部分的平台只监测TCP/IP）的5432端口，等待来自前端的连接处理。监测的端口号可以在PostgreSQL的设置文件postgresql.conf中修改。 |
| 会话服务进程 | Postgres | 子进程根据pg\_hba.conf定义的安全策略来判断是否允许进行连接，根据策略，会拒绝某些特定的IP及网络，或者也可以只允许某些特定的用户或者对某些数据库进行连接。 Postgres会接受前端过来的查询，然后对数据库进行检索，最后把结果返回，有时也会对数据库进行更新。更新的数据同时还会记录在事务日志里面（PostgreSQL称为WAL日志）。这个主要是当停电、服务器宕机、重新启动的时候进行恢复处理的时候使用。另外，把日志归档保存起来，可在需要进行恢复的时候使用。在PostgreSQL 9.0以后，通过把WAL日志传输其他的PostgreSQL，可以实时的进行数据库复制，这就是所谓的“数据库复制”功能。 |
| 辅助进程 | SysLogger（系统日志） | 需要在postgresql.conf中logging\_collection设置为on，此时主进程才会启动Syslogger辅助进程。 |
| 辅助进程 | BgWriter（后台写） | 把共享内存中的脏页写到磁盘上的进程。主要是为了提高插入、更新和删除数据的性能。 |
| 辅助进程 | WalWriter（ 预写式日志 ） | 在修改数据之前把修改操作记录到磁盘中，以便后面更新实时数据时就不需要数据持久化到文件中。 |
| 辅助进程 | PgArch（归档） | WAL日志会被循环使用，PgArch在归档前会把WAL日志备份出来。通过PITR（Point in Time Recovery）技术，可以对数据库进行一次全量备份后，该技术将备份时间点之后的WAL日志通过归档进行备份，使用数据库的全量备份再加上后面产生的WAL日志，即可把数据库向前推到全量备份后的任意一个时间点。 |
| 辅助进程 | AutoVacuum（系统自动清理） | 在PostgreSQL数据库中，对表进行DELETE操作后，旧的数据并不会立即被删除，并且在更新数据时，也并不会在旧的数据上做更新，而是新生成一行数据。旧的数据只是被标识为删除状态，只有在没有并发的其他事务读到这些旧数据时，它们才会被清除。这个清除工作就由AutoVacuum进程完成。 |
| 辅助进程 | PgStat（统计收集） | 做数据的统计收集工作。主要用于查询优化时的代价估算，包括一个表和索引进行了多少次的插入、更新、删除操作，磁盘块读写的次数、行的读次数。pg\_statistic中存储了PgStat收集的各类信息。 |
| 辅助进程 | CheckPoint（检查点） | 检查点是系统设置的事务序列点，设置检查点保证检查点前的日志信息刷到磁盘中。 |


#### 组件典型参考架构

PostgreSQL主流参考架构为Primary、Standby复制方案如图2所示。

图2 主从流复制方案

包括以下几种常用参考架构：

- 主从流复制方案
- LVS+KEEPALIVE高可用方案
- 开源pgpool等分库分表方案

两实例以上部署或分布式架构下建议每台服务器部署多实例绑定CPU收益更大。
