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

Utiliser l'automatisation pour accélérer les tests de version sur PostgreSQL

Avoir un environnement de test est un must dans toutes les entreprises. Cela peut être nécessaire pour tester des modifications ou de nouvelles versions de l'application, ou même pour tester votre application existante avec une nouvelle version de PostgreSQL. Le plus difficile est, premièrement, de savoir comment déployer un environnement de test aussi similaire que possible à celui de production, et comment maintenir cet environnement sans tout recréer à partir de zéro.

Dans ce blog, nous verrons comment déployer un environnement de test de différentes manières à l'aide de ClusterControl, ce qui vous aidera à automatiser le processus et à éviter les tâches manuelles chronophages.

Réplication de cluster à cluster

Depuis ClusterControl 1.7.4, il existe une fonctionnalité appelée réplication de cluster à cluster. Il vous permet d'avoir une réplication en cours d'exécution entre deux clusters autonomes.

Nous verrons comment utiliser cette fonctionnalité pour un cluster PostgreSQL existant. Pour cette tâche, nous supposerons que vous avez installé ClusterControl et que le cluster principal a été déployé à l'aide de celui-ci.

Création d'une réplication de cluster à cluster

Pour créer une nouvelle réplication de cluster à cluster à partir de l'interface utilisateur de ClusterControl, accédez à ClusterControl -> Sélectionnez le cluster PostgreSQL -> Actions du cluster -> Créer un cluster esclave.

Le cluster esclave sera créé en diffusant les données du cluster principal actuel.

Vous devez spécifier les informations d'identification et le port SSH, un nom pour votre cluster esclave et si vous souhaitez que ClusterControl installe le logiciel et les configurations correspondants pour vous.

Après avoir configuré les informations d'accès SSH, vous devez définir la version de la base de données, le datadir, le port et les informations d'identification de l'administrateur. Comme il utilisera la réplication en continu, assurez-vous d'utiliser la même version de base de données et les informations d'identification doivent être les mêmes que celles utilisées par le cluster principal.

Dans cette étape, vous devez ajouter le serveur au nouveau cluster esclave. Pour cette tâche, vous pouvez entrer à la fois l'adresse IP ou le nom d'hôte du nœud de la base de données.

Vous pouvez surveiller l'état du travail dans le moniteur d'activité de ClusterControl. Une fois la tâche terminée, vous pouvez voir le cluster dans l'écran principal de ClusterControl.

ClusterControl CLI

ClusterControl CLI, également connu sous le nom de s9s, est un outil de ligne de commande introduit dans ClusterControl version 1.4.1 pour interagir, contrôler et gérer les clusters de bases de données à l'aide du système ClusterControl. ClusterControl CLI ouvre une nouvelle porte pour l'automatisation des clusters où vous pouvez facilement l'intégrer aux outils d'automatisation de déploiement existants comme Ansible, Puppet, Chef, etc. Vous pouvez également utiliser cet outil ClusterControl pour créer un cluster esclave. Voyons un exemple :

$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log

Maintenant, voyons plus en détail le paramètre utilisé :

  • Cluster :pour lister et manipuler des clusters.

  • Créer :créer et installer un nouveau cluster.

  • Cluster-name :nom du nouveau cluster esclave.

  • Cluster-type :le type de cluster à installer.

  • Provider-version :la version du logiciel.

  • Nœuds :liste des nouveaux nœuds dans le cluster esclave.

  • Os-user :nom d'utilisateur pour les commandes SSH.

  • Os-key-file :fichier de clé à utiliser pour la connexion SSH.

  • Db-admin :le nom d'utilisateur de l'administrateur de la base de données.

  • Db-admin-passwd :le mot de passe de l'administrateur de la base de données.

  • Remote-cluster-id :ID de cluster maître pour la réplication de cluster à cluster.

  • Journal :attendez et surveillez les messages de tâche.

Gestion de la réplication de cluster à cluster

Maintenant que votre réplication de cluster à cluster est opérationnelle, il existe différentes actions à effectuer sur cette topologie à l'aide de ClusterControl depuis l'interface utilisateur et la CLI.

Reconstruire un cluster esclave

Pour reconstruire un cluster esclave, accédez à ClusterControl -> Sélectionnez le cluster esclave -> Nœuds -> Choisissez le nœud -> Actions du nœud -> Reconstruire l'esclave de réplication.

ClusterControl effectuera les étapes suivantes :

  • Arrêter le serveur PostgreSQL

  • Supprimer le contenu de son répertoire de données

  • Diffuser une sauvegarde du maître vers l'esclave à l'aide de pg_basebackup

  • Démarrer l'esclave

Vous pouvez également reconstruire un cluster esclave à l'aide de la commande suivante depuis le serveur ClusterControl :

$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log

Les paramètres sont :

  • Réplication :pour surveiller et contrôler la réplication des données.

  • Étape :étape/reconstruire un esclave de réplication.

  • Maître :maître de réplication dans le cluster maître.

  • Esclave :l'esclave de réplication dans le cluster esclave.

  • Cluster-id :l'ID du cluster esclave.

  • Remote-cluster-id :ID du cluster maître.

  • Journal :attendez et surveillez les messages de tâche.

Créer un cluster à partir d'une sauvegarde

Une autre façon de créer un environnement de test consiste à créer un nouveau cluster à partir d'une sauvegarde de votre cluster principal. Pour cela, allez dans ClusterControl -> Sélectionnez votre cluster PostgreSQL -> Sauvegarde. Là, choisissez la sauvegarde à restaurer dans la liste.

Maintenant, vous pouvez restaurer cette sauvegarde dans votre base de données actuelle, dans un nœud séparé, ou créer un nouveau cluster à partir de cette sauvegarde.

L'option "Créer un cluster à partir de la sauvegarde" créera un nouveau cluster PostgreSQL à partir de la sauvegarde sélectionnée.

Vous devez ajouter les informations d'identification du système d'exploitation et de la base de données ainsi que les informations pour déployer le nouveau cluster. Une fois cette tâche terminée, vous verrez le nouveau cluster dans l'interface utilisateur de ClusterControl.

Restaurer la sauvegarde sur un hôte autonome

Dans la même section Sauvegarde, vous pouvez choisir l'option "Restauration et vérification sur un hôte autonome" pour restaurer une sauvegarde dans un nœud séparé.

Ici, vous pouvez spécifier si vous souhaitez que ClusterControl installe le logiciel dans le nouveau nœud et désactive le pare-feu ou AppArmor/SELinux (selon le système d'exploitation). Vous pouvez maintenir le nœud opérationnel et en cours d'exécution, ou ClusterControl peut arrêter le service de base de données jusqu'à la prochaine tâche de restauration. Une fois terminé, vous verrez la sauvegarde restaurée/vérifiée dans la liste de sauvegarde marquée d'une coche.

Si vous ne souhaitez pas effectuer cette tâche manuellement, vous pouvez planifier ce processus à l'aide de la fonctionnalité de vérification de la sauvegarde, pour répéter cette tâche périodiquement dans une tâche de sauvegarde.

Vérification automatique de la sauvegarde ClusterControl

Dans ClusterControl -> Sélectionnez votre cluster PostgreSQL -> Sauvegarde -> Créer une sauvegarde.

La fonction de vérification automatique de la sauvegarde est disponible pour les sauvegardes planifiées. 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.

Avec ClusterControl, vous pouvez choisir différentes méthodes de sauvegarde, selon la technologie de la base de données, et, dans la même section, vous pouvez choisir le serveur à partir duquel effectuer la sauvegarde, où vous souhaitez stocker la sauvegarde , et si vous souhaitez charger la sauvegarde dans le cloud (AWS, Azure ou Google Cloud). Vous pouvez également compresser et chiffrer votre sauvegarde et spécifier la période de conservation.

Pour utiliser la fonction de vérification de la sauvegarde, 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 à chaque exécution de la tâche.

Après la restauration, vous pouvez voir l'icône de vérification dans la section ClusterControl Backup, la même que vous aurez en effectuant la vérification de manière manuelle ClusterControl, à la différence que vous n'avez pas à vous inquiéter sur la tâche de restauration. ClusterControl restaurera automatiquement la sauvegarde à chaque fois.

Conclusion

Déployer un environnement de test chaque fois que vous en avez besoin peut être une tâche chronophage, et il est difficile de le maintenir à jour. Le résultat est que parfois les entreprises ne testent pas les nouvelles versions ou que le test n'est pas correct, par exemple en utilisant un environnement différent de celui de production.

Comme vous avez pu le voir, ClusterControl vous permet de déployer le même environnement que vous utilisez en production en quelques clics, voire d'automatiser le processus pour éviter toute tâche manuelle.