You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Patroni永久逻辑复制槽未生效:默认生成物理复制槽问题

Patroni自动创建物理复制槽的原因及解决方案

原因分析

你看到的host_2、host_0这类物理复制槽,是Patroni在开启use_slots: true后自动生成的。这个参数的作用是让Patroni为集群中的每个物理从节点创建专属物理复制槽,防止主节点过早清理WAL日志,保障从节点能持续同步主库数据,避免因WAL被清理导致的同步中断。这类槽的命名规则默认是host_<实例索引>,对应集群内的各个从实例。

你的配置里同时定义了自定义逻辑复制槽db_slot,这部分和Patroni自动创建的物理槽是独立的——Patroni的slots配置段用于声明需要持久化保留的自定义复制槽(支持逻辑/物理类型),而use_slots是控制物理复制场景下的自动槽管理,两者功能不冲突,会同时存在。

解决方案

如果确实不需要这些自动创建的物理复制槽,可按以下步骤操作:

  1. 修改Patroni配置
    将配置中的use_slots: true改为use_slots: false,随后重启所有Patroni实例。这会让Patroni停止自动管理物理复制槽,后续不会再生成新的物理槽。

    注意:关闭use_slots后,Patroni不再通过物理复制槽保障WAL保留,需要依赖wal_keep_size参数控制主节点保留WAL的时长,确保从节点不会因WAL被清理而同步失败。如果你的集群没有物理从节点,这个风险可以忽略。

  2. 清理已存在的物理复制槽
    已创建的物理槽不会自动删除,需要手动在主节点执行SQL命令清理:

    SELECT pg_drop_replication_slot('host_2');
    SELECT pg_drop_replication_slot('host_0');
    

    执行前需确认这些槽没有被活跃的从节点连接使用(可通过pg_replication_slots中的active字段判断),如果槽处于活跃状态,需先停止对应的从节点Patroni服务,再删除槽。

内容的提问来源于stack exchange,提问作者EXK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:33:14