PostgreSQLLa base de données la plus sophistiquée au monde.

F.22. pg_archivecleanup

pg_archivecleanup est conçu pour être utilisé via le paramètre archive_cleanup_command pour nettoyer les archives des journaux de transactions lorsque le serveur est exécuté en tant que serveur en standby (voir Section 25.2, « Serveurs de Standby par transfert de journaux »). pg_archivecleanup peut aussi être utilisé comme un programme autonome pour nettoyer les archives de journaux de transactions.

Les fonctionnalités de pg_archivecleanup incluent :

  • Écrit en C, donc très portable et facile à installer

  • Code source facile à modifier, avec des sections spécialement conçues pour être modifier selon vos besoins

F.22.1. Utilisation

Pour configurer un serveur en attente de façon à ce qu'il utilise pg_archivecleanup, placez ce qui suit dans le fichier de configuration recovery.conf :

archive_cleanup_command = 'pg_archivecleanup RépArchive %r'
  

RépArchive est le répertoire à partir duquel les journaux de transactions doivent être supprimés.

S'il est utilisé via archive_cleanup_command, tous les fichiers des journaux de transactions qui précèdent la valeur de %r de façon logique seront supprimés de RépArchive. Ceci minimise le nombre de fichiers à conserver tout en préservant la capcité à redémarrer suite à un arrêt brutal. L'utilisation de ce paramètre est approprié si RépArchive est une aire de passage temporaire pour ce serveur en attente particulier, mais pas quand RépArchive a pour but d'être une archive à long terme des journaux de transactions ou quand plusieurs serveurs en standby utilisent le même emplacement pour les archives.

La syntaxe complète de la ligne de commande de pg_archivecleanup est la suivante :

pg_archivecleanup [ option ... ] RépArchive JournalRedémarrage
  

S'il est utilisé en tant que programme autonome, tous les fichiers de journaux de transactions avant le JournalRedémarrage seront supprimés de RépArchive. Dans ce mode, si vous indiquez un nom de fichier avec une extension .backup, alors seul le préfixe du fichier sera utilisé comme JournalRedémarrage. Ceci vous permet de supprimer tous les fichiers des journaux de transactions archivés avant une sauvegarde de base spécifique sans erreur. Par exemple, l'exemple suivant supprime tous les fichiers plus anciens que le fichier 000000010000003700000010 :

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup

pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
pg_archivecleanup:  removing file "archive/00000001000000370000000F"
pg_archivecleanup:  removing file "archive/00000001000000370000000E"
  

pg_archivecleanup suppose que RépArchive est un répertoire lisible et modifiable par l'utilisateur qui a lancé le serveur.

F.22.2. Options de pg_archivecleanup

pg_archivecleanup accepte les arguments suivants en ligne de commande :

-d

Affiche des informations de débogage sur stderr.

F.22.3. Exemples

Sur des systèmes Linux ou Unix, vous pouvez utiliser :

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
  

Dans ce cas, le répertoire des archives est situé physiquement sur le serveur en attente. archive_command y accède via un montage NFS mais les fichiers sont accessibles directement sur le serveur en attente. La commande va :

  • produire une sortie de débogage dans cleanup.log

  • supprimer les fichiers qui ne sont plus nécessaires à partir du répertoire d'archivage

F.22.4. Versions serveurs supportés

pg_archivecleanup est conçu pour fonctionner dès la version 8.0 de PostgreSQL™ ainsi que sur toutes les versions ultérieures quand il est utilisé de façon autonome. Il n'est utilisable comme commande de nettoyage des archives qu'à partir de la version 9.0 de PostgreSQL™.

F.22.5. Auteur

Simon Riggs