Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

PostgreSQL

Choisissez la catégorie, puis la rubrique :

pg_receivexlog

pg_receivexlog — suit le flux des journaux de transactions d'une instance de PostgreSQL

Synopsis

pg_receivexlog [option...]

Description

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 24.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.

Le journal de transactions est suivi 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 20.2, « Attributs des rôles ») et le fichier pg_hba.conf doit permettre explicitement 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.

Options

Les options en ligne de commande qui suivent permettent de définir l'emplacement et le format du résultat.

-D répertoire, --directory=répertoire

Répertoire dans lequel écrire le résultat.

Ce paramètre est obligatoire.

Les options en ligne de commande qui suivent permettent de contrôler l'exécution du programme.

-n, --no-loop

N'effectue pas de nouvelle tentative en cas d'erreur à la connexion. À la place, le programme s'arrête en retournant une erreur.

-v, --verbose

Active le mode verbeux.

Les options en ligne de commande qui suivent permettent de paramètrer la connexion à la base de données.

-d connstr, --dbname=connstr

Spécifie les paramètres utilisés pour se connecter au serveur, sous la forme d'une chaîne de connexion. Voir Section 31.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_basebackup 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é.

-h hôte, --host=hôte

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.

-p port, --port=port

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.

-s intervalle, --status-interval=intervalle

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.

-U nom-utilisateur, --username=nom-utilisateur

L'utilisateur avec lequel se connecter.

-w, --no-password

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.

-W, --password

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.

D'autres options sont aussi disponibles :

-V, --version

Affiche la version de pg_receivexlog et termine le programme.

-?, --help

Affiche l'aide concernant les arguments en ligne de commande de pg_receivexlog, et termine le programme.

Environnement

Cet utilitaire, comme la plupart des autres utilitaires PostgreSQL™, utilise les variables d'environnement supportées par libpq (voir Section 31.14, « Variables d'environnement »).

Notes

Lorsque vous utilisez pg_receivexlog à la place de archive_command, le serveur continuera à recycler les journaux de transactions même si les sauvegardes ne sont pas correctement archivées, tant qu'aucune commande n'échoue. Un contournement possible consiste à utiliser archive_command qui échoue lorsqu'un fichier n'a pas été correctement archivé, for example:

archive_command = 'sleep 5 && test -f /mnt/server/archivedir/%f'

Le délai initial est nécessaire car pg_receivexlog fonctionne en utilisant la réplication asynchrone et peut du coup accuser un léger retard.

Exemples

Pour suivre le flux des journaux de transactions du serveur mon-serveur-de-donnees et les stocker dans le répertoire local /usr/local/pgsql/archive :

$ pg_receivexlog -h mon-serveur-de-donnees -D /usr/local/pgsql/archive

Voir aussi

pg_basebackup(1)
Contacter le responsable de la rubrique PostgreSQL

Partenaire : Hébergement Web