【问题标题】:Postgresql replication and replication slot blocking VACUUMPostgresql 复制和复制槽阻塞 VACUUM
【发布时间】:2019-01-23 22:57:00
【问题描述】:

我对 PostgresSQL 中的复制有疑问。我正在一张桌子上执行VACUUM,我得到了以下信息:

详细信息:3263410 死行版本尚无法删除,最早的 xmin:574

在这个网站上,第 2 点解释了我获得该信息的原因,但我不知道如何解决。

https://www.cybertec-postgresql.com/en/reasons-why-vacuum-wont-remove-dead-rows/

选择返回:

slot_name       slot_type     temporary  active   xmin   restart_lsn
it_rdbms02      physical         f         f        574     0/302B380   

我读到您可以使用函数pg_drop_replication_slot('name_slot') 删除插槽,但这会禁用我的复制?

回答:是的,将删除复制。

【问题讨论】:

    标签: postgresql database-replication


    【解决方案1】:

    我很高兴我的文章很有帮助。

    如果您的复制工作正常,则表明它没有使用复制槽。检查备用服务器上的recovery.conf 进行验证。

    复制槽标记了某个 WAL 位置,因此主服务器不会丢弃该位置之后的任何 WAL。原因是某人(例如复制备用服务器)仍需要该信息。

    在正常操作期间,使用复制槽的 WAL 消费者将定期提前它。但是如果没有人再使用它,它会阻止 WAL 回收和VACUUM,并且是一个主要问题。

    如果您的复制没有明确使用recovery.conf 中的复制槽,您可以安全地删除它。

    【讨论】:

    • 我没有任何 recovery.conf,当我遇到错误时,我会手动恢复节点。但仍然得到该行而不更新 xmin。有什么想法吗?
    • 如果没有recovery.conf,您将无法进行流式复制。否则,备用数据库如何知道主数据库在哪里?查看备用服务器
    猜你喜欢
    • 2020-07-25
    • 2021-12-26
    • 2012-12-24
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多