Erreur en fin de sauvegarde avec Barman 2.1 (backup FAILED)

Les utilisateurs n'aiment pas perdre de données
Répondre
Phil
Administrateur du site
Messages : 170
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Erreur en fin de sauvegarde avec Barman 2.1 (backup FAILED)

Message par Phil » mar. 12 déc. 2017 15:36

Une erreur Barman m'a été soumise via une alerte Centreon :
Type de notification : PROBLEM
Service impacté : Postgres-Backup
Etat : CRITICAL
Hôte associé : Serveur Linux Debian xxxxxxxx (Sauvegarde Postgres pour Moteur de Chiffrement xxxxxxxx) [dmz]
Adresse : xxxxxxxx
Date/Heure : 11-12-2017 07:39:32
Information sur le contrôle : BARMAN CRITICAL - 1 server out of 2 have issues * xxxxxxxx FAILED: failed backups

Accès direct au service impacté : Centreon


La sauvegarde se termine par :
ERROR: Backup failed issuing start backup command.
DETAILS: Error issuing pgespresso_stop_backup() command: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
HINT: You might have to manually execute pgespresso_abort_backup() on your PostgreSQL server


Un barman diagnose indique également
"error": "failure issuing start backup command (Error issuing pgespresso_stop_backup() command: server closed the connection unexpectedly)",

Solution :

Le problème était dû à une perte de session. Barman ouvre une session sur le cluster, envoie quelques requêtes notamment un select version() puis la session reste idle jusqu’à la fin du backup. Si la session inactive se fait tuer pour une raison quelconque (généralement par un firewall, le paramétrage a-t-il changé ?) alors le backup échoue.
Le problème n’est pas vraiment dû à Barman mais 2ndQuadrant a néanmoins apporté une modification en 2.2 à ce sujet. Je vois dans le changelog un Reconnect to PostgreSQL if connection drops (SF#82).
Le serveur est en Debian Stretch qui embarque Barman 2.1. Si le repository pgdg n'est pas utilisé et en attendant Buster qui n’est pas pour demain, il suffit de paramétrer un keepalive au niveau OS ou au niveau du cluster ou au niveau de la base (ici postgres) ou de l'utilisateur postgresql dont se sert Barman.
Histoire de faire passer les sauvegardes, j'ai utilisé un

Code : Tout sélectionner

alter database postgres set tcp_keepalives_idle = 300
Les sauvegardes ont ensuite abouti.
Article connexe : https://pgphil.ovh/timeout_tcp_96_01.php
Cdlt. Phil - pgphil.ovh

Répondre