我有 1 个运行 postgres 实例的副本主机。我需要了解此副本是同步的还是异步的。有没有黑客,我怎么能在没有主人的情况下找到?
你不能,因为备用端没有区别。
唯一的区别是主服务器是否在COMMIT
期间等待来自备用数据库的反馈。
您必须检查主要synchronous_standby_names
。
如果使用同步复制,则会在recovery.conf
中指定application_name
。但是,您可以在不使用同步复制的情况下设置application name
(即,synchronous_standby_names
从未在主复制中设置过(,但这是关于您是否使用同步复制与异步复制的唯一提示。否则,您需要从主端检查。
您可以查看是否在 WAL 文件的提交记录中设置了XACT_COMPLETION_APPLY_FEEDBACK。 不过,我认为这只适用于"remote_apply"。 此外,没有简单的方法来检查这一点。 您必须手动解析一些 WAL 记录,或将代码添加到 pg_waldump 以打印此额外信息,或者可能将代码添加到 xact.c 中的xact_redo_commit,以便在看到它时进行记录。 我认为没有办法判断是否使用了低于"remote_apply"的水平。