暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

我们使用PostgreSQL的物理复制槽做什么?

背景

      不知道是否有人关注到下面这个错误日志,在一个异步流复制的环境中,我们在主库看到如下日志:
ERROR: requested WAL segment 00000001000000170000001C has already been removed
在从库看到如下错误日志:
FATAL: could not receive data from WAL stream:ERROR: requested WAL segment 00000001000000170000001C has already been removed
然后我们发现主从复制断开了。下面聊一下这个话题。

原因

      首先说明一下如果排除vacuum等因素,只有正常业务写入的情况下,这个现象正常只会出现在异步流复制的环境,而且只有在网络状况不佳(延迟较大或者有丢包)的情况下才会出现。
      笔者为了测试流复制的性能,特地对pg的异步流复制性能进行过压测,压测结果如下:pg默认安装不进行任何参数调整,主库能达到15万条/秒的插入速度,查询更是能达到惊人了90万条/秒,这个速度是很恐怖的,可以说远远高于其他几种数据库。在每秒14万条插入的时候日志产生量大概达到60M/s,即使在这么大的压力下,观察主从的lag,发现lag竟然十分稳定,一点没有增长。只有当加延迟才慢慢发现会有备库追不上主库的现象,这个延迟经过测试发现也是一个很大的值,生产环境一般不会出现如此大的延迟,所以pg的流复制性能是非常好的,只有在网络极端不好的情况下才会有lag追不上的情况。主库产生的日志备库来不及应用,而主库又有max_wal_size参数的限制,超过这个数量的日志就会被删除,所以lag越来越大的情况下备库需要的wal日志可能已经被主库删除了,造成主备断连。
      同步复制为什么不会出现追不上的情况呢?因为同步复制本身就是牺牲性能保证数据的一致性,换句话说就是我宁愿降低我主库的插入速度也要等备库同步完,这样lag其实就会保持一个稳定值,不会增长。

物理复制槽

      上面我们知道了主备断连的原因是因为主备lag持续增大造成备库需要的wal日志被主库清理,当然主库日志清理不止这一种情况,可能还会有vacuum等原因。那么我们可以通过物理复制槽来规避这个问题。下面看看如何使用物理复制槽。
在主库创建物理复制槽:
SELECT * FROM pg_create_physical_replication_slot('slot_s1');
备库使用该物理复制槽:
vi recovey.conf,新增如下配置:
primary_slot_name='slot_s1'
再次加延迟进行压测:
tc qdisc add dev bond0 root netem delay 1s
      我们观察主库的wal日志目录大小,发现目录已经超过1G,并且在持续增长,备库需要的日志在累积。
      但是复制槽的使用一定要注意风险,一定要做好redo日志个数或者大小的监控,方式主备同步异常造成主库日志堆积。

I Love PG

关于我们

中国开源软件推进联盟PostgreSQL分会(简称:中国PG分会)于2017年成立,由国内多家PostgreSQL生态企业所共同发起,业务上接受工信部中国电子信息产业发展研究院指导。中国PG分会是一个非盈利行业协会组织。我们致力于在中国构建PostgreSQL产业生态,推动PostgreSQL产学研用发展。



欢迎投稿

做你的舞台,show出自己的才华 。

投稿邮箱:partner@postgresqlchina.com

                               

                                 ——愿能安放你不羁的灵魂


技术文章精彩回顾




PostgreSQL学习的九层宝塔
PostgreSQL职业发展与学习攻略
搞懂PostgreSQL数据库透明数据加密之加密算法介绍
一文读懂PostgreSQL-12分区表
一文搞懂PostgreSQL物化视图
PostgreSQL源码学习之:RegularLock
Postgresql源码学习之词法和语法分析
2019,年度数据库舍 PostgreSQL 其谁?
Postgres是最好的开源软件
PostgreSQL是世界上最好的数据库
从Oracle迁移到PostgreSQL的十大理由
从“非主流”到“潮流”,开源早已值得拥有

PG活动精彩回顾




创建PG全球生态!PostgresConf.CN2019大会盛大召开
首站起航!2019“让PG‘象’前行”上海站成功举行
走进蓉城丨2019“让PG‘象’前行”成都站成功举行
中国PG象牙塔计划发布,首批合作高校授牌仪式在天津举行
群英论道聚北京,共话PostgreSQL
相聚巴厘岛| PG Conf.Asia 2019  DAY0、DAY1简报
相知巴厘岛| PG Conf.Asia 2019 DAY2简报
独家|硅谷Postgres大会简报
PostgreSQL线上沙龙第一期精彩回顾
PostgreSQL线上沙龙第二期精彩回顾
PostgreSQL线上沙龙第三期精彩回顾
PostgreSQL线上沙龙第四期精彩回顾
PostgreSQL线上沙龙第五期精彩回顾
PostgreSQL线上沙龙第六期精彩回顾

PG培训认证精彩回顾




中国首批PGCA认证考试圆满结束,203位考生成功获得认证!
中国第二批PGCA认证考试圆满结束,115位考生喜获认证!
重要通知:三方共建,中国PostgreSQL认证权威升级!
近500人参与!首次PGCE中级、第三批次PGCA初级认证考试落幕!
通知:PostgreSQL技术能力电子证书上线!
2020年首批 | 中国PostgreSQL初级认证考试圆满结束

最后修改时间:2020-05-30 08:53:58
文章转载自开源软件联盟PostgreSQL分会,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论