web-dev-qa-db-fra.com

vérifier l'état de la réplication postgres

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.

7
Dino Daniel

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;
7
Reinsbrain

Afficher le statut de réplication dans PostgreSQL

sur le serveur

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)

sur le client

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)
3
truth

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;
1
Alex