PostgreSQL之wal_keep_segments参数

wal_keep_segments:用于指定pg_wal目录中保存的过去的wal文件(wal 段)的最小数量,以防备用服务器在进行流复制时需要。

(参数解释见:https://postgresqlco.nf/doc/zh/param/wal_keep_segments/)

每个wal文件通常为16兆字节。如果连接到发送服务器的备用服务器滞后超过wal_keep_segment个文件,发送服务器可能会删除备用服务器仍然需要的WAL段,在这种情况下流复制连接将被终止。因此,下游连接最终也会失败。(但是,如果使用了WAL归档,备用服务器可以通过从归档中获取段来恢复。)

 

前面说到,wal_keep_segments这只设置了pg_wal中保留的最小数目;  WHY?

因为系统可能需要为WAL归档或者checkpoint(wal_keep_size)保留更多的段。如果wal_keep_segments为0(默认值),系统不会备用服务器流复制保留任何额外的段,所以备用服务器可用的旧WAL段的数量取决于前一个检查点的位置和WAL归档状态。

注意:postgresql 13.0中,将wal_keep_segments重命名为wal_keep_size,让用户指定WAL大小,而不是WAL文件个数。在PG内核不断演进的过程中,PostgreSQL开发者在逐渐弱化wal段数量(wal文件个数)的概念,并强调wal的size,之前就有checkpoint_segments改变为max_wal_size的先例。

(https://github.com/postgres/postgres/commit/c3fe108c025e4a080315562d4c15ecbe3f00405e)

 

 

最近搞了一个公众号PostgreSQL运维技术,欢迎来踩~

悄悄放一张:

PostgreSQL之wal_keep_segments参数_第1张图片

PostgreSQL运维技术 

 

你可能感兴趣的:(postgresql)