PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 11.22 » Administration du serveur » Configuration de la récupération » Paramètres de récupération de l'archive

27.1. Paramètres de récupération de l'archive

restore_command (chaîne de caractères)

La commande d'interpréteur à exécuter pour récupérer un segment de la série de fichiers WAL archivés. Ce paramètre est nécessaire pour la récupération à partir de l'archive, mais optionnel pour la réplication à flux continu. Tout %f dans la chaîne est remplacé par le nom du fichier à récupérer de l'archive, et tout %p est remplacé par le chemin de destination de la copie sur le serveur. (Le chemin est relatif au répertoire courant de travail, c'est à dire le répertoire de données de l'instance.) Tout %r est remplacé par le nom du fichier contenant le dernier point de reprise (restartpoint) valide. Autrement dit, le fichier le plus ancien qui doit être gardé pour permettre à la récupération d'être redémarrable. Cette information peut donc être utilisée pour tronquer l'archive au strict minimum nécessaire pour permettre de reprendre la restauration en cours. %r n'est typiquement utilisé que dans des configurations de warm-standby. (voir Section 26.2). Écrivez %% pour inclure un vrai caractère %.

Il est important que la commande ne retourne un code retour égal à zéro que si elle réussit. La commande recevra des demandes concernant des fichiers n'existant pas dans l'archive ; elle doit avoir un code retour différent de zéro dans ce cas. Par exemple :

restore_command = 'cp /mnt/server/archivedir/%f "%p"'
restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows
      

Seule exception, si la commande est terminée par un signal (autre que SIGTERM, qui est utilisé pour un arrêt du serveur) ou une erreur du shell (comme une commande introuvable), alors la restauration va s'annuler et le serveur ne redémarrera pas.

archive_cleanup_command (string)

Ce paramètre optionel spécifie une commande d'interpréteur qui sera exécuté à chaque point de reprise. Le but de archive_cleanup_command est de fournir un mécanisme de nettoyage des vieux fichiers WAL archivés qui ne sont plus nécessaires au serveur de standby. Tout %r est remplacé par le nom du fichier contenant le dernier point de reprise (restartpoint) valide. Autrement dit, le fichier le plus ancien qui doit être conservé pour permettre à la récupération d'être redémarrable. Du coup, tous les fichiers créés avant %r peuvent être supprimés sans problème. Cette information peut être utilisée pour tronquer les archives au minimum nécessaire pour redémarrer à partir de la restauration en Le module pg_archivecleanup est souvent utilisé dans archive_cleanup_command dans des configurations de standby seuls. Par exemple :

archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r' 

Notez néanmoins que si plusieurs serveurs en standby sont mis à jour à partir du même répertoire d'archives, vous devez vous assurer que vous ne supprimez que les journaux de transactions qui ne sont plus utiles à tous les serveurs. archive_cleanup_command n'est typiquement utilisé que dans des configurations de warm-standby (voir Section 26.2). Écrivez %% pour inclure un vrai caractère %.

Si la commande retourne un code de retour différent de zéro alors un message de journal WARNING sera écrit. Seule exception, une erreur de niveau FATAL est renvoyée si la commande a été terminée par un signal ou par une erreur du shell (comme une commande introuvable).

recovery_end_command (chaîne de caractéres)

Ce paramètre spécifie une commande d'interpréteur qui sera exécutée une fois seulement, à la fin de la récupération. Ce paramètre est optionnel. Le but de recovery_end_command est de fournir un mécanisme pour un nettoyage à la fin de la réplication ou de la récupération. Tout %r est remplacé par le nom du fichier contenant le dernier point de reprise valide, comme dans archive_cleanup_command.

Si la commande retourne un code de retour différent de zéro alors un message de journal WARNING sera écrit et la base continuera son démarrage malgré tout. Par contre, si la commande a été terminée par un signal ou une erreur provenant du shell (comme une commande introuvable), la base n'effectuera pas son démarrage.