如果我不使用流式复制,如何监控 PostgreSQL WAL 传输?

gre*_*ons 7 postgresql replication log-shipping

我们有一个相当简单的设置来从我们的本地主 PostgreSQL 数据库复制到我们在 AWS 中的表示层。我们正在使用 WAL 运输archive_command设置。基本上设置如下所示:

    +-------------+
    |   Master    |
    +-------------+
     WAL  |     
segments  |              
         \|/                     +--------------+
    +-------------+   WAL      +-+------------+ |      
    |             |----------->| Hot Standby  | |
    |      S3     |  segments  |   Slaves     | |
    |             |            |              |-+
    +-------------+            +--------------+
Run Code Online (Sandbox Code Playgroud)

这种设置似乎通常相当健壮,但我还没有想出一种检测故障的好方法,无论是主站未能向上推档案,还是从站或从站未能检索日志文件。什么是确定从站相对于主站是否是最新的好方法?确定 master 是否未能发送 WAL 文件的好方法是什么?

澄清一下,我们严格将奴隶用作只读副本,我们永远不会故障转移到它们。

Pet*_*aut 5

这里有几个方法:

  • pg_current_xlog_location()在主服务器pg_last_xlog_replay_location()上与备用服务器上进行比较。这会给你以字节为单位的延迟,这对于警报可能不是很有用,但绘制它可能很有用。
  • pg_last_xact_replay_timestamp()根据当前时间监视备用数据库。
  • 在主节点上有一个 cron 作业定期修改一个值,然后检查到达备用节点需要多长时间。这基本上就是它在pg_last_xact_replay_timestamp()可用之前的做法。