排查replication slot导致存储空间增长问题

数据库关系型数据库技术服务知识库
问题现象

数据量在没有发生变化的情况下,发现存储空间不断增长,我们该如何解决此类问题。

根因描述

Replication Slot 是 PostgreSQL 数据库中的一种机制,replication Slot 用于提高数据复制的效率和可靠性,避免 WAL 日志丢失或重复消费。 在常见的场景中,如果 PostgreSQL 中有处于非 active 的 slot,会导致WAL日志不断堆积,占用大量存储空间,甚至可能写满磁盘导致业务受损。 如果有其他的下游消费组件,未能及时提交 WAL LSN 信息,则也会导致 WAL 日志堆积,此时需要排查下游组件的问题。

解决方案
  1. 检查当前实例的 replication slot
select * from pg_replication_slots

输出的部分字段如下:

  • slot_name: replication slot 的名称。
  • plugin:插件名称,支持 wal2json,pgoutput 等。
  • slot_type:表明 slot 类型 为 physical 或 logical。
  • temporary:是否为临时 slot。仅在当前数据库会话期间存在,并在会话结束时自动删除
  • active:是否为 active 状态
  1. 删除 replication slot
SELECT pg_drop_replication_slot('slot_name');

注意事项

  • replication slot 状态为ACTIVE 时,不允许删除该 slot。
  • replication slot 状态为 INACTIVE 时,建议及时删除。
  • 删除 INACTIVE 状态的 replication slot 后,占用空间会被自动清理。
  • 业务中无法再使用已删除的 slot。
参考文档

[1] https://www.postgresql.org/docs/12/view-pg-replication-slots.html [2] https://www.postgresql.org/docs/9.4/functions-admin.html#FUNCTIONS-REPLICATION 如果您有其他问题,欢迎您联系火山引擎技术支持服务

95
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论