max_slot_wal_keep_size

用于限制复制槽使用的存储量的 GUC

max_slot_wal_keep_size 是一个用于限制复制槽使用的存储量的配置参数

max_slot_wal_keep_sizePostgreSQL 13 中添加。

默认值

max_slot_wal_keep_size 的默认值为:-1(无限制)。

应用更改

可以通过 pg_reload_conf()pg_ctl reloadSIGHUP 应用对 max_slot_wal_keep_size 的更改。

按 PostgreSQL 版本定义

max_slot_wal_keep_size (PostgreSQL 18)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
额外描述 如果磁盘上的 WAL 占用这么多空间,则复制槽将被标记为失败,并且段将被释放以供删除或回收。
上下文 sighup
变量类型 整数
来源 默认
最小值 -1
最大值 2147483647
枚举值  
引导值 -1
重置值 -1
源文件  
源代码行  
挂起重启 false

文档max_slot_wal_keep_size

max_slot_wal_keep_size (PostgreSQL 17)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
额外描述 如果磁盘上的 WAL 占用这么多空间,则复制槽将被标记为失败,并且段将被释放以供删除或回收。
上下文 sighup
变量类型 整数
来源 默认
最小值 -1
最大值 2147483647
枚举值  
引导值 -1
重置值 -1
源文件  
源代码行  
挂起重启 false

文档max_slot_wal_keep_size

max_slot_wal_keep_size (PostgreSQL 16)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
额外描述 如果磁盘上的 WAL 占用这么多空间,则复制槽将被标记为失败,并且段将被释放以供删除或回收。
上下文 sighup
变量类型 整数
来源 默认
最小值 -1
最大值 2147483647
枚举值  
引导值 -1
重置值 -1
源文件  
源代码行  
挂起重启 false

文档max_slot_wal_keep_size

max_slot_wal_keep_size (PostgreSQL 15)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
额外描述 如果磁盘上的 WAL 占用这么多空间,则复制槽将被标记为失败,并且段将被释放以供删除或回收。
上下文 sighup
变量类型 整数
来源 默认
最小值 -1
最大值 2147483647
枚举值  
引导值 -1
重置值 -1
源文件  
源代码行  
挂起重启 false

文档max_slot_wal_keep_size

max_slot_wal_keep_size (PostgreSQL 14)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
额外描述 如果磁盘上的 WAL 占用这么多空间,则复制槽将被标记为失败,并且段将被释放以供删除或回收。
上下文 sighup
变量类型 整数
来源 默认
最小值 -1
最大值 2147483647
枚举值  
引导值 -1
重置值 -1
源文件  
源代码行  
挂起重启 false

文档max_slot_wal_keep_size

max_slot_wal_keep_size (PostgreSQL 13)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
额外描述 如果磁盘上的 WAL 占用这么多空间,则复制槽将被标记为失败,并且段将被释放以供删除或回收。
上下文 sighup
变量类型 整数
来源 默认
最小值 -1
最大值 2147483647
枚举值  
引导值 -1
重置值 -1
源文件  
源代码行  
挂起重启 false

文档max_slot_wal_keep_size

更改历史记录

错误修复

示例

如果将 max_slot_wal_keep_size 设置为正值,并且复制槽变为非活动状态,则 pg_replication_slots 中的 safe_wal_size 列将包含可以在写入WAL之前写入的字节数,然后槽将失效,即下游连接无法再使用它来检索所需的 WAL

postgres=# SELECT slot_name, slot_type, active, restart_lsn, wal_status, safe_wal_size
             FROM pg_replication_slots;
 slot_name | slot_type | active | restart_lsn | wal_status | safe_wal_size 
-----------+-----------+--------+-------------+------------+---------------
 node2     | physical  | f      | 0/301B830   | reserved   |      15057816
(1 row)

如果槽的 restart_lsn 与当前LSN之间的差值超过 max_slot_wal_keep_size 中设置的值,则复制槽将失效:wal_status 将设置为 unreserved,并且(从PostgreSQL 14 开始)safe_wal_size 将显示负值

postgres=# SELECT slot_name, slot_type, active, restart_lsn, wal_status, safe_wal_size
             FROM pg_replication_slots;
 slot_name | slot_type | active | restart_lsn | wal_status | safe_wal_size 
-----------+-----------+--------+-------------+------------+---------------
 node2     | physical  | f      | 0/301B830   | unreserved |     -80436096
(1 row)

在下一个检查点,将发出如下日志行

[2021-08-15 23:41:21 UTC]    LOG:  00000: checkpoint starting: immediate force wait
[2021-08-15 23:41:21 UTC]    LOG:  00000: invalidating slot "node2" because its restart_lsn 0/301B830 exceeds max_slot_wal_keep_size

之后 wal_status 将设置为 lostsafe_wal_size 将设置为 NULL

postgres=# SELECT slot_name, slot_type, active, restart_lsn, wal_status, safe_wal_size
             FROM pg_replication_slots;
 slot_name | slot_type | active | restart_lsn | wal_status | safe_wal_size 
-----------+-----------+--------+-------------+------------+---------------
 node2     | physical  | f      |             | lost       |              
(1 row)

分类

GUC 配置项管理/管理复制复制槽存储WAL

另请参阅

max_wal_sizewal_keep_size

反馈

提交任何关于“max_slot_wal_keep_size”的评论、建议或更正 此处