max_slot_wal_keep_size

一个 GUC 参数,用于限制复制槽使用的存储量

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

max_slot_wal_keep_sizePostgreSQL 13 中被添加。

默认值

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

应用更改

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

按 PostgreSQL 版本定义

max_slot_wal_keep_size (PostgreSQL 19)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
扩展描述 如果磁盘上 WAL 占用的空间达到此大小,复制槽将被标记为失败,并且段将被释放以供删除或回收。-1 表示无最大值。
上下文 sighup
变量类型 整数
来源 默认
最小值 -1
最大值 2147483647
枚举值  
启动值 -1
重置值 -1
源文件  
源行  
需要重启 false

文档max_slot_wal_keep_size

max_slot_wal_keep_size (PostgreSQL 18)

设置 -1
单位 MB
类别 复制/发送服务器
简短描述 设置复制槽可以保留的最大 WAL 大小。
扩展描述 如果磁盘上 WAL 占用的空间达到此大小,复制槽将被标记为失败,并且段将被释放以供删除或回收。-1 表示无最大值。
上下文 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

变更历史

Bug 修复

示例

如果 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_size, wal_keep_size

反馈

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