11.4 备库的故障检测

流复制使用两种常见的故障检测过程,不需要任何特别的硬件。
  1. 备库服务器的失效检测 当检测到walsenderwalreceiver 之间的连接断开时,主库立即 判定备库或walreceiver 进程出现故障。当底层网络函数由于未能成功读写walreceiver 的套接字接口而返回错误时,主库也会立即判定其失效。
  2. 硬件与网络的失效检测 如果walreceiver 在参数wal_sender_timeout(默认为60秒)配置的时间段内没有返回任何结果,则主库会判定备库出现故障。相对于上面的故障而言,尽管从库可能因为一些失效原因(例如备库上的硬件失效,网络失效等),已经无法发送任何响应,但主库仍需要耗费特定的时间 —— 最大为wal_sender_timeout,来确认备库的死亡。

取决于失效的类型,一些失效可以在失效发生时被立即检测到,而有时候则可能在出现失效与检测到失效之间存在一段时间延迟。如果在同步从库上出现后一种失效,那么即使有多个潜在备库正常工作,直到检测到同步备库失效了,主库仍然可能会停止一段时间的事务处理。

在9.2或更早版本中,参数wal_sender_timeout被称为replication_timeout