L'information est l'un des actifs les plus précieux d'une entreprise, et il va sans dire qu'il faut avoir un plan de reprise après sinistre (DRP) pour éviter la perte de données en cas d'accident ou de panne matérielle. Une sauvegarde est la forme la plus simple de DR. Cela peut ne pas toujours être suffisant pour garantir un objectif de point de récupération (RPO) acceptable, mais c'est une bonne première approche.
Qu'il s'agisse d'un serveur très chargé 24h/24 et 7j/7 ou d'un environnement à faible volume de transactions, vous devrez faire des sauvegardes une procédure transparente sans perturber les performances du serveur dans un environnement de production.
Si nous parlons de TimescaleDB, il existe différents types de sauvegarde pour ce nouveau moteur de données de séries chronologiques. Le type de sauvegarde que nous devons utiliser dépend de nombreux facteurs, tels que l'environnement, l'infrastructure, la charge, etc.
Dans ce blog, nous verrons ces différents types de sauvegardes disponibles et comment ClusterControl peut nous aider à centraliser notre gestion des sauvegardes pour TimescaleDB.
Types de sauvegarde
Il existe différents types de sauvegardes pour les bases de données. Examinons chacun d'eux en détail.
- Logique :la sauvegarde est stockée dans un format lisible par l'homme comme SQL.
- Physique :la sauvegarde contient des données binaires.
- Complète/Incrémentale/Différentielle :la définition de ces trois types de sauvegardes est implicite dans le nom. La sauvegarde complète est une copie complète de toutes vos données. La sauvegarde incrémentielle ne sauvegarde que les données modifiées depuis la sauvegarde précédente et la sauvegarde différentielle ne contient que les données modifiées depuis la dernière sauvegarde complète exécutée. Les sauvegardes incrémentielles et différentielles ont été introduites pour réduire le temps et l'utilisation de l'espace disque nécessaires pour effectuer une sauvegarde complète.
- Compatible avec la récupération ponctuelle :PITR implique la restauration de la base de données à tout moment dans le passé. Pour pouvoir le faire, nous devrons restaurer une sauvegarde complète, puis appliquer toutes les modifications qui se sont produites après la sauvegarde jusqu'à juste avant l'échec.
Fonctionnalité de gestion de sauvegarde ClusterControl
Voyons comment ClusterControl peut nous aider à gérer différents types de sauvegardes.
Création d'une sauvegarde
Pour cette tâche, accédez à ClusterControl -> Sélectionner le cluster TimescaleDB -> Sauvegarde -> Créer une sauvegarde .
Nous pouvons créer une nouvelle sauvegarde ou en configurer une planifiée. Pour notre exemple, nous allons créer une seule sauvegarde instantanément.
Ici, nous avons une méthode pour chaque type de sauvegarde que nous avons mentionné précédemment.
Type de sauvegarde | Outil | Définition |
---|---|---|
Logique | pg_dumpall | C'est un utilitaire pour écrire toutes les bases de données TimescaleDB d'un cluster dans un seul fichier de script. Le fichier de script contient des commandes SQL qui peuvent être utilisées pour restaurer les bases de données. |
Physique | pg_basebackup | Il est utilisé pour faire une copie binaire des fichiers du cluster de base de données, tout en s'assurant que le système est automatiquement mis en et hors mode de sauvegarde. Les sauvegardes sont toujours effectuées sur l'ensemble du cluster de bases de données d'un cluster de bases de données TimescaleDB en cours d'exécution. Celles-ci sont prises sans affecter les autres clients de la base de données. |
Complet/Augmenter/Diff | pgbackrest | Il s'agit d'une solution de sauvegarde et de restauration simple et fiable qui peut évoluer en toute transparence jusqu'aux bases de données et charges de travail les plus volumineuses en utilisant des algorithmes optimisés pour les exigences spécifiques aux bases de données. L'une des fonctionnalités les plus importantes est la prise en charge des sauvegardes complètes, incrémentielles et différentielles. |
PITR | pg_basebackup+WAL | Pour créer une sauvegarde compatible PITR, ClusterControl utilisera pg_basebackup et les fichiers WAL, pour pouvoir restaurer la base de données à tout moment dans le passé. |
Nous devons choisir une méthode, le serveur à partir duquel la sauvegarde sera prise et où nous voulons stocker la sauvegarde. Nous pouvons également télécharger notre sauvegarde sur le cloud (AWS, Google ou Azure) en activant le bouton correspondant.
Gardez à l'esprit que si vous souhaitez créer une sauvegarde compatible avec PITR, nous devons utiliser pg_basebackup dans cette étape et nous devons prendre la sauvegarde du nœud maître.
Ensuite, nous spécifions l'utilisation de la compression, du cryptage et de la conservation de notre sauvegarde.
Dans la section de sauvegarde, nous pouvons voir la progression de la sauvegarde et des informations telles que la méthode, la taille, l'emplacement, etc.
Activation de la récupération ponctuelle
Si nous voulons utiliser la fonctionnalité PITR, nous devons activer l'archivage WAL. Pour cela, nous pouvons aller dans ClusterControl -> Select TimescaleDB Cluster -> Node actions -> Enable WAL Archiving , ou allez simplement dans ClusterControl -> Select TimescaleDB Cluster -> Backup -> Settings et activez l'option "Activer la récupération ponctuelle (archivage WAL) ” comme nous le verrons dans l'image suivante.
Nous devons garder à l'esprit que pour activer l'archivage WAL, nous devons redémarrer notre base de données. ClusterControl peut également le faire pour nous.
En plus des options communes à toutes les sauvegardes comme le "Répertoire de sauvegarde " et la "période de conservation des sauvegardes ”, ici, nous pouvons également spécifier la période de rétention WAL. Par défaut est 0, ce qui signifie pour toujours.
Pour confirmer que nous avons activé l'archivage WAL, nous pouvons sélectionner notre nœud maître dans ClusterControl -> Select TimescaleDB Cluster -> Nodes , et nous devrions voir le message WAL Archiving Enabled, comme nous pouvons le voir dans l'image suivante.
Restauration d'une sauvegarde
Une fois la sauvegarde terminée, nous pouvons la restaurer en utilisant ClusterControl. Pour cela, dans notre section sauvegarde (ClusterControl -> Select TimescaleDB Cluster -> Backup ), nous pouvons sélectionner "Restaurer la sauvegarde", ou directement "Restaurer" sur la sauvegarde que nous voulons restaurer.
Nous avons trois options pour restaurer la sauvegarde. Nous pouvons restaurer la sauvegarde dans un nœud de base de données existant, restaurer et vérifier la sauvegarde sur un hôte autonome ou créer un nouveau cluster à partir de la sauvegarde.
Si nous essayons de restaurer une sauvegarde compatible PITR, nous devons également spécifier l'heure.
Les données seront restaurées telles qu'elles étaient au moment spécifié. Tenez compte du fait que le fuseau horaire UTC est utilisé et que notre service TimescaleDB dans le maître sera redémarré.
Nous pouvons surveiller la progression de notre restauration à partir de la section Activité de notre ClusterControl.
Vérification automatique des sauvegardes
Une sauvegarde n'est pas une sauvegarde si elle n'est pas restaurable. La vérification des sauvegardes est quelque chose qui est généralement négligé par beaucoup. Voyons comment ClusterControl peut automatiser la vérification des sauvegardes TimescaleDB et éviter les mauvaises surprises.
Dans ClusterControl, sélectionnez votre cluster et allez dans 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 le "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, nous devons également spécifier la planification/la fréquence.
Dans l'étape suivante, nous pouvons compresser et chiffrer notre sauvegarde et spécifier la période de conservation. Ici, nous avons également le "Vérifier la sauvegarde ” fonctionnalité.
Pour utiliser cette fonctionnalité, nous avons 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, nous pouvons voir l'icône de vérification dans la section ClusterControl Backup.
Conclusion
De nos jours, les sauvegardes sont obligatoires dans n'importe quel environnement. Ils vous aident à protéger vos données. Les sauvegardes incrémentielles peuvent aider à réduire le temps et l'espace de stockage utilisés pour le processus de sauvegarde. Les journaux de transactions sont importants pour la récupération ponctuelle. ClusterControl peut vous aider à automatiser le processus de sauvegarde de vos bases de données TimescaleDB et, en cas de panne, à les restaurer en quelques clics. De plus, vous pouvez minimiser le RPO en utilisant la sauvegarde compatible PITR et améliorer votre plan de reprise après sinistre.