D'abord vérifie le disque I/O sur le replica. Si le disque est lent ou saturé, il ne pourra pas appliquer les WAL records assez vite. Regarde `iostat` ou `atop`. C'est une cause super fréquente.
Ensuite, regarde côté primary combien de `wal_senders` tu as et si `wal_level` est sur `replica` ou `logical`. Trop peu de `wal_senders` ou un niveau de WAL insuffisant peut limiter le débit.
SELECT usename, application_name, client_addr, state, sync_state, pg_wal_lsn_diff(pg_current_wal_lsn(), replay_lsn) AS lag_bytes FROM pg_stat_replication;
La bande passante réseau entre le primary et le replica est aussi un facteur. Si tu génères beaucoup de WAL et que le réseau est saturé, ça va lagger. Des fois, l'activité de vacuum ou d'index rebuild sur le primary peut aussi générer un pic de WAL.
C'était bien le disque I/O sur le replica. J'avais un vieux RAID qui commençait à mourir. Le `pg_stat_replication` a montré un `lag_bytes` énorme. J'ai migré sur un volume plus rapide et ça a rattrapé en moins d'une heure. Merci pour les conseils !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
ines-gillet
Membre depuis le 22/09/2024Ma réplication PostgreSQL est à la traîne. Le replica a des heures de retard sur le primary. Ça se dégrade de plus en plus. Que faire pour diagnostiquer et rattraper ce lag ?