pg_archivecleanup — nettoie les archives des journaux de transactions PostgreSQL
pg_archivecleanup
[option
...] emplacementarchive
fichierwalaconserver
pg_archivecleanup est conçu pour être utilisé
avec le paramètre archive_cleanup_command
pour nettoyer
les archives de journaux de transactions quand un serveur standby est
utilisé (voir Section 26.2).
pg_archivecleanup peut aussi être utilisé en tant
que programme autonome pour nettoyer les archives des journaux de
transactions.
Pour configurer un serveur standby à utiliser
pg_archivecleanup, placez ceci dans le fichier
de configuration recovery.conf
:
archive_cleanup_command = 'pg_archivecleanup emplacementarchive
%r'
où emplacementarchive
est le répertoire où se
trouvent les fichiers à nettoyer.
Lorsqu'il est utilisé dans archive_cleanup_command, tous
les fichiers WAL précédant logiquement la valeur de l'argument
%r
seront supprimés de
emplacementarchive
. Ceci minimise le nombre de
fichiers à conserver tout en préservant la possibilité de redémarrer après
un crash. L'utilisation de ce paramètre est approprié si
emplacementarchive
est une aire temporaire pour
ce serveur standby particulier. Cela n'est pas le cas
quand emplacementarchive
est conçu comme une
aire d'archivage sur le long terme ou si plusieurs serveurs standby
récupèrent les journaux à partir de ce même emplacement.
Lorsqu'il est utilisé en tant que programme autonome, tous les fichiers WAL
qui précèdent logiquement fichierwalaconserver
seront supprimés de emplacementarchive
. Dans ce
mode, si vous donnez un nom de fichier .partial
ou
.backup
, alors seul le préfixe du fichier sera utilisé
comme fichierwalaconserver
. Ce traitement d'un
nom de fichier .backup
vous permet de supprimer tous
les fichiers WAL archivés avant une sauvegarde de base spécifique, sans
erreur. L'exemple suivant supprime tous les fichiers plus anciens que le
nom 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
emplacementarchive
est un répertoire accessible
en lecture et écriture par l'utilisateur qui exécute le serveur.
pg_archivecleanup accepte les arguments suivant en ligne de commande :
-d
Affiche plein de messages de debug sur stderr
.
-n
Affiche le nom des fichiers qui auraient été supprimés sur le sortie
standard (stdout
) (permet un test).
-V
--version
Affiche la version de pg_archivecleanup, puis quitte.
-x
extension
Fournit une
extension qui sera supprimé de tous les noms de fichiers avant de
décider s'ils doivent être supprimés. Ceci est utile pour nettoyer des
archives qui ont été compressés lors du stockage et, de ce fait, ont
une extension ajoutée par le programme de compression. Par exemple
-x .gz
.
-?
--help
Affiche l'aide sur les arguments en ligne de commande de pg_archivecleanup, puis quitte.
pg_archivecleanup est conçu pour fonctionner avec PostgreSQL 8.0 et les versions ultérieures lorsqu'il est utilisé comme outil autonome, ou avec PostgreSQL et ultérieures quand il est utilisé comme commande de nettoyage des archives.
pg_archivecleanup est écrit en C et dispose d'un code facile à modifier, avec des sections désignées de telle façon qu'elles puissent être modifiées pour vos propres besoins.
Sur des systèmes Linux ou Unix, vous pourriez utiliser :
archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
où le répertoire d'archivage est situé physiquement sur le serveur standby,
pour que le paramètre archive_command
y accède via NFS
mais que les fichiers soient locaux au standby.
Cette commande va :
produire une sortie de débuggage cleanup.log
supprimer les fichiers inutiles du répertoire d'archivage