网易首页 > 网易号 > 正文 申请入驻

PostgreSQL技术大讲堂 - 第43讲:流复制原理

0
分享至



PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

第43讲:流复制原理

PostgreSQL第43讲:1月27日(周六)19:30直播

内容1:流式复制的启动方式

内容2:如何在主服务器和备用服务器之间传输数据

内容3:主服务器如何管理多个备用服务器

内容4:主服务器如何检测备用服务器的故障

流复制启动流程

开始流复制

1、主库启动walsender进程

2、备库启动startup与walreceiver进程

3、发出连接请求

4、握手成功

5、追赶没有同步的数据

6、开始正常流复制



如何开始流复制

开始流复制

walsender进程保持如下可能状态:

start-up –从启动walsender到握手结束。

catch-up – 在追赶阶段。

streaming –流媒体复制正在工作。

backup –为备份工具(如pg_basebackup utility)发送整个数据库集群的文件时。 pg_stat_replication视图显示所有正在运行的walsender的状态。示例如下:

testdb=# SELECT application_name,state FROM pg_stat_replication;

application_name | state

standby1 | streaming

standby2 | streaming

pg_basebackup | backup

预防归档日志缺失

预防归档日志缺失

如果备用服务器在长时间处于停止状态后重新启动,会发生什么情况?

在9.3或更早版本中,如果备用服务器所需的主服务器的WAL段已被回收,则备用服务器无法赶上主服务器。对于这个问题没有可靠的解决方案,只能对配置参数wal_keep_segments设置一个较大的值,以减少发生这种情况的可能性。这是权宜之计。

在9.4版或更高版本中,可以使用复制插槽来防止此问题。复制槽是一种扩展WAL数据发送灵活性的功能,主要用于逻辑复制,这也为解决这个问题提供了解决方案-包含pg_xlog(或pg_WAL,如果版本10或更高版本)下未发送数据的WAL段文件可以通过暂停回收过程而保留在复制槽中。

如何进行流式复制

如何进行流复制

流复制同步有两个方面:日志传送和数据库同步

日志传送是其中主要的同步方式,因为流复制是基于它的——主服务器在写入WAL数据时会将WAL数据发送到连接的备用服务器。

数据块传输是同步复制时需要用到的另外一种方式—主服务器与每个多个备用服务器通信以同步其数据库群集。

备库可配置只读访问/不可访问

假设备用服务器处于同步复制模式,hot standby配置为只读访问,配置如下:

synchronous_standby_names = 'standby1'

hot_standby = on

wal_level = archive

主备如何进行通讯

1、主库写WAL信息到WAL段文件。

2、主库进程将WAL数据发送给备库。

3、主库继续等待备库的ACK响应。

4、备库的将接收到的WAL数据写入备库的WAL缓冲区,并将ACK响应返回给主库。

5、备库将WAL数据写到WAL段,向主库返回另一个ACK响应。

6、备库重放已写入WAL段的WAL数据,向主库返回另一个ACK响应

7、主库在收到最后ACK响应时释放锁,然后提交完成。



备库ACK响应

每个ACK响应通知主服务器备用服务器的内部信息。它包含以下四项:

已写入wal缓存的最新WAL数据的LSN位置。

已刷新最新WAL数据的LSN位置。

启动过程重放最新WAL数据的LSN位置。

发送此响应的时间戳。查看备库写入、刷新、应用wal日志的状态

testdb=# SELECT application_name AS host, write_lsn AS write_LSN, flush_lsn AS flush_LSN, replay_lsn AS replay_LSN FROM pg_stat_replication;??

host | write_lsn | flush_lsn | replay_lsn

standby1 | 0/5000280 | 0/5000280 | 0/5000280

standby2 | 0/5000280 | 0/5000280 | 0/5000280

(2 rows)

心跳的间隔设置为参数wal_receiver_status_interval,默认为10秒。

复制故障排除

如何排除故障

同步备用服务器发生故障并且不再能够返回ACK响应,主服务器仍将继续永远等待响应。因此,无法提交正在运行的事务,也无法启动后续查询处理。

流式复制不支持通过超时自动还原到异步模式(降级)的功能。

两种解决办法:

使用多个备用服务器来提高系统可用性

通过手动执行从同步模式切换到异步模式

(1) 将参数synchronous_standby_names设置为空字符串。

(2) 使用reload选项执行pg_ctl命令。

postgres> pg_ctl -D $PGDATA reload

上述过程不影响连接的客户端。主服务器继续事务处理,同时保留客户端和相应后端进程之间的所有会话。

多备库优先级状态

多备库优先级状态

通过发出以下查询,可以显示备用服务器的优先级和状态:

testdb=# SELECT application_name AS host, sync_priority, sync_state FROM pg_stat_replication;

host | sync_priority | sync_state

standby1 | 1 | sync

standby2 | 2 | potential

Sync是所有工作备用服务器(异步服务器除外)中优先级最高的同步备用服务器的状态。

Potential是所有工作备用服务器(异步服务器除外)中优先级第二或更低的备用同步备用服务器的状态。如果处于同步(sync状态)的备库失败,它将替换为潜在待机中优先级最高的待机。

Async是异步备用服务器的状态,此状态是固定的。主服务器以与潜在备用服务器相同的方式处理异步备用服务器,只是它们的同步状态永远不是“sync”或“potential”。

管理多备库

主库与多备库通讯方式



备库优先级转换



管理多备库

备库故障检测

备库进程故障检测

当检测到walsender和walreceiver之间的连接断开时,主服务器立即确定备用服务器或walreceiver进程有故障。当底层网络函数由于未能写入或读取walreceiver的socket接口而返回错误时,主函数也会立即确定其故障。

备库硬件和网络的故障检测

如果walreceiver在为参数wal_sender_timeout(默认60秒)设置的时间内未返回任何内容,则主服务器将确定备用服务器存在故障。与上述故障相反,即使备用服务器无法再通过某些故障(例如,备用服务器的硬件故障、网络故障等)发送任何响应,也需要一定时间(最长为wal_sender_timeout 秒)来确认主服务器上的备用服务器已死亡。(在确定故障之前的这段时间主服务器停止所有事务处理。)

CUUG PostgreSQL技术大讲堂系列公开课第43讲-流复制原理,往期视频及文档,请联系CUUG。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
俞敏洪,踏足A股!

俞敏洪,踏足A股!

证券时报e公司
2024-05-01 08:41:34
我喜欢静静观察那群广东老头老太,在他们身上,我发现了这些

我喜欢静静观察那群广东老头老太,在他们身上,我发现了这些

爱下厨的阿酾
2024-05-01 07:05:33
为什么中国汽车车标都这么土?

为什么中国汽车车标都这么土?

户外小阿隋
2024-04-20 07:10:03
近期5位劣迹艺人复出失败!演出取消、评论区翻车,全部遭抵制

近期5位劣迹艺人复出失败!演出取消、评论区翻车,全部遭抵制

萌神木木
2024-04-28 20:31:07
《庆余年2》档期再提前,央视版本将是36集,古装王炸终于要来了

《庆余年2》档期再提前,央视版本将是36集,古装王炸终于要来了

星寒新影视
2024-04-30 21:17:51
业绩为王!2024年一季度“预增王”名单曝光,14股业绩增超10倍!

业绩为王!2024年一季度“预增王”名单曝光,14股业绩增超10倍!

风口招财猪
2024-05-01 08:58:55
江苏:男子相亲42岁小仙女,女子将肉全夹给小伙,满眼都是爱意

江苏:男子相亲42岁小仙女,女子将肉全夹给小伙,满眼都是爱意

佑宛故事汇
2024-04-30 11:55:36
️顶薪!Shams:湖人愿意给詹姆斯3年1.64亿续约合同

️顶薪!Shams:湖人愿意给詹姆斯3年1.64亿续约合同

直播吧
2024-04-30 13:54:17
亲哈学生难获黑命贵待遇,7成美国人支持以色列消灭哈马斯

亲哈学生难获黑命贵待遇,7成美国人支持以色列消灭哈马斯

移光幻影
2024-04-30 12:40:06
国军旅长陶峙岳,起义后提为军参谋长,但仍想要搞暴乱,终被处决

国军旅长陶峙岳,起义后提为军参谋长,但仍想要搞暴乱,终被处决

昕梦倾城
2024-04-30 11:31:19
原来许凯出道之前是淘宝店模特啊,那会就已经很帅气了!

原来许凯出道之前是淘宝店模特啊,那会就已经很帅气了!

阿芒娱乐说
2024-04-30 18:06:02
中方成为最大赢家!反华国成功倒入中方阵营,西方大怒:愚蠢至极

中方成为最大赢家!反华国成功倒入中方阵营,西方大怒:愚蠢至极

博文聊世界
2024-04-30 17:03:33
大连楼市片甲不回,大连楼市从17000元降至13000元,大连楼市分析

大连楼市片甲不回,大连楼市从17000元降至13000元,大连楼市分析

有事问彭叔
2024-04-30 15:43:41
“中国有望实现沙伊复交后又一突破”

“中国有望实现沙伊复交后又一突破”

观察者网
2024-04-30 22:00:18
美女“色虎”曾娴静:权色上位,包养多名情夫,真不是一般的“好色”

美女“色虎”曾娴静:权色上位,包养多名情夫,真不是一般的“好色”

天闻地知
2024-04-28 09:39:08
生肖兔老了,要主动和这2类人断交,断得越快,人生越好!

生肖兔老了,要主动和这2类人断交,断得越快,人生越好!

书中自有颜如玉
2024-05-01 06:58:49
要牢记的人性铁律1、女人的私密生活,生理需求往往都是口是心非

要牢记的人性铁律1、女人的私密生活,生理需求往往都是口是心非

户外阿崭
2024-04-30 07:30:17
奥尼尔谈MVP:投票人中应该有50个名人堂成员和50个前NBA球员

奥尼尔谈MVP:投票人中应该有50个名人堂成员和50个前NBA球员

直播吧
2024-05-01 13:31:13
中央最新定调,长三角一体化迎来新使命!(一)

中央最新定调,长三角一体化迎来新使命!(一)

前沿天地
2024-05-01 00:10:56
辽宁省抚矿集团原董事长李庆被公诉!

辽宁省抚矿集团原董事长李庆被公诉!

正义网
2024-04-30 16:21:50
2024-05-01 15:14:44
CUUG
CUUG
北京神脑资讯技术有限公司
462文章数 20关注度
往期回顾 全部

科技要闻

余承东卸任华为终端CEO 新任命为董事长

头条要闻

王毅和阿根廷外长会谈 阿方:奉行对华友好政策不改变

头条要闻

王毅和阿根廷外长会谈 阿方:奉行对华友好政策不改变

体育要闻

"意甲最佳"金玟哉 踢回了中超水平...

娱乐要闻

黄子韬被曝求婚徐艺洋 大量亲密照曝光

财经要闻

俞敏洪,踏足A股!

汽车要闻

预售2.89-3.49万 奔腾小马正式开启预售

态度原创

数码
本地
游戏
时尚
公开课

数码要闻

发烧友将QLC SSD转换为SLC 大幅提高了耐用性和性能

本地新闻

食味印象 | 潍坊:碳水脑袋的人间乐园

《剑星》暂无DLC/免费更新计划 Boss挑战模式开发中

中年女人就要这么打扮自己!初夏准备好这4件单品,更显年轻

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版