pg_archivecleanup — nettoie les journaux de transactions (fichiers WAL) de PostgreSQL™
pg_archivecleanup [option...] archivelocation oldestkeptwalfile
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.
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.
S'il est utilisé en tant que programme autonome, tous les fichiers de journaux de transactions avant le oldestkeptwalfile 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 oldestkeptwalfile. 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.
Affiche sur la sortie standard (stdout) le nom des fichiers qui auraient été supprimés (il s'agit d'une exécution à blanc).
Affiche la version de pg_archivecleanup, puis quitte.
Lorsque le programme est utilisé de manière autonome, permet de spécifier un filtre d'extension qui sera utilisé pour déterminer les fichiers qui doivent être supprimés. Cette option est notamment utile pour nettoyer les archives qui ont été compressées durant le stockage, et qui se sont ainsi vu ajouter une extension par le programme de compression. Par exemple : -x .gz.
À noter que, le cas échéant, il n'est pas nécessaire de préciser l'extension du nom de fichier (.backup) passé en paramètre du programme.
Affiche l'aide sur les arguments en ligne de commande de pg_archivecleanup, puis quitte.
pg_archivecleanup a été conçu pour fonctionner à partir de PostgreSQL™ 8.0 en tant que programme autonome, et à partir de PostgreSQL™ 9.0 en tant que commande de nettoyage d'archive.
pg_archivecleanup est écrit en C et dont très portable et facile à modifier, avec des sections spécialement conçues pour être modifiées selon vos besoins.
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