Hallo!
Wir suchen gerade nach einem Weg unsere zwei Knoten Replikation zu überwachen, bis jetzt schauen wir dafür alle 3 sec in die pg_stat_replication und überprüfen, ob sie gefüllt ist. Wir hatten allerdings überlegt einen Trigger auf pg_stat_replication zu legen um die Info zu bekommen wenn sie leer ist.
Bis jetzt konnten wir noch keine Benachrichtigung erzeugen. Wir hatten schon gelesen, dass es eventuell daran liegen kann, dass es sich um eine VIEW handelt und wollten deshalb nachfragen, ob ihr euch auch schon daran versucht habt oder das ganze überhaupt keinen Sinn macht?
Danke für eure Hilfe
LISTEN datachange;
CREATE FUNCTION dataChange()
RETURNS trigger
LANGUAGE ‘plpgsql’
AS $BODY$
DECLARE
data text;
notification text;
BEGIN
– if we delete, then pass the old data
– if we insert or update, pass the new data
IF (TG_OP = ‘DELETE’) THEN
data = row_to_json(OLD);
ELSE
data = row_to_json(NEW);
END IF;
notification = json_build_object(
‘table’,TG_TABLE_NAME,
‘action’, TG_OP, – can have value of INSERT, UPDATE, DELETE
‘data’, data);
RAISE NOTICE ‘%’, notification;
PERFORM pg_notify(‘datachange’, notification);
RETURN NEW;
END
$BODY$;
CREATE TRIGGER mytrigger2
INSTEAD OF INSERT OR DELETE ON pg_stat_replication
FOR EACH ROW
EXECUTE PROCEDURE dataChange();