我们有延迟的副本(例如2小时(和普罗米修斯监控
Prometheus执行查询以获取复制滞后:
SELECT CASE WHEN NOT pg_is_in_recovery() THEN 0 ELSE GREATEST (0, EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp()))) END AS lag
在延迟的复制副本上,它是返回复制延迟,如7200(复制副本延迟2小时(
我想这样修改这个请求:
SELECT CASE WHEN NOT pg_is_in_recovery() THEN 0 ELSE GREATEST (0, EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp() - PG_GET_recovery_min_apply_delay()))) END AS lag
但我找不到如何通过SQL获得当前的recovery_min_apply_delay值
有人知道怎么得到它吗?
https://www.postgresql.org/docs/14/functions-admin.html
您想要current_setting
,它可以执行您期望的操作,但返回一个文本值(因为所有设置都可以表示为文本(