Documentation PostgreSQL 14.22 » Référence » Applications client de PostgreSQL » pg_verifybackup

Précédent | Niveau supérieur | Suivant
pg_restore | Sommaire | psql

## pg_verifybackup

pg_verifybackup — Vérifie l'intégrité d'une sauvegarde de base d'une instance PostgreSQL

## Synopsis

`pg_verifybackup` [`option`...]

## Description

pg_verifybackup est utilisé pour contrôler l'intégrité d'une sauvegarde d'une instance effectuée avec `pg_basebackup`, grâce au manifeste de sauvegarde (`backup_manifest`) généré par le serveur au moment de la sauvegarde de base. La sauvegarde doit être stockée au format « plain » : un format « tar :» peut être vérifié après son extraction.

Notez que la validation effectuée par pg_verifybackup n'effectue pas toutes les vérifications effectuées par un serveur qui cherche à utiliser cette sauvegarde, et ne pourrait pas le faire. Même si vous utilisez cet outil, vous devez toujours procéder à des tests de restauration, vérifier que les bases de données résultantes fonctionnent comme prévu, et semblent contenir les bonnes données. Cependant, pg_verifybackup peut détecter de nombreux problèmes courants, dus au stockage ou une erreur de l'utilisateur.

La vérification de sauvegarde s'effectue en quatre étapes. Premièrement, `pg_verifybackup` lit le fichier `backup_manifest`. S'il n'existe pas, ne peut être lu, est malformé, ou échoue au contrôle face à sa propre somme de contrôle interne, `pg_verifybackup` se termine avec une erreur fatale.

Deuxièmement, `pg_verifybackup` tentera de vérifier que les fichiers de données en place sur le disque à ce moment sont exactement les mêmes que les fichiers que le serveur voulait envoyer, à quelques exceptions près listées plus bas. Les fichiers en trop ou manquants seront détectés, avec quelques exceptions. Cette étape ignore la présence ou la modification de `postgresql.auto.conf`, `standby.signal`, et `recovery.signal`, car il est prévisible que la procédure de sauvegarde les crée ou les modifie. Il n'y aura pas non plus de plainte à propos d'un fichier `backup_manifest` dans le répertoire cible, ou quoi que ce soit dans `pg_wal`, bien que ces fichiers ne soient pas listés dans le manifeste de sauvegarde. Seuls les fichiers sont contrôlés ; la présence ou l'absence des répertoires n'est pas vérifiée, ou indirectement : si un répertoire manque, tout fichier qu'il aurait dû contenir sera forcément porté manquant.

Ensuite, `pg_verifybackup` calcule les sommes de contrôle de tous les fichiers, les compare aux valeurs du manifeste, et émet des erreurs pour tous les fichiers où la somme de contrôle calculée ne correspond pas à celle du manifeste. Cette étape n'est pas effectuée pour les fichiers qui ont produit des erreurs à l'étape précédente, puisqu'il est déjà connu qu'ils sont problématiques. Les fichiers ignorés à l'étape précédente sont aussi ignorés à celle-ci.

Enfin, `pg_verifybackup` va utiliser le manifeste pour vérifier que les enregistrements des journaux de transaction nécessaires à la restauration de la sauvegarde sont présents, et peuvent être lus et analysés. Le `backup_manifest` contient des informations sur les enregistrements nécessaires des journaux. `pg_verifybackup` les utilise pour invoquer `pg_waldump` et analyser les journaux. L'option `--quiet` peut être utilisée pour que `pg_waldump` ne renvoie que les erreurs, sans générer d'autre sortie. Bien qu'à ce niveau les vérifications soient suffisantes pour détecter les problèmes évidents, comme des fichiers manquants ou une somme de contrôle incohérente, elles ne sont pas assez complètes pour détecter tous les problèmes possibles pouvant arriver lors d'une tentative de restauration. Par exemple, un bug du serveur générant des journaux de transaction avec les bonnes sommes de contrôle, mais spécifiant des opérations absurdes, ne peut être détecté par cette méthode.

Notez que s'il y a des fichiers WAL en plus, non nécessaires pour restaurer la sauvegarde, ils ne seront pas vérifiés par cet outil, bien qu'un appel séparé à `pg_waldump` permet de le faire. Notez aussi que la vérification des journaux est spécifique à chaque version : vous devez utiliser la version de `pg_verifybackup`, et donc de `pg_waldump`, qui correspond à la sauvegarde à vérifier. En revanche, les tests d'intégrité des fichiers devraient fonctionner avec toutes les versions du serveur qui génèrent un fichier `backup_manifest`.

## Options

pg_verifybackup accepte les arguments suivants en ligne de commande :

`-e`
`--exit-on-error`

  Sort dès qu'un problème avec la sauvegarde est détecté. Si cette option n'est pas spécifiée, `pg_verifybackup` va continuer à vérifier la sauvegarde après la détection d'un problème, et rapportera tous les problèmes en tant qu'erreurs.

`-i `path``
`--ignore=`path``

  Ignore le fichier ou répertoire spécifié (à exprimer avec un chemin relatif), lors de la comparaison des fichiers effectivement dans la sauvegarde avec ceux listés dans le fichier `backup_manifest`. Si un répertoire est spécifié, cette option affecte toute l'arborescence en-dessous. Les plaintes sur des fichiers excédentaires ou manquants, des différences de taille, ou des incohérences de sommes de contrôle, seront supprimées si le chemin relatif correspond à celui spécifié. Cette option peut être répétée plusieurs fois.

`-m `path``
`--manifest-path=`path``

  Utiliser le fichier manifeste au chemin spécifié, plutôt que celui à la racine du répertoire de sauvegarde.

`-n`
`--no-parse-wal`

  N'essaie pas d'analyser les journaux de transactions nécessaires à la restauration de la sauvegarde.

`-q`
`--quiet`

  N'affiche rien si la sauvegarde est vérifiée avec succès.

`-s`
`--skip-checksums`

  Ne vérifie pas les sommes de contrôle. La présence ou l'absence des fichiers et leur taille sera toujours contrôlée. C'est beaucoup plus rapide, car il n'y a pas besoin de lire les fichiers eux-mêmes.

`-w `path``
`--wal-directory=`path``

  Essaie d'analyser les fichiers WAL stockés dans le répertoire indiqué, plutôt que ceux dans `pg_wal`. Ce peut être utile si la sauvegarde est stockée dans un emplacement différent des archives des journaux.

D'autres options sont disponibles :

`-V`
`--version`

  Affiche la version de pg_verifybackup et sort.

`-?`
`--help`

  Affiche l'aide sur les arguments en ligne de commande de pg_verifybackup, puis sort.

## Exemples

Pour créer une sauvegarde de base du serveur sur `mydbserver`, et vérifier son intégrité :

    $ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
    $ pg_verifybackup /usr/local/pgsql/data

Pour créer une sauvegarde de base du serveur sur `mydbserver`, déplacer le manifeste hors du répertoire de la sauvegarde, et vérifier l'intégrité de la sauvegarde :

    $ pg_basebackup -h mydbserver -D /usr/local/pgsql/backup1234
    $ mv /usr/local/pgsql/backup1234/backup_manifest /my/secure/location/backup_manifest.1234
    $ pg_verifybackup -m /my/secure/location/backup_manifest.1234 /usr/local/pgsql/backup1234

Pour vérifier une sauvegarde, tout en ignorant un fichier ajouté manuellement au répertoire de sauvegarde, et aussi sauter la vérification des sommes de contrôle :

    $ pg_basebackup -h mydbserver -D /usr/local/pgsql/data
    $ edit /usr/local/pgsql/data/note.to.self
    $ pg_verifybackup --ignore=note.to.self --skip-checksums /usr/local/pgsql/data

## Voir aussi

pg_basebackup