PostgreSQL集群篇——1、PG环境安装准备
标签
PostgreSQL,PG,集群,DBA,架构师,PG安装,编译安装
背景
PostgreSQL官方文档中讲到了多种高可用、负载均衡和复制特性解决方案,如下图所示:
特性 |
共享磁盘故障转移 |
文件系统复制 |
预写式日志传送 |
逻辑复制 |
基于触发器的主-备复制 |
基于语句的复制中间件 |
异步多主控机复制 |
同步多主控机复制 |
最通用的实现 |
NAS |
DRBD |
内建流复制 |
内建逻辑复制,pglogical |
Londiste,Slony |
pgpool-II |
Bucardo |
|
通信方法 |
共享磁盘 |
磁盘块 |
WAL |
逻辑解码 |
表行 |
SQL |
表行 |
表行和行锁 |
不要求特殊硬件 |
|
• |
• |
• |
• |
• |
• |
• |
允许多个主控机服务器 |
|
|
|
• |
|
• |
• |
• |
无主服务器负载 |
• |
|
• |
• |
|
• |
|
|
不等待多个服务器 |
• |
|
with sync off |
with sync off |
• |
|
• |
|
主控机失效将永不丢失数据 |
• |
• |
with sync on |
with sync on |
|
• |
|
• |
复制体接受只读查询 |
|
|
with hot |
• |
• |
• |
• |
• |
每个表粒度 |
|
|
|
• |
• |
|
• |
• |
不需要冲突解决 |
• |
• |
• |
|
• |
|
|
• |
我们在集群环境中使用这些技术,首先需要考虑的是我们目前面临的是什么问题,例如我现在面临的就是高并发问题如何来解决,按照上述图表中我选择了流复制解决方案。
在流复制解决方案中分为同步、异步两种,异步流复制通常采用的是基于wal日志来传送的方式进行,从节点通常比主节点要少一个wal日志块的数据,这给我们并发查询造成了影响,因此这里我们需要采用同步流复制解决方案,其采用的是数据流的方式,就像小溪一样,水一直流淌着,多条分支最终汇总到一处,同时接收处也在一直存储着。
流复制是从2010年推出pg9.0版本以后开始的,其版本到目前经历的阶段如下:
版本 |
方式 |
描述 |
PostgreSQL9.0 |
流式物理复制 |
开始支持流式物理复制,用户可以通过流式复制构建只读备库 |
PostgreSQL9.1 |
同步流复制 |
开始支持同步复制,只支持一个同步流复制节点,同步流复制能保证数据的0丢失 |
PostgreSQL9.2 |
级联流复制 |
开始支持联流复制,备库下面还可以再连接备库,形成级联架构 |
PostgreSQL9.2 |
流式虚拟备库 |
开始支持虚拟备库,即备库中没有数据文件,只包含wal文件。 |
PostgreSQL9.4 |
逻辑复制 |
开始支持逻辑复制,逻辑复制可以应对部分表复制的功能。 |
PostgreSQL9.6 |
同步流复制改版 |
同步流复制允许多个备用服务器以提高可靠性。 |
PostgreSQL10 |
|
使用发布/订阅进行逻辑复制 |
PostgreSQL11-13 |
|
持续优化 |