PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment savoir si ma sauvegarde PostgreSQL est bonne ?

Les sauvegardes sont indispensables dans tout plan de reprise après sinistre. Cela peut ne pas toujours être suffisant pour garantir un objectif de point de récupération acceptable, mais c'est une bonne première approche. Le problème est que se passe-t-il si, en cas d'échec, vous devez utiliser cette sauvegarde et qu'elle n'est pas utilisable pour une raison quelconque ? Vous ne voulez probablement pas être dans cette situation, donc, dans ce blog, nous verrons comment confirmer si votre sauvegarde est bonne à utiliser.

Types de sauvegardes PostgreSQL

Commençons à parler des différents types de sauvegardes. Il existe différents types, mais en général, nous pouvons le séparer en deux catégories simples :

  • Logique  :La sauvegarde est stockée dans un format lisible par l'homme comme SQL.
  • Physique  :La sauvegarde contient des données binaires.

Pourquoi mentionnons-nous cela ? Parce que nous verrons qu'il y a des vérifications que nous pouvons faire pour un type et pas pour l'autre.

Vérification des journaux de sauvegarde

La première façon de confirmer si tout se passe bien est de vérifier les journaux de sauvegarde.

La commande la plus simple pour exécuter une sauvegarde PostgreSQL pourrait être par exemple :

$ pg_dumpall > /path/to/dump.sql

Mais, comment puis-je savoir s'il y a eu une erreur lors de l'exécution de la commande ? Vous pouvez simplement ajouter pour envoyer la sortie à un fichier journal spécifique :

$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Ainsi, vous pouvez ajouter cette ligne dans le cron du serveur pour l'exécuter tous les jours :

30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Et vous devriez surveiller le fichier journal pour rechercher les erreurs, par exemple, en l'ajoutant à un outil de surveillance comme Nagios.

La vérification des journaux ne suffit pas pour confirmer que la sauvegarde fonctionnera, car par exemple, si le fichier de sauvegarde est corrompu pour une raison quelconque, vous ne le verrez probablement pas dans le fichier journal.

Vérifier le contenu de la sauvegarde

Si vous utilisez des sauvegardes logiques, vous pouvez vérifier le contenu du fichier de sauvegarde pour confirmer que toutes les bases de données s'y trouvent.

Vous pouvez répertorier vos bases de données PostgreSQL actuelles en utilisant, par exemple, cette commande :

$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'

postgres

template1

world

Et vérifiez quelles bases de données vous avez dans le fichier de sauvegarde :

$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'

template1

postgres

world

Le problème avec cette vérification est que vous ne vérifiez pas la taille ou les données, il est donc possible que vous ayez une perte de données s'il y a eu une erreur lors de l'exécution de la sauvegarde.

Restauration pour vérifier la sauvegarde manuellement

Le moyen le plus sûr de vérifier si une sauvegarde fonctionne est de la restaurer et d'accéder à la base de données.

Une fois la sauvegarde terminée, vous pouvez la restaurer manuellement sur un autre hôte en copiant le fichier de vidage et en exécutant par exemple :

$ psql -f /path/to/dump.sql postgres

Ensuite, vous pouvez y accéder et consulter les bases de données :

$ psql

postgres=# \l

                                  List of databases

   Name    | Owner   | Encoding |   Collate | Ctype    | Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

 postgres  | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

 template0 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 template1 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 world     | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

(4 rows)

Le problème avec cette méthode est, bien sûr, que vous devez l'exécuter manuellement, ou trouver un moyen de l'automatiser, ce qui pourrait prendre du temps.

Vérification automatique de la sauvegarde ClusterControl

Voyons maintenant comment ClusterControl peut automatiser la vérification des sauvegardes PostgreSQL et éviter toute surprise ou tâche manuelle.

Dans ClusterControl, sélectionnez votre cluster et accédez à la section "Sauvegarde", puis sélectionnez "Créer une sauvegarde".

La fonction de vérification automatique de la sauvegarde est disponible pour les sauvegardes planifiées. Alors, choisissons l'option "Planifier la sauvegarde".

Lors de la planification d'une sauvegarde, en plus de sélectionner les options courantes telles que la méthode ou le stockage, vous devez également spécifier la planification/la fréquence.

À l'étape suivante, vous pouvez compresser et chiffrer votre sauvegarde et spécifier le durée de conservation. Ici, vous avez également la fonction "Vérifier la sauvegarde".

Pour utiliser cette fonctionnalité, vous avez besoin d'un hôte dédié (ou VM) qui ne fait pas partie du cluster.

ClusterControl installera le logiciel et restaurera la sauvegarde sur cet hôte . Après la restauration, vous pouvez voir l'icône de vérification dans la section ClusterControl Backup.

Conclusion

Comme nous l'avons mentionné, les sauvegardes sont obligatoires dans n'importe quel environnement, mais la sauvegarde n'est pas une sauvegarde si vous ne pouvez pas l'utiliser. Donc, vous devez vous assurer que votre sauvegarde est utile au cas où vous en auriez besoin un jour. Dans ce blog, nous avons montré différentes façons de vérifier votre sauvegarde pour éviter les problèmes lorsque vous souhaitez la restaurer.