购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 PostgreSQL流复制历程

1.无流复制时期

在不支持流复制的时期,PostgreSQL 数据库通过同步插件、物理文件复制、归档日志同步的方式实现主从集群搭建。其中,基于归档日志回放的方式类似 Oracle DG 的archive原理,现在也都是支持的,在某些特殊的应用场景中非常实用。

2.流复制起源

PostgreSQL自从2010年推出的9.0版本开始,支持流式物理复制。用户可以通过流式物理、复制构建只读备库(主备物理复制,块级别一致)。流式物理复制可以实现极低的延迟(通常在1ms以内)。

3.同步流复制

2011年推出的PostgreSQL 9.1支持同步复制,当时只支持一个同步流复制备节点(例如配置了3个备节点,只有一个是同步模式的,其他都是异步模式的)。

在同步复制模式下,当用户提交事务时,需要等待这笔事务的WAL日志复制到同步流复制备节点,才会给客户端返回提交成功的ACK。

在同步模式下,可以确保数据零丢失(只要客户端收到了事务提交成功的 ACK,这笔事务的WAL就有两份)。

4.级联流复制

2012年推出的PostgreSQL 9.2支持级联流复制,即备库还可以再连接备库。

级联流复制特别适合跨机房使用,例如主库在A机房,备库在B机房,当B机房需要建立多个备库时,其只需要建立一个直连主库的备库,其他备库可以通过 B 机房的备库级联产生,从而减少网络开销。

5.流式虚拟备库

PostgreSQL 9.2除了支持级联流复制,还支持虚拟备库。什么是虚拟备库呢?就是只有WAL,没有数据文件的备库。

通过虚拟备库,可以流式地接收WAL,进行实时的流式WAL归档,提高备份或归档的实时性。

6.逻辑复制的基础

2014年推出的PostgreSQL 9.4在WAL中增加了逻辑复制需要的基础信息,通过插件可以实现逻辑复制。

逻辑复制可以做到对主库的部分复制,例如表级复制,而不是整个集群的块级一致复制。

逻辑复制的备库不仅是只读的,而且可以执行写操作。

7.增加几种同步级别

2016年推出的PostgreSQL 9.6通过synchronous_commit参数,可以配置事务的同步级别。 zlhTPeJFoGI9BEO5EP8tJbFeFNptHeOFW7yZRo6oS8l7D6vbJCJO8PGRWUC+IIZX

点击中间区域
呼出菜单
上一章
目录
下一章
×