第十一章 PostgreSQL中的流复制

本文深入探讨了PostgreSQL的流复制特性,从启动复制、数据传输、管理多个备用服务器到故障检测。介绍了启动顺序,主备服务器间通信,以及同步备用服务器的管理和故障处理策略,强调了复制插槽在防止WAL数据丢失中的作用。
摘要由CSDN通过智能技术生成

搞了一个公众号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或任何应用程序的工作阶段的状态(

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值