admin管理员组

文章数量:1532275

搞了一个公众号PostgreSQL运维技术,欢迎来踩~

悄悄放一张:

PostgreSQL运维技术 

原文:https://www.interdb.jp/pg/pgsql11.html

 

同步流复制的特性是从9.1版本开始实现的,这种本地复制特性是基于log shipping,这是一种通用的复制技术。其中主服务器持续地发送wal数据,然后备库在本地对接收到的wal数据进行重放。

这一章文字比较多,也是PG实现高可用(一主多从)的基石,很重要......

 

这章包括以下几个主题:

流复制如何启动

数据如何在主和备之间传输

主服务器如何管理多个备用服务器

主服务器如何检测备用服务器的故障

 

 

11.1. 启动流复制

 

在流复制中,有三种流程协同工作。主服务器上的walsender进程向备服务器发送WAL数据;然后,一个walreceiver和一个启动进程在备用服务器上接收并回放这些数据。walsender和walreceiver使用单个TCP连接进行通信。

在本节中,我们将探索流复制的启动顺序,以理解这些进程是如何启动的,以及如何建立它们之间的连接。流复制的启动顺序图如图11.1所示:

图11.1 流复制启动的时序图

图片来源:

https://www.interdb.jp/pg/pgsql11.html

 

(1)启动主备服务器。

(2)备用服务器启动startup 进程。

(3)备服务器启动walreceiver进程。

(4)walreceiver向主服务器发送连接请求。如果主服务器没有运行,walreceiver会定期发送这些请求。

(5)当主服务器接收到连接请求时,它启动walsender进程,并在walsender和walreceiver之间建立TCP连接。

(6) walreceiver发送standby数据库集群的最新LSN。一般来说,这个阶段在信息技术领域被称为握手。

(7)如果备节点的最新LSN小于主节点的最新LSN (standby's LSN < primary's LSN),则walsender将发送最新LSN的WAL数据给备库。这些WAL数据由存储在主节点pg_xlog子目录(version 10或更高版本为pg_wal子目录)中的WAL段提供。然后,备用服务器回放接收到的WAL数据。在这个阶段中,备用程序会追赶主程序,因此称为追赶。

(8)流式复制开始工作。

 

每个walsender进程保持一个已连接的walreceiver或任何应用程序的工作阶段的状态(

本文标签: 一章postgresql