Toutes les entreprises ont (ou devraient avoir) aujourd'hui un plan de reprise après sinistre (DRP) pour éviter la perte de données en cas de panne ; construit selon un objectif de point de récupération (RPO) acceptable pour l'entreprise.
Une sauvegarde est un début de base dans n'importe quel DRP, mais pour garantir la convivialité de la sauvegarde, une seule sauvegarde n'est tout simplement pas suffisante. La meilleure pratique consiste à stocker les fichiers de sauvegarde à trois endroits différents, un stocké localement sur le serveur de base de données (pour une récupération plus rapide), un autre sur un serveur de sauvegarde centralisé et le dernier dans le cloud. Pour cette dernière étape, vous devez choisir un fournisseur de cloud stable et robuste pour vous assurer que vos données sont correctement stockées et accessibles à tout moment.
Dans ce blog, nous examinerons l'un des fournisseurs de cloud les plus célèbres, Google Cloud Platform (GCP) et comment l'utiliser pour stocker vos sauvegardes PostgreSQL dans le cloud.
À propos de Google Cloud
Google Cloud propose une large gamme de produits pour votre charge de travail. Examinons certains d'entre eux et leur lien avec le stockage des sauvegardes PostgreSQL dans le cloud.
- Cloud Storage :il permet le stockage et la récupération dans le monde entier de n'importe quelle quantité de données à tout moment. Vous pouvez utiliser Cloud Storage pour toute une gamme de scénarios, y compris la diffusion de contenu de site Web, le stockage de données à des fins d'archivage et de reprise après sinistre, ou la distribution d'objets de données volumineux aux utilisateurs par téléchargement direct.
- Cloud SQL :il s'agit d'un service de base de données entièrement géré qui facilite la configuration, la maintenance, la gestion et l'administration de vos bases de données relationnelles PostgreSQL, MySQL et SQL Server dans le cloud.
- Compute Engine :il fournit des machines virtuelles s'exécutant dans Google Cloud avec une prise en charge du passage d'instances uniques à un cloud computing global à charge équilibrée. Les VM de Compute Engine démarrent rapidement, sont dotées d'options de disques persistants et locaux hautes performances et offrent des performances constantes.
Stocker des sauvegardes sur Google Cloud
Si vous exécutez votre base de données PostgreSQL sur Google Cloud avec Cloud SQL, vous pouvez la sauvegarder directement depuis Google Cloud Platform, cependant, il n'est pas nécessaire de l'exécuter ici pour stocker vos sauvegardes PostgreSQL.
Google Cloud Storage
Similaire au produit Amazon S3 bien connu, si vous n'exécutez pas votre base de données PostgreSQL avec Cloud SQL, il s'agit de l'option la plus couramment utilisée pour stocker des sauvegardes ou des fichiers dans Google Cloud. Il est accessible depuis Google Cloud Platform, dans la section Mise en route ou sous le menu de gauche Stockage. Avec Cloud Storage, vous pouvez même facilement transférer votre contenu S3 ici à l'aide de la fonction de transfert.
Comment utiliser Google Cloud Storage
Tout d'abord, vous devez créer un nouveau compartiment pour stocker vos données. Accédez donc à Google Cloud Platform -> Stockage -> Créer un compartiment
Dans la première étape, vous devez simplement ajouter un nouveau nom de compartiment.
À l'étape suivante, vous pouvez spécifier le type d'emplacement (multi-région par défaut) et le lieu de localisation.
Ensuite, vous pouvez modifier la classe de stockage de standard (option par défaut) à Nearline ou Coldline.
Et ensuite, vous pouvez modifier l'accès au contrôle.
Enfin, vous avez quelques paramètres facultatifs comme le chiffrement ou la politique de rétention.
Maintenant que votre nouveau bucket est créé, nous allons voir comment l'utiliser.
Utilisation de l'outil GSutil
GSutil est une application Python qui vous permet d'accéder à Cloud Storage à partir de la ligne de commande. Il vous permet d'effectuer différentes tâches de gestion de buckets et d'objets. Voyons comment l'installer sur CentOS 7 et comment télécharger une sauvegarde en l'utilisant.
Télécharger le SDK Cloud :
$ curl https://sdk.cloud.google.com | bash
Redémarrez votre shell :
$ exec -l $SHELL
Exécutez gcloud init et configurez l'outil :
$ gcloud init
Cette commande vous demandera de vous connecter à votre compte Google Cloud en accédant à une URL et en ajoutant un code d'authentification.
Maintenant que l'outil est installé et configuré, chargeons une sauvegarde dans le bucket.
Tout d'abord, vérifions nos buckets créés :
[[email protected] ~]# gsutil ls
gs://pgbackups1/
Et pour copier votre sauvegarde PostgreSQL (ou un autre fichier), lancez :
[[email protected] ~]# gsutil cp /root/backups/BACKUP-3/base.tar.gz gs://pgbackups1/new_backup/
Copying file:///root/backups/BACKUP-3/base.tar.gz [Content-Type=application/x-tar]...
| [1 files][ 4.9 MiB/ 4.9 MiB]
Operation completed over 1 objects/4.9 MiB.
Le bucket de destination doit exister.
Et ensuite, vous pouvez lister le contenu du répertoire new_backup, pour vérifier le fichier téléchargé :
[[email protected] ~]# gsutil ls -r gs://pgbackups1/new_backup/*
gs://pgbackups1/new_backup/
gs://pgbackups1/new_backup/base.tar.gz
Pour plus d'informations sur l'utilisation de GSutil, vous pouvez consulter la documentation officielle.
Google Cloud SQL
Si vous souhaitez centraliser tout l'environnement (base de données + sauvegardes) dans Google Cloud, vous disposez de ce produit Cloud SQL. De cette façon, vous aurez votre base de données PostgreSQL en cours d'exécution sur Google Cloud et vous pourrez également gérer les sauvegardes à partir de la même plate-forme. Il est accessible depuis Google Cloud Platform, dans la section Premiers pas ou dans le menu de gauche Stockage.
Comment utiliser Google Cloud SQL
Pour créer une nouvelle instance PostgreSQL, accédez à Google Cloud Platform -> SQL -> Créer une instance
Ici, vous pouvez choisir entre MySQL et PostgreSQL comme moteur de base de données. Pour ce blog, créons une instance PostgreSQL.
Maintenant, vous devez ajouter un ID d'instance, un mot de passe, un emplacement et PostgreSQL version (9.6 ou 11).
Vous avez également quelques options de configuration, comme activer l'adresse IP publique, le type de machine et stockage, et sauvegardes, etc.
Lorsque l'instance Cloud SQL est créée, vous pouvez la sélectionner et vous verrez un aperçu de cette nouvelle instance.
Et vous pouvez accéder à la section Sauvegardes pour gérer vos sauvegardes PostgreSQL.
Pour réduire les coûts de stockage, les sauvegardes fonctionnent de manière incrémentielle. Chaque sauvegarde stocke uniquement les modifications apportées à vos données depuis la sauvegarde précédente.
Google Cloud Compute Engine
Semblable à Amazon EC2, cette façon de stocker des informations dans le cloud est plus coûteuse et prend plus de temps que Cloud Storage, mais vous aurez un contrôle total sur l'environnement de stockage de sauvegarde. Il est également accessible depuis Google Cloud Platform, dans la section Premiers pas ou dans le menu de gauche Calcul.
Comment utiliser un moteur Google Cloud Compute
Pour créer une nouvelle machine virtuelle, accédez à Google Cloud Platform -> Compute Engine -> Créer une instance
Ici, vous devez ajouter un nom d'instance, une région et une zone où le créer. En outre, vous devez spécifier la configuration de la machine en fonction de vos exigences matérielles et d'utilisation, ainsi que la taille du disque et le système d'exploitation à utiliser pour la nouvelle machine virtuelle.
Lorsque l'instance est prête, vous pouvez stocker les sauvegardes ici, par exemple , en l'envoyant via SSH ou FTP à l'aide de l'adresse IP externe. Regardons un exemple avec Rsync et un autre avec la commande SCP Linux.
Pour vous connecter via SSH à la nouvelle machine virtuelle, assurez-vous d'avoir ajouté votre clé SSH dans la configuration de la machine virtuelle.
[[email protected] ~]# rsync -avzP -e "ssh -i /home/sinsausti/.ssh/id_rsa" /root/backups/BACKUP-3/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
sending incremental file list
base.tar.gz
5,155,420 100% 1.86MB/s 0:00:02 (xfr#1, to-chk=0/1)
sent 4,719,597 bytes received 35 bytes 629,284.27 bytes/sec
total size is 5,155,420 speedup is 1.09
[[email protected] ~]#
[[email protected] ~]# scp -i /home/sinsausti/.ssh/id_rsa /root/backups/BACKUP-5/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
base.tar.gz 100% 2905KB 968.2KB/s 00:03
[[email protected] ~]#
Vous pouvez facilement l'intégrer dans un script pour effectuer un processus de sauvegarde automatique ou utiliser ce produit avec un système externe comme ClusterControl pour gérer vos sauvegardes.
Gérer vos sauvegardes avec ClusterControl
De la même manière que vous pouvez centraliser la gestion de la base de données et de la sauvegarde à partir de la même plate-forme en utilisant Cloud SQL, vous pouvez utiliser ClusterControl pour plusieurs tâches de gestion liées à votre base de données PostgreSQL.
ClusterControl est un système de gestion complet pour les bases de données open source qui automatise les fonctions de déploiement et de gestion, ainsi que la surveillance de la santé et des performances. ClusterControl prend en charge le déploiement, la gestion, la surveillance et la mise à l'échelle pour différentes technologies et environnements de base de données. Ainsi, vous pouvez, par exemple, créer notre instance de machine virtuelle sur Google Cloud et déployer/importer notre service de base de données avec ClusterControl.
Création d'une sauvegarde
Pour cette tâche, accédez à ClusterControl -> Sélectionnez Cluster -> Sauvegarde -> Créer une sauvegarde.
Vous pouvez créer une nouvelle sauvegarde ou en configurer une planifiée. Pour notre exemple, nous allons créer une seule sauvegarde instantanément.
Vous devez choisir une méthode, le serveur à partir duquel la sauvegarde sera effectuée , 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.
Si vous avez activé l'option de téléchargement de sauvegarde sur le cloud, vous verrez un section pour spécifier le fournisseur de cloud (dans ce cas Google Cloud) et les informations d'identification (ClusterControl -> Intégrations -> Fournisseurs de cloud). Pour Google Cloud, il utilise Cloud Storage, vous devez donc sélectionner un compartiment ou même en créer un nouveau pour stocker vos sauvegardes.
Dans la section de sauvegarde, vous pouvez voir la progression de la sauvegarde, et des informations telles que la méthode, la taille, l'emplacement, etc.
Conclusion
Google Cloud peut être une bonne option pour stocker vos sauvegardes PostgreSQL et propose différents produits pour le faire. Il n'est cependant pas nécessaire que vos bases de données PostgreSQL s'y exécutent car vous ne pouvez l'utiliser que comme emplacement de stockage.
L'outil GSutil est un bon produit pour gérer vos données Cloud Storage à partir de la ligne de commande, facile à utiliser et rapide.
Vous pouvez également combiner Google Cloud et ClusterControl pour améliorer votre environnement de haute disponibilité PostgreSQL et votre système de surveillance. Si vous souhaitez en savoir plus sur PostgreSQL sur Google Cloud, vous pouvez consulter notre article de blog détaillé.