《postgresql指南--内幕探索》第十一章 流复制

同步流复制是是从9.1版本实现的,可以是一主多从的模式,在postgresql里主节点叫master,备节点叫standby。

主备是基于日志传送的技术实现同步,主节点持续发送wal数据,备节点重放接受到的wal数据。

主要介绍以下几个方面:

  • 流复制如何启动的
  • 主备之间如何传送数据
  • 主节点如何管理多个备节点
  • 主节点如何发现失败的备节点
开始流复制

在流复制中,三个进程协同工作,walsender在主节点发送wal数据到备节点,然后,备节点启动一个walreceiver和一个startup进程接受和重放数据,walsender和walreceiver通过一个TCP通讯协议建立连接。

这一章节,我们将探索流复制的start-up顺序,明白这些进程是如何启动,以及如何建立连接。
下图显示了流复制的启动及连接步骤:
在这里插入图片描述
1.启动主节点和备节点
2.备节点启动startup进程
3.备节点启动walreceiver进程
4.walreceiver发送一个连接请求到主节点,如果主节点没有运行,walreceiver会周期性的发送请求
5.当主节点接受到一个连接的请求,就会启动一个walsender进程建立连接
6.walreceiver发送备节点最后的LSN,这个阶段在IT领域叫握手机制
7.如果备机点的LSN小于主节点的LSN,walsender发送wal数据,即从节点的LSN到主节点LSN的wal数据,wal数据由存储在主节点的pg_xlog(10版本以后叫pg_wal)目录下的wal segment提供,这个阶段就是备节点追赶主节点的阶段
8.流复制开始工作

每一个walsender进程在和walreceiver建立连接工作都会有一个合适的状态,以下是可能的状态:
start-up:见上图5~6
catch-up:上图7
streaming:上图8
backup:因为备份发送整个数据库集群的文件,比如pg_basebackup工具

通过 pg_stat_replication视图可以查看:

testdb=# SELECT application_name,state FROM pg_stat_replication;
 application_name |   state
------------------+-----------
 standby1         | streaming
 standby2         | streaming
 pg_basebackup    | backup
(3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值