【问题标题】:PostgreSQL: How to find out the type of replica without master?PostgreSQL:如何找出没有主副本的副本类型?
【发布时间】:2020-02-13 08:32:34
【问题描述】:

我有 1 个正在运行 postgres 实例的副本主机。我需要了解这个副本是同步的还是异步的。有没有什么hack,不访问master怎么查?

【问题讨论】:

    标签: postgresql cluster-computing failover


    【解决方案1】:

    你不能,因为在待机端没有区别。

    唯一的区别是主服务器是否在COMMIT 期间等待备用服务器的反馈。

    您必须在主服务器上检查 synchronous_standby_names

    【讨论】:

      【解决方案2】:

      如果您使用的是同步复制,您将在 recovery.conf 中指定一个 application_name。但是,您可以在不使用同步复制的情况下设置 application name(即,synchronous_standby_names 从未在 master 的 conf 中设置),但这是您是否使用同步复制与异步复制的唯一提示。否则需要从master端检查。

      【讨论】:

      • 控制系统为任何实例设置application_name。通过同一个控制系统添加同步副本后,其application_name并没有添加到master上的synchronous_standby_names
      • 那么在这种情况下,您必须通过 master 确定同步使用情况
      【解决方案3】:

      您可以检查是否在 WAL 文件的提交记录中设置了 XACT_COMPLETION_APPLY_FEEDBACK。不过,我认为这只适用于“remote_apply”。此外,没有简单的方法来检查这一点。您将不得不手动解析一些 WAL 记录,或者将代码添加到 pg_waldump 以打印这些额外信息,或者可能将代码添加到 xact.c 中的 xact_redo_commit 以在它看到它时进行记录。我认为没有办法判断是否正在使用低于“remote_apply”的级别。

      【讨论】:

        猜你喜欢
        • 2021-04-20
        • 2017-02-01
        • 1970-01-01
        • 2017-01-24
        • 2021-06-20
        • 2021-03-31
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多