max_slot_wal_keep_size

用于限制复制槽使用的存储量的配置参数

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 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" 的评论、建议或更正 此处