Sur le serveur secondaire effectuer la commande suivante
:
postgres=# SELECT
status,
receive_start_lsn,
last_msg_receipt_time,
(now() - last_msg_receipt_time) AS time_since_last_msg
FROM pg_stat_wal_receiver;
Elle doit retourner une valeur de ce type (STREAMING)
:
status | receive_start_lsn | last_msg_receipt_time | time_since_last_msg
-----------+-------------------+-------------------------------+---------------------
streaming | 2/E5000000 | 2025-11-09 17:59:30.684582+01 | 00:00:00.079362
On peut voir que la réplication est fonctionnelle, on peut aussi vérifier le dernier état de synchro (toujours sur le secondaire) :
postgres=# SELECT pg_last_xact_replay_timestamp();
Qui doit retourner une valeur de ce type :
pg_last_xact_replay_timestamp
-------------------------------
2025-11-09 17:59:45.682362+01
Si la date indiquée n’est pas au plus proche de la date/heure du jour, il y a un problème.
La réplication est cassée, on doit la remontée
Exemple d’erreur montrant une réplication cassée :
#### Erreur dans les logs
2025-11-09 17:52:15.790 CET [1287782] FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 00000001000000010000000C has already been removed
2025-11-09 17:52:15.790 CET [524] LOG: waiting for WAL to become available at 1/C002000
#### Réplication n'est plus fonctionnelle dans PGSQL
postgres=# SELECT
status,
receive_start_lsn,
last_msg_receipt_time,
(now() - last_msg_receipt_time) AS time_since_last_msg
FROM pg_stat_wal_receiver;
status | receive_start_lsn | last_msg_receipt_time | time_since_last_msg
--------+-------------------+-----------------------+---------------------
(0 rows)
On stop PGSQL sur le secondaire :
systemctl stop postgresql@17-main
On supprime toutes les données sur le nœud secondaire :
sudo -u postgres rm -rf /var/lib/postgresql/17/main/*
On récupère un dump à jour depuis le master :
root@pgsql-02:~# sudo -u postgres pg_basebackup \
--host=192.168.5.241 \
--port=5432 \
--username=replication \
--password --progress \
--wal-method=stream \
--pgdata /var/lib/postgresql/17/main \
--write-recovery-conf
Password: ******
62705/62705 kB (100%), 1/1 tablespace
S’il n’y a pas eu d’eereur, on peut relancer PGSQL et vérifier la réplication :
systemctl start potgresql@17-main
Last modified: Sun Nov 9 18:18:11 2025