PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 13.14 » Référence » Applications client de PostgreSQL » pg_verifybackup

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 transaction 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