Quelqu'un peut-il suggérer les étapes pour vérifier l'état de réplication de pgsql et quand dire que la réplication ne se produit pas correctement?
Nous utilisons la réplication en streaming avec pgsql 9.0 et pgsql 9.4
Merci.
Sur votre maître, pg_stat_replication fournit des données sur la réplication en cours:
select client_addr, state, sent_location, write_location,
flush_location, replay_location from pg_stat_replication;
Sur postgresql v10:
select client_addr, state, sent_lsn, write_lsn,
flush_lsn, replay_lsn from pg_stat_replication;
Afficher le statut de réplication dans PostgreSQL
postgres=# select usename,application_name,client_addr,backend_start,state,sync_state from pg_stat_replication ;
usename | application_name | client_addr | backend_start | state | sync_state
------------+------------------+----------------+-------------------------------+-----------+------------
replicator | walreceiver | 192.168.10.132 | 2018-07-06 06:12:20.786918+03 | streaming | async
(1 row)
postgres=# select pg_is_in_recovery();
pg_is_in_recovery
-------------------
t
(1 row)
postgres=# select pg_last_xlog_receive_location();
pg_last_xlog_receive_location
-------------------------------
0/540C1DB8
postgres=# select pg_last_xlog_replay_location();
pg_last_xlog_replay_location
------------------------------
0/540C1DB8
(1 row)
postgres=# SELECT CASE WHEN pg_last_xlog_receive_location() = pg_last_xlog_replay_location()
THEN 0
ELSE EXTRACT (Epoch FROM now() - pg_last_xact_replay_timestamp())
END AS log_delay;
log_delay
-----------
0
(1 row)
J'utilise généralement les requêtes SQL suivantes pour vérifier l'état de Postgres v11.
Sur maître:
select * from pg_stat_replication;
Sur réplique (réplication en streaming dans mon cas):
select * from pg_stat_wal_receiver;