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
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'
où 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.
pg_archivecleanup accepte les arguments suivants en ligne de commande :
Affiche des informations de débogage sur stderr.
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
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™.
Simon Riggs <simon@2ndquadrant.com>