Closed pkarezin closed 2 years ago
Подтверждаю.
В режиме bootstrap в функции mamonsu.timestamp_get()
не учтен вариант запуска данной функции на master реплике.
Дело в том, что при вычислении выражения мы получаем LSN = NULL - это даёт ложь и вычисляется ELSE
Необходимо изменить функцию mamonsu/mamonsu/plugins/pgsql/driver/pool.py
:
"replication_lag_slave_query": (
"""
SELECT CASE WHEN coalesce(pg_last_{1}(), '0/00000000') = coalesce(pg_last_{2}(), '0/00000000')
THEN 0
ELSE extract (epoch FROM now() - coalesce(pg_last_xact_replay_timestamp(), now() - INTERVAL '{0} seconds'))
END;
""",
"""
SELECT mamonsu.timestamp_get();
"""
),
таким образом ->
"replication_lag_slave_query": (
"""
SELECT CASE WHEN not pg_is_in_recovery() or coalesce(pg_last_{1}(), '0/00000000') = coalesce(pg_last_{2}(), '0/00000000')
THEN 0
ELSE extract (epoch FROM now() - coalesce(pg_last_xact_replay_timestamp(), now() - INTERVAL '{0} seconds'))
END;
""",
"""
SELECT mamonsu.timestamp_get();
"""
),
Спасибо! Будем пробовать
Добрый день, столкнулись со следующей проблемой при использовании mamonsu 3.1.2 и PostgreSQL 9.6.
Если процесс postmaster будет завершен некорректно (kill -9), то после запуска сервера будет взведен триггер
PostgreSQL: streaming replication lag
, даже если это primary или standalone сервер.SELECT now() - pg_last_xact_replay_timestamp()
будет отображать время с момента запуска startup на сервере.