MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Conseils pour stocker les sauvegardes MongoDB dans le cloud

En ce qui concerne les sauvegardes et l'archivage des données, les services informatiques sont sous pression pour respecter des accords de niveau de service plus stricts, fournir davantage de rapports personnalisés et respecter les exigences de conformité croissantes tout en continuant à gérer les tâches quotidiennes d'archivage et de sauvegarde. Sans aucun doute, le serveur de base de données stocke certaines des informations les plus précieuses de votre entreprise. Garantir des sauvegardes de base de données fiables pour éviter la perte de données en cas d'accident ou de panne matérielle est une case à cocher essentielle.

Mais comment en faire une véritable reprise après sinistre lorsque toutes vos données se trouvent dans un seul centre de données ou même dans des centres de données proches de la géolocalisation ? De plus, 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.

Dans ce blog, nous allons passer en revue la sauvegarde MongoDB sur le cloud. Le cloud a changé l'industrie de la sauvegarde des données. En raison de son prix abordable, les petites entreprises disposent d'une solution hors site qui sauvegarde toutes leurs données.

Nous allons vous montrer comment effectuer des sauvegardes MongoDB sécurisées à l'aide des services mongo ainsi que d'autres méthodes que vous pouvez utiliser pour étendre les options de récupération après sinistre de votre base de données.

Si votre serveur ou destination de sauvegarde est situé dans une infrastructure exposée comme un cloud public, un fournisseur d'hébergement ou connecté via un réseau WAN non approuvé, vous devez penser à des actions supplémentaires dans votre politique de sauvegarde. Il existe plusieurs façons d'effectuer des sauvegardes de base de données pour MongoDB, et selon le type de sauvegarde, le temps de récupération, la taille et les options d'infrastructure varient. Étant donné que de nombreuses solutions de stockage en nuage sont simplement du stockage avec différentes API frontales, toute solution de sauvegarde peut être exécutée avec un peu de script. Alors, quelles sont les options dont nous disposons pour rendre le processus fluide et sécurisé ?

Cryptage de sauvegarde MongoDB

La sécurité doit être au centre de chaque action des équipes informatiques. C'est toujours une bonne idée d'appliquer le cryptage pour améliorer la sécurité des données de sauvegarde. Un cas d'utilisation simple pour implémenter le chiffrement est celui où vous souhaitez transférer la sauvegarde vers un stockage de sauvegarde hors site situé dans le cloud public.

Lors de la création d'une sauvegarde chiffrée, une chose à garder à l'esprit est que la récupération prend généralement plus de temps. La sauvegarde doit être déchiffrée avant toute activité de récupération. Avec un ensemble de données volumineux, cela pourrait introduire des retards dans le RTO.

D'autre part, si vous utilisez les clés privées pour le chiffrement, assurez-vous de stocker la clé dans un endroit sûr. Si la clé privée est manquante, la sauvegarde sera inutile et irrécupérable. Si la clé est volée, toutes les sauvegardes créées qui utilisent la même clé seront compromises car elles ne sont plus sécurisées. Vous pouvez utiliser les populaires GnuPG ou OpenSSL pour générer des clés privées ou publiques.

Pour effectuer le chiffrement MongoDBdump à l'aide de GnuPG, générez une clé privée et suivez l'assistant en conséquence :

$ gpg --gen-key

Créez une sauvegarde MongoDBdump simple comme d'habitude :

$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Chiffrez le fichier de vidage et supprimez l'ancienne sauvegarde simple :
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz

$ rm -f db1.tar.gz
GnuPG ajoutera automatiquement l'extension .gpg au fichier crypté. Pour déchiffrer,

exécutez simplement la commande gpg avec l'indicateur --decrypt :

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Pour créer un MongoDBdump chiffré à l'aide d'OpenSSL, il faut générer une clé privée et une clé publique :
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Cette clé privée (dump.priv.pem) doit être conservée en lieu sûr pour un décryptage futur. Pour Mongodump, une sauvegarde chiffrée peut être créée en redirigeant le contenu vers openssl, par exemple

mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256

-out database.sql.enc -outform DER dump.pub.pem
Pour déchiffrer, utilisez simplement la clé privée (dump.priv.pem) à côté de l'indicateur -decrypt :

openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out db1.tar.gz

Compression de sauvegarde MongoDB

Dans le monde de la sauvegarde de bases de données dans le cloud, la compression est l'une de vos meilleures amies. Cela permet non seulement d'économiser de l'espace de stockage, mais également de réduire considérablement le temps nécessaire pour télécharger/télécharger des données.

En plus de l'archivage, nous avons également ajouté la prise en charge de la compression à l'aide de gzip. Ceci est exposé par l'introduction d'une nouvelle option de ligne de commande "--gzip" dans mongodump et mongorestore. La compression fonctionne à la fois pour les sauvegardes créées à l'aide du répertoire et du mode archive et réduit l'utilisation de l'espace disque.

Normalement, le vidage MongoDB peut avoir les meilleurs taux de compression car il s'agit d'un fichier texte plat. Selon l'outil de compression et le ratio, un MongoDBdump compressé peut être jusqu'à 6 fois plus petit que la taille de sauvegarde d'origine. Pour compresser la sauvegarde, vous pouvez diriger la sortie MongoDBdump vers un outil de compression et la rediriger vers un fichier de destination

Avoir une sauvegarde compressée peut vous faire économiser jusqu'à 50 % de la taille de la sauvegarde d'origine, selon le jeu de données.

mongodump --db country --gzip --archive=country.archive

Limiter le débit du réseau

Une excellente option pour les sauvegardes dans le cloud consiste à limiter la bande passante de streaming réseau (Mb/s) lors d'une sauvegarde. Vous pouvez y parvenir avec l'outil pv. L'utilitaire pv est livré avec l'option de modificateurs de données -L RATE, --rate-limit RATE qui limite le transfert à un maximum de RATE octets par seconde. L'exemple ci-dessous le limitera à 2 Mo/s.

$ pv -q -L 2m

Transférer des sauvegardes MongoDB vers le cloud

Maintenant, lorsque votre sauvegarde est compressée et sécurisée (chiffrée), elle est prête pour le transfert.

Google Cloud

L'outil de ligne de commande gsutil est utilisé pour gérer, surveiller et utiliser vos buckets de stockage sur Google Cloud Storage. Si vous avez déjà installé l'utilitaire gcloud, vous avez déjà installé le gsutil. Sinon, suivez les instructions pour votre distribution Linux à partir d'ici.

Pour installer la CLI gcloud, vous pouvez suivre la procédure ci-dessous :

curl https://sdk.cloud.google.com | bash
Redémarrez votre shell :
exec -l $SHELL
Exécutez gcloud init pour initialiser l'environnement gcloud :
gcloud init
Une fois l'outil de ligne de commande gsutil installé et authentifié, créez un bucket de stockage régional nommé MongoDB-backups-storage dans votre projet actuel.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/

Creating gs://MongoDB-backups-storage/

Amazon S3

Si vous n'utilisez pas RDS pour héberger vos bases de données, il est très probable que vous fassiez vos propres sauvegardes. La plate-forme AWS d'Amazon, S3 (Amazon Simple Storage Service) est un service de stockage de données qui peut être utilisé pour stocker des sauvegardes de bases de données ou d'autres fichiers critiques pour l'entreprise. Qu'il s'agisse d'une instance Amazon EC2 ou de votre environnement sur site, vous pouvez utiliser le service pour sécuriser vos données.

Alors que les sauvegardes peuvent être téléchargées via l'interface Web, l'interface de ligne de commande s3 dédiée peut être utilisée pour le faire à partir de la ligne de commande et via des scripts d'automatisation de sauvegarde. Si les sauvegardes doivent être conservées pendant très longtemps et que le temps de récupération n'est pas un problème, les sauvegardes peuvent être transférées vers le service Amazon Glacier, offrant un stockage à long terme beaucoup moins cher. Les fichiers (objets amazon) sont logiquement stockés dans un immense conteneur plat nommé bucket. S3 présente une interface REST à ses composants internes. Vous pouvez utiliser cette API pour effectuer des opérations CRUD sur des compartiments et des objets, ainsi que pour modifier les autorisations et les configurations sur les deux.

La principale méthode de distribution de l'AWS CLI sur Linux, Windows et macOS est pip, un gestionnaire de packages pour Python. Les instructions sont disponibles ici.

aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Par défaut, S3 fournit une durabilité d'objet de onze 9s. Cela signifie que si vous y stockez 1 000 000 000 (1 milliard) d'objets, vous pouvez vous attendre à perdre 1 objet tous les 10 ans en moyenne. La façon dont S3 atteint un nombre impressionnant de 9 est en répliquant l'objet automatiquement dans plusieurs zones de disponibilité, dont nous parlerons dans un autre article. Amazon possède des centres de données régionaux dans le monde entier.

Stockage Microsoft Azure

La plate-forme de cloud public de Microsoft, Azure, propose des options de stockage avec son interface de ligne de contrôle. Des informations peuvent être trouvées ici. L'interface de ligne de commande Azure multiplateforme open source fournit un ensemble de commandes pour travailler avec la plateforme Azure. Il offre une grande partie des fonctionnalités du portail Azure, y compris un accès enrichi aux données.

L'installation d'Azure CLI est assez simple, vous pouvez trouver des instructions ici. Vous trouverez ci-dessous comment transférer votre sauvegarde vers le stockage Microsoft.

az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup

Stockage hybride pour les sauvegardes MongoDB

Avec la croissance de l'industrie du stockage cloud public et privé, nous avons une nouvelle catégorie appelée stockage hybride. L'approche typique consiste à conserver les données sur des disques durs locaux pendant une période plus courte, tandis que le stockage de sauvegarde dans le cloud serait conservé plus longtemps. Souvent, l'exigence d'une conservation de sauvegarde plus longue provient d'obligations légales pour différentes industries (comme les télécommunications devant stocker des métadonnées de connexion). Cette technologie permet aux fichiers d'être stockés localement, avec des modifications automatiquement synchronisées à distance dans le cloud. Une telle approche découle de la nécessité de disposer de sauvegardes récentes stockées localement pour une restauration rapide (RTO inférieur), ainsi que des objectifs de continuité des activités.

L'aspect important d'une utilisation efficace des ressources est d'avoir des rétentions de sauvegarde séparées. Les données stockées localement sur des disques durs redondants seraient conservées pendant une période plus courte, tandis que le stockage de sauvegarde dans le cloud serait conservé plus longtemps. Souvent, l'exigence d'une conservation de sauvegarde plus longue provient d'obligations légales pour différents secteurs (comme les télécommunications devant stocker les métadonnées de connexion).

Les fournisseurs de cloud comme Google Cloud Services, Microsoft Azure et Amazon S3 offrent chacun un stockage pratiquement illimité, ce qui réduit les besoins en espace local. Il vous permet de conserver vos fichiers de sauvegarde plus longtemps, aussi longtemps que vous le souhaitez et de ne pas vous soucier de l'espace disque local.

Gestion des sauvegardes ClusterControl - Stockage hybride

Lorsque vous planifiez une sauvegarde avec ClusterControl, chacune des méthodes de sauvegarde est configurable avec un ensemble d'options sur la façon dont vous souhaitez que la sauvegarde soit exécutée. Le plus important pour le stockage cloud hybride serait :

  • Limitation du réseau
  • Chiffrement avec la gestion des clés intégrée
  • Compression
  • La période de conservation des sauvegardes locales
  • La période de conservation des sauvegardes cloud

Fonctionnalités de sauvegarde avancées de ClusterControl pour le cloud, compression parallèle, limite de bande passante réseau, chiffrement , etc. Votre entreprise peut tirer parti de l'évolutivité du cloud et de la tarification à l'utilisation pour les besoins de stockage croissants. Vous pouvez concevoir une stratégie de sauvegarde pour fournir à la fois des copies locales dans le centre de données pour une restauration immédiate et une passerelle transparente vers les services de stockage dans le cloud d'AWS, Google et Azure.

TLS avancé et AES 256 Les fonctionnalités de chiffrement et de compression de 1 bit prennent en charge les sauvegardes sécurisées qui occupent beaucoup moins d'espace dans le cloud.