PG10.3, wal_keep_segments = 10,为什么从节点pg_wal目录下有时候会有40多个WAL文件?

在PG10.3的流复制中,配置wal_keep_segments为10时,从节点的pg_wal目录有时会有40多个WAL文件。这是因为从节点仅在做checkpoint时才删除或重用WAL文件。文章详细探讨了不同情况下从节点保留和重用WAL文件的逻辑,涉及max_wal_size和checkpoint机制。
摘要由CSDN通过智能技术生成

问题描述

PG10.3 配置主从同步流复制:1主+1从,主从节点的的参数wal_keep_segments = 10 。
主节点频频插入数据,在从节点的pg_wal目录下有时候会有40多个WAL文件。

背景

主节点做checkpoint时,会把checkpoint的信息也写到WAL日志中。其中的checkpoint.redo记录了当时的LSN,执行checkpoint操作的目的就是保证checkpoint.redo之前的数据改动都落盘。

从节点端读取WAL,做数据恢复时,会记录从WAL中读到的最近两次checkpoint:
– checkpoint_new表示最近的一次
– checkpoint_old表示比checkpoint_new更早的一次

从节点端在做恢复时,也会做checkpoint,内部叫做restartpoint, 即把数据落盘,但是不会在WAL中产生新的checkpoint记录。

从节点只有做checkpoint时才会删掉/重用已有的WAL文件,如果不做checkpoint,则WAL文件持续增加。

从节点做checkpoint时,保留多少个WAL文件呢?

包含很多情况,每一种情况下有不同的计算公式。 这里举例一种情况,该情况会保留很多的WAL文件。

处理逻辑举例:
wal_keep_segments = 10 #默认保留10个WAL文件。
max_wal_size = 1GB #转换到WAL文件数:1G/16M=64个WAL文件

checkpoint_old.redo表示主节点上次checkpoint

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值