Vous n'êtes pas identifié(e).
Bonjour,
Nous disposons d'un système de réplication master/slave sur un environnement linux avec postgreSQL-9.4.
Nous voulons utiliser la base slave en tant que serveur de reporting. Il existe donc des requêtes SQL assez couteuses (ex durée d’exécution dans les 15mn) qui devraient être lancées sur ce slave. Cependant lorsqu'on lance ces requêtes longues, on obtient l'erreur suivant:
ERROR: canceling statement due to conflict with recovery
DETAIL: User query might have needed to see row versions that must be removed.
Nous avions déjà paramétré les deux paramètres "max_standby_archive_delay" et "max_standby_streaming_delay" à 1800 secondes afin de laisser plus de temps au slave à exécuter la requête, pourtant l'erreur subsiste toujours.
Est ce que vous pouvez expliquer à quoi est due ce message d'erreur exactement, et comment la résoudre ?
Merci d'avance.
Hors ligne
Bonjour,
L'erreur est dûe à un conflit entre le travail du vacuum sur le serveur primaire qui doit supprimer des lignes et votre requête sur le serveur secondaire qui doit les lire.
Vous pouvez configurer le paramètre hot_standby_feedback à on sur le serveur secondaire, cela devrait régler votre problème. Cela occasionnera par contre une fragmentation plus importante sur le serveur primaire.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour,
Merci pour cette solution, en effet celle - ci à résolu le problème.
Hors ligne