RDS PostgreSQL支持通过控制台或API查看和删除Replication Slot,实现WAL日志管理。
背景
Replication Slot是PostgreSQL数据库中的一种机制,用于在流复制中保存状态。使用Replication Slot可以避免在流复制中出现数据丢失或重复复制的问题,提高数据复制的效率和可靠性。
当非活跃的Replication Slot较多而未及时清理时,会导致WAL日志不断堆积,占用大量存储空间,甚至可能写满磁盘导致实例锁定,实例锁定时无法写入数据,从而影响业务。
RDS PostgreSQL支持通过控制台或API来删除非活跃的Replication Slot,减少WAL日志对磁盘空间的占用。
注意事项
Replication Slot状态为ACTIVE时,不允许删除该条Slot。
Replication Slot状态为INACTIVE时,如果不及时处理,可能会导致WAL日志不断堆积,当WAL日志写满磁盘空间时,将会导致实例锁定,无法写入数据,从而影响业务。
影响
状态为INACTIVE的Replication Slot被删除后,将会造成以下影响:
实例先前因INACTIVE Slot堆积而无法清理的WAL日志将被自动清理。
业务中无法再使用已删除的Slot。
操作步骤
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击日志管理。
在WAL日志管理页签即可看到所有Replication Slot相关信息。
Replication Slot信息中各参数与PostgreSQL的
pg_replication_slots
表中各字段对应,对应关系及解释如下:WAL日志管理参数
pg_replication_slots表对应字段
说明
Slot名称
slot_name
Replication Slot的名称。
Slot类型
slot_type
Replication Slot的类型,Slot类型包括:
physical
logical
使用插件(plugin)
plugin
RDS PostgreSQL默认支持三种插件:
test_decoding
pgoutput
wal2json
临时Slot(temporary)
temporary
是否为临时Slot。临时Slot是一种特殊类型的Slot,它仅在当前数据库会话期间存在,并在会话结束时自动删除。
true:临时Slot
false:永久Slot
数据库名称
database
Replication Slot所处的数据库。
WAL堆积量
无对应字段。
该参数取值由RDS内核计算所得。
Replication Slot造成的WAL日志堆积量,单位为MB。
逻辑订阅延迟
无对应字段。
该参数取值由RDS内核计算所得。
当前Replication Slot对应订阅端的逻辑订阅的具体延迟,单位为秒(s)。
是否活跃
active
Replication Slot当前是否被使用。
INACTIVE:不活跃
ACTIVE:活跃
(可选)如果某个Replication Slot的是否活跃列为INACTIVE,则会造成WAL日志不断堆积,请及时处理,处理方法如下:
在业务中使用此Slot,使其状态变为ACTIVE。
如果此Slot是冗余的,请单击操作列的删除。
相关OpenAPI
查询实例所有Replication Slot相关信息:DescribeSlots
删除实例Replication Slot:DeleteSlot