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 31/05/2016 16:22:42

mortimer.pw
Membre

Fichiers .backup

Bonjour,

Je travaille sur un moteur 9.5.3 sous Cent-OS 7.2.
J'ai mis en place un warm-standby (log_shipping+streaming replication).

Sur mon maître, j'ai un shell pour mon ARCHIVE_COMMAND qui fait un CP en local et un RSYNC vers mon esclave.

J'ai un shell pour faire une sauvegarde de base toutes les 12 heures :
          pg_basebackup -D ${BACKUP_DIR}/HOT_BACKUP -F t -R -x -z -c fast -l ${LABEL} -P -v -U replic
Cela génére un fichier .backup qui se "propage" dans mon répertoire d'archive local et dans celui de l'esclave.

Sur mon esclave, dans mon recovery.conf, j'ai indiqué :
          ARCHIVE_CLEANUP_COMMAND='pg_archivecleanup /home/postgres/PG_ARC %r'
Les WAL archivés devenus inutiles sont bien supprimés au fil de l'eau, mais pas les .backup

Est-ce normal ? à moi de gérer ?

Hors ligne

#2 31/05/2016 16:44:19

rjuju
Administrateur

Re : Fichiers .backup

Bonjour,

Si vous utilisez des WAL dans le cadre de la réplication et de la sauvegarde, il ne faut pas utiliser d'archive_cleanup_command. L'option -x dans votre appel à pg_basebackup ne récupère que les WAL nécessaire pour atteindre un point de cohérence, mais pas plus. Si vous demandez à votre standby de supprimer les WAL, en cas d'incident vous pourrez perdre jusqu'à 12 heures de données.

Hors ligne

#3 01/06/2016 07:57:13

mortimer.pw
Membre

Re : Fichiers .backup

Bonjour Julien,

Merci pour la réponse.

Pour confirmer, je viens de reconstruire mon esclave, avec la sauvegarde de minuit et :

          2016-06-01 07:29:40 CEST [17869]: [1-1] user=  2016-06-01 07:29:40 CEST LOG:  database system was interrupted; last known up at 2016-06-01 00:10:01 CEST
          2016-06-01 07:29:40 CEST [17869]: [2-1] user=  2016-06-01 07:29:40 CEST LOG:  entering standby mode
          cp: impossible d'évaluer « /home/postgres/PG_ARC_MASTER/000000010000000300000087 »: Aucun fichier ou dossier de ce type
          2016-06-01 07:29:40 CEST [17871]: [1-1] user=  2016-06-01 07:29:40 CEST LOG:  started streaming WAL from primary at 3/87000000 on timeline 1
          2016-06-01 07:29:40 CEST [17871]: [2-1] user=  2016-06-01 07:29:40 CEST FATAL:  could not receive data from WAL stream: ERROR:  requested WAL segment 000000010000000300000087 has already been removed
          cp: impossible d'évaluer « /home/postgres/PG_ARC_MASTER/000000010000000300000087 »: Aucun fichier ou dossier de ce type
          2016-06-01 07:29:40 CEST [17873]: [1-1] user=  2016-06-01 07:29:40 CEST LOG:  started streaming WAL from primary at 3/87000000 on timeline 1
          2016-06-01 07:29:40 CEST [17873]: [2-1] user=  2016-06-01 07:29:40 CEST FATAL:  could not receive data from WAL stream: ERROR:  requested WAL segment 000000010000000300000087 has already been removed

Je vais donc retirer la commande ARCHIVE_CLEANUP_COMMAND du recovery.conf.
J'ai déjà un shell sur le maître qui nettoie les WAL archivés de plus de 2 jours. Je vais donc rajouter le nettoyage des mêmes fichiers sur l'esclave.
Est-ce une bonne pratique ?

Dernière modification par mortimer.pw (01/06/2016 08:19:50)

Hors ligne

#4 01/06/2016 11:59:04

rjuju
Administrateur

Re : Fichiers .backup

La bonne pratique est effectivement de supprimer les fichiers archivés ainsi que les sauvegarde pg_basebackup en fonction de la rétention voulue.


Par contre, il n'y a pas de fichiers à supprimer sur le secondaire. Celui-ci va récupérer les WAL dont il a besoin et les purger comme le fait le primaire, sauf si votre restaure_command les copie en local avant de les restaurer ?

Hors ligne

#5 01/06/2016 12:29:19

mortimer.pw
Membre

Re : Fichiers .backup

Re,
Sur le Maître, j'ai :
          - les fichiers WAL "courants", dans /home/postgres/PG_XLOG,
          - les fichiers WAL archivés, dans /home/postgres/PG_ARC.
Sur l'Esclave, j'ai :
          - les fichiers WAL archivés du Maître, dans /home/postgres/PG_ARC
Ces fichiers archivés, le sont par ARCHIVE_COMMAND sur le maître (cp en local et rsync sur l'Esclave).

J'ai enlevé ARCHIVE_CLEANUP_COMMAND du recovery.conf sur l'Esclave.
Si l'Esclave a besoin de fichiers WAL, il va les copier de /home/postgres/PG_ARC vers /home/postgres/PG_XLOG grace à la RESTORE_COMMAND.
Sur l'esclave, les fichiers vont donc s'accumuler dans /home/postgres/PG_ARC. Il y a donc bien des fichiers à supprimer sur le secondaire ?

Hors ligne

#6 01/06/2016 13:12:06

rjuju
Administrateur

Re : Fichiers .backup

Au final vous archivez sur 2 serveurs (copie locale + rsync, comme indiqué dans le premier message désolé j'avais raté cette information), donc oui il faut bien supprimer ces fichiers (et ceux là uniquement) sur les deux serveurs.

Hors ligne

#7 01/06/2016 15:25:50

mortimer.pw
Membre

Re : Fichiers .backup

Super, merci Julien.

Hors ligne

Pied de page des forums