我正在建立Postgres v14数据库。我有一个与max_wal_size
和wal_keep_size
参数相关的问题。
根据文件:
max_wal_size
⇒最大大小,以便在自动检查点期间使WAL增长。这是一个软限制;在特殊情况下,例如重负载、失败的max_wal_size
或高wal_keep_size
设置,WAL大小可以超过D5
。
wal_keep_size
⇒指定保存在pg_wal
目录中的过去日志文件段的最小大小,以防备用服务器需要获取它们以进行流复制。
如果wal_keep_size
的值大于max_wal_size
的值,并且备用服务器的复制速度比wal_keep_size
慢,那么会发生什么?在主目录上,wal_keep_size
值将保留在WAL目录中。但是由于WAL文件的大小超过了max_wal_size
,检查点会继续运行直到小于max_wal_size
的大小吗?
发布于 2022-09-23 05:33:38
就这些参数而言,待机侧的行为或滞后不影响主服务器的行为。如果备用设备落后于wal_keep_size
,那么它就死了,但是主要用户并不在意。
此外,检查点的持续时间并不影响删除多少WAL段。检查点将某个日志序列号(LSN)之前的所有数据修改刷新到磁盘。检查点可以由max_wal_size
触发,但它的持续时间并不直接取决于有多少WAL。
检查点和WAL大小之间有联系,但只有在检查点完成时才起作用。此时,PostgreSQL删除或回收不再需要的WAL段。回收的WAL片段的数量取决于考虑到最近编写的WAL的数量的启发式方法,唯一重要的关注是必须至少有WAL片段的min_wal_size
值才能供将来使用。max_wal_size
在这里根本不起作用。
max_wal_size
是最被误解的PostgreSQL参数之一。由于明显的原因,人们认为这是WAL的一种尺寸限制。在现实中,它只在检查站开始时管理。当然,WAL会在检查点的末尾被删除,所以会有到WAL大小的连接,但这有点巧合。
wal_keep_size
根本没有涉及到这一点。检查点不是由pg_wal
的大小触发的,而是由上一个检查点以来写入的WAL数量触发的。
https://dba.stackexchange.com/questions/317265
复制相似问题