PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 11/05/2021 08:53:07

[Résolu] Archive_command failed

Bonjour,

J'ai un soucis sur un serveur principal qui a accumulé des wal dans pg_xlog. Le log de postgresql indique des erreurs rsync. A cours de disque, le service postgresql s'est éteint.
Pour débloquer la prod, des wal censés être traités (marqué .done dans archive_status/) ont été déplacés, ce qui a permis de remonter le service postgresql (et permettre des traitements de nuit).
La réplication est maintenant HS et les wal continuent à s'accumuler.
Je pense que ce problème est connu et trivial, mais je n'ai pas les compétences pour le gérer.

Le détail de l'environnement :
- 2 serveurs postgresql 9.6 répliqués par repmgr (streaming), base de 300 Go, la commande archive_command est un rsync sur un serveur de sauvegarde avec barman
- le serveur barman qui doit recevoir les wal du primaire
- la réplication est hs (pg_stat_replication ne donne rien), le slot est toujours présent
- les wal s'accumulent toujours

Comment puis-je nettoyer le pg_xlog et remonter la réplication ?
- est-ce que je dois supprimer le slot de réplication puis recréer la réplication ?

Eventuellement, notre équipe est prête à accepter une petite prestation pour nous aider (me contacter en privé).

Merci.

Dernière modification par stephane.lorek (13/05/2021 09:59:08)

Hors ligne

#2 11/05/2021 09:12:55

ruizsebastien
Membre

Re : [Résolu] Archive_command failed

Bonjour,

En tout premier lieu il nous faudrait les traces du serveur master en particulier les erreurs produites par archive_command (type FATAL).


Cordialement,

Sébastien.

Hors ligne

#3 11/05/2021 09:14:12

gleu
Administrateur

Re : [Résolu] Archive_command failed

Comme vu par mail un peu avant, et grâce aux logs que tu m'as envoyé, il n'y a aucune erreur sur l'archivage. Donc le problème vient plus probablement du slot de réplication qui aurait empêché la réutilisation des journaux de transactions.

Le plus simple serait donc de supprimer le slot de réplication puis, à condition qu'il y ait de l'espace libre maintenant dans pg_xlog, de redémarrer PostgreSQL. Une fois que le serveur primaire est rétabli, il te restera à reconstruire le secondaire.


Guillaume.

Hors ligne

#4 11/05/2021 09:52:53

Re : [Résolu] Archive_command failed

A priori, sur le secondaire, je n'ai pas de log postgresql à la date du 9 mai. Je pense que le serveur a du stopper et que cela a provoqué l'accumulation des wal.

J'ai déenregistré le secondaire avec repmgr et supprimé le slot et archive_command (avec pg_drop_replication_slot, je n'ai pas trouvé la commande qui le fait avec repmgr) a fait le ménage, l'espace est retrouvé.

il me reste à relancer la réplication.

Hors ligne

#5 11/05/2021 10:37:20

Re : [Résolu] Archive_command failed

Concernant barman, j'ai un soucis. Les opérations que je tente sur barman (backup, archive ...) me donne une erreur :
-bash-4.2$ barman backup xxxx-pgsql-vipw-01
EXCEPTION: [Errno 2] No such file or directory: '/var/run/barman/.xxxx-pgsql-vipw-01-backup.lock'

Les wal s'accumument dans mon répertoire incomming de sauvegarde.
Le problème est décalé sur barman et je suppose quand le disque sera plein sur le serveur barman, l'archive_comande ne fonctionera plus.
Je n'ai pas de /var/run/barman

Quelqu'un a une idée pour régler ce problème barman avant que je relance la réplication ?
Merci.

Hors ligne

#6 11/05/2021 10:40:59

gleu
Administrateur

Re : [Résolu] Archive_command failed

Perso, je créerais ce répertoire pour voir si ça dénoue la situation.


Guillaume.

Hors ligne

#7 11/05/2021 10:58:57

Re : [Résolu] Archive_command failed

C'est ce que j'ai fait et effectivement ça a débloqué la situation barman.
Je n'ai pas d'explication sur la perte de ce répertoire.

Je vais essayer de relancer la réplication avec repmgr.

Merci beaucoup de votre aide.

Hors ligne

#8 11/05/2021 15:33:52

dverite
Membre

Re : [Résolu] Archive_command failed

Ca dépend des distributions mais /var/run peut très bien être une partition en RAM disque.
Par exemple sur Ubuntu 18.04:

df -h /var/run
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
tmpfs              793M    1,8M  791M   1% /run

Donc il suffit d'un reboot pour perdre son contenu.

Les répertoires sont recréés par les scripts qui lancent les services (typiquement systemd), mais un dysfonctionnement de ces scripts suivi d'un lancement plus ou moins à la main peut arriver au résultat que le service tourne mais qu'un répertoire indispensable n'est pas là.

Hors ligne

#9 12/05/2021 08:53:29

Re : [Résolu] Archive_command failed

Merci de cette réponse. Je n'y avais pas songé.

Hors ligne

#10 12/05/2021 13:52:48

Re : [Résolu] Archive_command failed

Je suis en cours de remonter la réplication avec un script qui encapsule les étapes repmgr.
Dommage qu'il ne crée par le slot de réplication sur le master.

Je ferme ce sujet.

Hors ligne

Pied de page des forums