On Wed, 2021-11-10 at 20:36 -0500, Rita wrote:
> On Wed, Nov 10, 2021 at 7:24 PM Ben Chobot <bench@silentmedia.com> wrote:
> >Rita wrote on 11/10/21 1:25 PM:
> > > Hello.
> > >
> > > I am testing alerting on my primary and standby setup. I have async
> > > replication working but I would like to temporarily pause it so the
> > > value of 'state' isn't streaming. (select * from pg_stat_replication).
> > >
> > > How can I do that?
> >
> > By reading the fine manual:
> > https://www.postgresql.org/docs/current/functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE
> >
> > The function you are looking for is pg_wal_replay_pause().
>
> Yes, I have read the manual and seen this. It pauses the replication (select pg_is_wal_replay_paused()).
> But on the primary, when I look at pg_stat_replication, it still says 'streaming' in the
> state column. My question was how do I get it from 'streaming' to anything else?
> (https://www.postgresql.org/docs/11/monitoring-stats.html#PG-STAT-REPLICATION-VIEW) ?
>
> I want to trigger an alert when 'streaming' isn't there. Or is there a better way to do it?
If the standby is no longer streaming, that certainly should trigger an alert.
But if you want to monitor replication delay, you should instead use a query like
SELECT pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn)
FROM pg_stat_replication;
That will measure the replay delay in bytes, and you can alert if the value exceeds a certain amount.
Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com