La nécessité d'atteindre la haute disponibilité de la base de données est une tâche assez courante, et souvent indispensable. Si votre entreprise dispose d'un budget limité, la maintenance d'un esclave de réplication (ou plus d'un) qui s'exécute sur le même fournisseur de cloud (en attendant juste si c'est nécessaire un jour) peut être coûteuse. Selon le type d'application, il existe des cas où un esclave de réplication est nécessaire pour améliorer le RTO (Recovery Time Objective).
Il existe une autre option, cependant, si votre entreprise peut accepter un court délai pour remettre vos systèmes en ligne.
Cold Standby, est une méthode de redondance où vous avez un nœud de secours (en tant que sauvegarde) pour le nœud principal. Ce nœud n'est utilisé qu'en cas de défaillance du maître. Le reste du temps, le nœud de secours à froid est arrêté et utilisé uniquement pour charger une sauvegarde en cas de besoin.
Pour utiliser cette méthode, il est nécessaire d'avoir une politique de sauvegarde prédéfinie (avec redondance) selon un RPO (Recovery Point Objective) acceptable pour l'entreprise. Il se peut que la perte de 12 heures de données soit acceptable pour l'entreprise ou que la perte d'une seule heure soit un gros problème. Chaque entreprise et application doit déterminer sa propre norme.
Dans ce blog, vous apprendrez à créer une politique de sauvegarde et à la restaurer sur un serveur Cold Standby à l'aide de ClusterControl et de son intégration à Amazon AWS.
Pour ce blog, nous supposerons que vous avez déjà un compte AWS et que ClusterControl est installé. Alors que nous allons utiliser AWS comme fournisseur de cloud dans cet exemple, vous pouvez en utiliser un autre. Nous utiliserons la topologie PostgreSQL suivante déployée à l'aide de ClusterControl :
- 1 nœud principal PostgreSQL
- 2 nœuds de secours à chaud PostgreSQL
- 2 Load Balancers (HAProxy + Keepalived)
Création d'une politique de sauvegarde acceptable
La meilleure pratique pour créer ce type de politique consiste à stocker les fichiers de sauvegarde à trois endroits différents, l'un stocké localement sur le serveur de base de données (pour une récupération plus rapide), l'autre sur un serveur de sauvegarde centralisé, et le dernier dans le nuage.
Vous pouvez améliorer cela en utilisant également des sauvegardes complètes, incrémentielles et différentielles. Avec ClusterControl, vous pouvez appliquer toutes les meilleures pratiques ci-dessus, toutes à partir du même système, avec une interface utilisateur conviviale et facile à utiliser. Commençons par créer l'intégration AWS dans ClusterControl.
Configuration de l'intégration AWS ClusterControl
Accédez à ClusterControl -> Intégrations -> Fournisseurs de cloud -> Ajouter des informations d'identification cloud.
Choisissez un fournisseur de cloud. Nous prenons en charge AWS, Google Cloud ou Azure. Dans ce cas, choisissez AWS et continuez.
Ici, vous devez ajouter un nom, une région par défaut et un AWS ID de clé et clé secrète. Pour obtenir ou créer ces derniers, vous devez vous rendre dans la section IAM (Identity and Access Management) de la console de gestion AWS. Pour plus d'informations, vous pouvez vous référer à notre documentation ou à la documentation AWS.
Maintenant que vous avez créé l'intégration, allons planifier la première sauvegarde en utilisant ClusterControl.
Planification d'une sauvegarde avec ClusterControl
Allez dans ClusterControl -> Sélectionnez le cluster PostgreSQL -> Sauvegarde -> Créer une sauvegarde.
Vous pouvez choisir si vous souhaitez créer une seule sauvegarde instantanément ou planifier une nouvelle sauvegarde. Alors, choisissons la deuxième option et continuons.
Lorsque vous planifiez une sauvegarde, vous devez d'abord spécifier la planification /la fréquence. Ensuite, vous devez choisir une méthode de sauvegarde (pg_dumpall, pg_basebackup, pgBackRest), le serveur à partir duquel la sauvegarde sera prise et où vous souhaitez stocker la sauvegarde. Vous pouvez également télécharger notre sauvegarde sur le cloud (AWS, Google ou Azure) en activant le bouton correspondant.
Précisez ensuite l'utilisation de la compression, le niveau de compression, le chiffrement et la durée de conservation pour votre sauvegarde. Il existe une autre fonctionnalité appelée "Vérifier la sauvegarde" que vous verrez bientôt plus en détail dans cet article de blog.
Si l'option "Télécharger la sauvegarde sur le cloud" a été activée, vous' Nous verrons cette étape où vous devez sélectionner les informations d'identification cloud et créer ou sélectionner un compartiment S3 où stocker la sauvegarde. Vous devez également spécifier la période de conservation.
Vous aurez maintenant la sauvegarde planifiée dans la section ClusterControl Schedule Backups. Pour couvrir les meilleures pratiques mentionnées précédemment, vous pouvez planifier une sauvegarde pour la stocker sur un serveur externe (serveur ClusterControl) et dans le cloud, puis planifier une autre sauvegarde pour la stocker localement dans le nœud de la base de données pour une récupération plus rapide.
Restauration d'une sauvegarde sur Amazon EC2
Une fois la sauvegarde terminée, vous pouvez la restaurer en utilisant ClusterControl dans la section Sauvegarde.
Création de l'instance Amazon EC2
Tout d'abord, pour le restaurer, vous aurez besoin d'un endroit pour le faire, alors créons une instance Amazon EC2 de base. Accédez à « Lancer l'instance » dans la console de gestion AWS dans la section EC2, et configurez votre instance.
Lorsque votre instance est créée, vous devrez copier le public SSH clé du serveur ClusterControl.
Restauration de la sauvegarde à l'aide de ClusterControl
Maintenant que vous avez la nouvelle instance EC2, utilisons-la pour y restaurer la sauvegarde. Pour cela, dans votre ClusterControl allez dans la section sauvegarde (ClusterControl -> Select Cluster -> Backup), et là vous pouvez sélectionner "Restaurer la sauvegarde", ou directement "Restaurer" sur la sauvegarde que vous souhaitez restaurer.
Vous avez trois options pour restaurer la sauvegarde. Vous pouvez 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. Comme vous souhaitez créer un nœud de secours à froid, utilisons la deuxième option "Restaurer et vérifier sur l'hôte autonome".
Vous aurez besoin d'un hôte dédié (ou VM) qui ne fait pas partie du cluster pour restaurer la sauvegarde, utilisons donc l'instance EC2 créée pour cette tâche. ClusterControl installera le logiciel et restaurera la sauvegarde sur cet hôte.
Si l'option "Arrêter le serveur après la restauration de la sauvegarde" est activée, ClusterControl arrêtera le nœud de la base de données après avoir terminé le travail de restauration, et c'est exactement ce dont nous avons besoin pour cette création de secours à froid.
Vous pouvez surveiller la progression de la sauvegarde dans la section ClusterControl Activity.
Utilisation de la fonctionnalité de sauvegarde de vérification de ClusterControl
Une sauvegarde n'est pas une sauvegarde si elle n'est pas restaurable. Vous devez donc vous assurer que la sauvegarde fonctionne et la restaurer fréquemment dans le nœud de secours à froid.
Cette fonctionnalité de sauvegarde ClusterControl Verify Backup est un moyen d'automatiser la maintenance d'un nœud de secours à froid en restaurant une sauvegarde récente pour la maintenir aussi à jour que possible en évitant le travail de restauration manuelle de la sauvegarde. Voyons comment cela fonctionne.
En tant que tâche « Restauration et vérification sur un hôte autonome », elle nécessitera un hôte dédié (ou VM) qui ne fait pas partie du cluster pour restaurer la sauvegarde, utilisons donc la même instance EC2 ici.
La fonction de vérification automatique de la sauvegarde est disponible pour les sauvegardes planifiées. Alors, allez dans ClusterControl -> Sélectionnez le cluster PostgreSQL -> Sauvegarde -> Créer une sauvegarde et répétez les étapes que vous avez vues précédemment pour planifier une nouvelle sauvegarde.
Dans la deuxième étape, vous aurez la fonction "Vérifier la sauvegarde" disponible pour l'activer.
En utilisant les options ci-dessus, ClusterControl installera le logiciel et restaurera la sauvegarde sur l'hôte. Après l'avoir restauré, si tout s'est bien passé, vous verrez l'icône de vérification dans la section ClusterControl Backup.
Conclusion
Si vous avez un budget limité, mais que vous avez besoin d'une haute disponibilité, vous pouvez utiliser un nœud PostgreSQL de secours froid qui pourrait être valide ou non en fonction du RTO et du RPO de l'entreprise. Dans ce blog, nous vous avons montré comment planifier une sauvegarde (selon votre politique commerciale) et comment la restaurer manuellement. Nous avons également montré comment restaurer automatiquement la sauvegarde dans un serveur Cold Standby à l'aide de ClusterControl, Amazon S3 et Amazon EC2.