Documentation PostgreSQL 9.6.24 > Référence > Applications client de PostgreSQL > pg_receivexlog | |
pg_dump | pg_recvlogical |
pg_receivexlog — suit le flux des journaux de transactions d'un serveur PostgreSQL™
pg_receivexlog [option...]
pg_receivexlog est utilisé pour suivre le flux des journaux de transaction d'une instance de PostgreSQL™ en cours d'activité. Les journaux de transactions est suivi en utilisant le flux du protocole de réplication, et est écrit sous forme de fichier dans un répertoire local. Ce répertoire peut être utilisé comme emplacement des archives dans l'optique d'une restauration utilisant le mécanisme de sauvegarde à chaud et de récupération à un instant (PITR, voir Section 25.3, « Archivage continu et récupération d'un instantané (PITR) »).
pg_receivexlog suit le flux des journaux de transactions en temps réel car il est généré sur le serveur, et qu'il n'attend pas l'écriture d'un segment complet d'un journal de transactions comme archive_command le fait.
Contrairement au receveur de WAL d'un serveur PostgreSQL standby, pg_receivexlog place les données WAL sur disque par défaut uniquement quand un fichier WAL est fermé. L'option --synchronous doit être ajoutée pour que les données WAL soient écrites en temps réel. Comme pg_receivexlog n'applique pas les WAL, vous ne devez pas lui permettre de devenir un standby synchrone quand synchronous_commit vaut remote_apply. Dans le cas contraire, ce sera un standby qui ne réussit jamais à rattraper son retard et causera le blocage des validations des transactions. Pour éviter ceci, vous devez soit configurer une valeur appropriée pour synchronous_standby_names, soit spécifier une valeur pour le paramètre application_name pour pg_receivexlog qui ne correspond pas, soit modifier la valeur du paramètre synchronous_commit à quelque chose d'autres que remote_apply.
Le journal de transactions est envoyé via une connexion PostgreSQL™ traditionnelle, et utilise le protocole de réplication. La connexion doit être créée avec un compte superutilisateur ou utilisateur disposant des droits REPLICATION (voir Section 21.2, « Attributs des rôles ») et le fichier pg_hba.conf doit permettre la connexion de réplication. Le serveur doit aussi être configuré avec une valeur suffisamment haute pour le paramètre max_wal_senders pour laisser au moins une session disponible pour le flux.
Si la connexion est perdue ou si elle ne peux pas être établie initialement, via une erreur non fatale, pg_receivexlog essaiera à nouveau indéfiniment, et rétablira le flux dès que possible. Pour éviter ce comportement, utilisez le paramètre -n.
Répertoire dans lequel écrire le résultat.
Ce paramètre est obligatoire.
Ne renvoie pas une erreur quand --create-slot est indiqué et qu'un slot de même nom existe déjà.
N'effectue pas de nouvelle tentative en cas d'erreur à la connexion. À la place, le programme s'arrête en retournant une erreur.
Spécifie le rythme en secondes de l'envoi des paquets au serveur informant de l'état en cours. Ceci permet une supervision plus simple du progrès à partir du serveur. Une valeur de zéro désactive complètement la mise à jour périodique du statut, bien qu'une mise à jour sera toujours envoyée si elle est réclamée par le serveur pour éviter la déconnexion après un certain délai. La valeur par défaut est de 10 secondes.
Requiert l'utilisation d'un slot de réplication existant avec pg_receivexlog (voir Section 26.2.6, « Slots de réplication »). Quand cette option est utilisée, pg_receivexlog renverra une position de vidage au serveur, indiquant quand chaque segment a été synchronisé sur disque. Cela permet au serveur de supprimer ce segment s'il n'est pas utile ailleurs.
Quand le client de réplication de pg_receivexlog est configuré sur le serveur comme un standby synchrone, l'utilisation d'un slot de réplication renverra la position de vidage sur disque du serveur, mais seulement lors de la fermeture d'un fichier WAL. De ce fait, cette configuration entraînera que les transactions sur le primaire attendront un long moment, ce qui aura pour effet de ne pas fonctionner de manière satisfaisante. L'option --synchronous (voir ci- dessous) doit être ajoutée pour que cela fonctionne correctement.
Vide les données WAL sur disque dès leur réception. De plus, envoie un paquet de statut au serveur immédiatement après le vidage, quelque soit la configuration de l'option --status-interval.
Cette option doit être utilisée si le client de réplication de pg_receivexlog est configuré en tant que serveur standby synchrone pour s'assurer que le retour est renvoyé à temps au serveur principal.
Active le mode verbeux.
Les options en ligne de commande qui suivent permettent de paramètrer la connexion à la base de données.
Spécifie les paramètres utilisés pour se connecter au serveur, sous la forme d'une chaîne de connexion. Voir Section 32.1.1, « Chaînes de connexion » pour plus d'informations.
Cette option est nommée --dbname par cohérence avec les autres applications clients mais, comme pg_receivexlog ne se connecte à aucune base de données en particulier dans l'instance, le nom de la base dans la chaîne de connexion sera ignoré.
Spécifie le nom de l'hôte de la machine sur lequel le serveur s'exécute. Si la valeur commence par un slash, il est utilisé comme le répertoire de la socket du domaine Unix (IPC). La valeur par défaut est issue de la variable d'environnement PGHOST, si elle est définie, sinon une connexion à une socket du domaine Unix est tentée.
Spécifie le port TCP ou l'extension du fichier de la socket du domaine Unix sur lequel le serveur va écouter les connexions. La valeur par défaut est issue de la variable d'environnement PGPORT, si elle est définie, ou d'une valeur définie lors de la compilation.
L'utilisateur avec lequel se connecter.
Ne demande pas la saisie d'un mot de passe. Si le serveur nécessite un mot de passe d'authentification et qu'aucun mot de passe n'est disponible par d'autre biais comme le fichier .pgpass, la connexion tentée échouera. Cette option peut être utile dans des batchs où aucun utilisateur ne pourra entrer un mot de passe.
Oblige pg_receivexlog à demander un mot de passe avant de se connecter à la base.
Cette option n'est pas indispensable car pg_receivexlog demandera automatiquement un mot de passe si le serveur nécessite une authentification par mot de passe. Cependant, pg_receivexlog perdra une tentative de connexion avant de savoir si le serveur nécessite un mot de passe. Dans certain cas, il est possible d'ajouter l'option -W pour éviter une tentative de connexion superflue.
pg_receivexlog peut réaliser une des deux actions suivantes pour contrôler les slots de réplication physique :
Crée un slot de réplication physique avec le nom spécifié par l'option --slot, puis quitte.
Supprime le slot de réplication dont le nom est spécifié par l'option --slot, puis quitte.
D'autres options sont aussi disponibles :
Affiche la version de pg_receivexlog et termine le programme.
Affiche l'aide concernant les arguments en ligne de commande de pg_receivexlog, et termine le programme.
Cet utilitaire, comme la plupart des autres utilitaires PostgreSQL™, utilise les variables d'environnement supportées par libpq (voir Section 32.14, « Variables d'environnement »).
Lorsque vous utilisez pg_receivexlog à la place de archive_command comme méthode principale de sauvegarde des WAL, il est fortement recommandé d'utiliser les slots de réplication. Dans le cas contraire, le serveur est libre de recycler ou supprimer les fichiers des journaux de transactions avant qu'ils ne soient sauvegardés car il n'a aucune information, provenant soit de archive_command soit des slots de réplication, sur la quantité de WAL déjà archivée. Néanmoins, notez qu'un slot de réplication remplira l'espace disque du serveur si le receveur n'arrive pas à suivre le rythme de récupération des données WAL.