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

Options de sauvegarde dans le cloud pour les bases de données MySQL et MariaDB

L'objectif principal de la sauvegarde de vos données est, bien sûr, la possibilité de revenir en arrière et d'accéder à vos archives en cas de panne matérielle. Pour faire des affaires aujourd'hui, vous avez besoin d'avoir la certitude qu'en cas de sinistre, vos données seront protégées et accessibles. Vous auriez besoin de stocker vos sauvegardes hors site, au cas où votre centre de données tomberait en flammes.

La protection des données reste un défi pour les petites et moyennes entreprises. Les petites et moyennes entreprises préfèrent archiver les données de leur entreprise à l'aide d'un stockage à connexion directe, la majorité des entreprises prévoyant de faire des copies de sauvegarde hors site. L'approche du stockage local peut conduire à l'un des dilemmes les plus graves auxquels une entreprise moderne puisse être confrontée :la perte de données en cas de sinistre.

De nombreux facteurs entrent en ligne de compte lorsqu'il s'agit de décider s'il faut autoriser le transfert hors site d'une base de données critique pour l'entreprise et lors du choix d'un fournisseur approprié pour le faire. Les méthodes traditionnelles telles que l'écriture sur bande et l'expédition vers un site distant peuvent être un processus compliqué qui nécessite un matériel spécial, un personnel correctement formé et des procédures pour garantir que les sauvegardes sont régulièrement produites, protégées et que l'intégrité des informations qu'elles contiennent est vérifiée. Les petites entreprises ont généralement de petits budgets informatiques. Souvent, ils ne peuvent pas se permettre d'avoir un centre de données secondaire, même s'ils ont un centre de données dédié. Néanmoins, il est toujours important de conserver une copie de vos fichiers de sauvegarde hors site. Des catastrophes telles qu'un ouragan, une inondation, un incendie ou un vol peuvent détruire vos serveurs et votre stockage. La conservation des données sauvegardées dans le centre de données séparé garantit la sécurité des données, peu importe ce qui se passe dans votre centre de données principal. Le stockage dans le cloud est un excellent moyen de résoudre ce problème.
Avec l'approche de sauvegarde dans le cloud, il y a un certain nombre de facteurs à prendre en compte. Voici quelques-unes des questions que vous vous posez :

  • Les données sauvegardées sont-elles sécurisées au repos dans le centre de données externe ?
  • Le transfert vers ou depuis le centre de données externe via le réseau Internet public est-il sûr ?
  • Y a-t-il un effet sur le RTO (objectif de temps de récupération) ?
  • Le processus de sauvegarde et de restauration est-il suffisamment simple pour notre personnel informatique ?
  • Des modifications doivent-elles être apportées aux processus existants ?
  • Les outils de sauvegarde tiers sont-ils nécessaires ?
  • Quels sont les coûts supplémentaires en termes de logiciel requis ou de transfert de données ?
  • Quels sont les frais de stockage ?

Fonctionnalités de sauvegarde lors d'une sauvegarde dans le cloud

Si votre serveur MySQL ou votre 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 peu de façons différentes d'effectuer des sauvegardes de base de données pour MySQL, 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

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 crypté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 une clé privée 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 le populaire GnuPG ou OpenSSL pour générer les clés privées ou publiques.
Pour effectuer le chiffrement mysqldump à 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 mysqldump simple comme d'habitude :

$ mysqldump --routines --events --triggers --single-transaction db1 | gzip > 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 mysqldump 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 mysqldump, une sauvegarde chiffrée peut être créée en redirigeant le contenu vers openssl, par exemple

mysqldump --routines --events --triggers --single-transaction database | 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é du drapeau -decrypt :
openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out database.sql

Percona XtraBackup peut être utilisé pour chiffrer ou déchiffrer les sauvegardes locales ou en streaming avec l'option xbstream pour ajouter une autre couche de protection aux sauvegardes. Le chiffrement est effectué avec la bibliothèque libgcrypt. Les options --encrypt-key et --encryptkey-file peuvent être utilisées pour spécifier la clé de chiffrement. Les clés de chiffrement peuvent être générées avec des commandes telles que

$ openssl rand -base64 24
$ bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1

Cette valeur peut ensuite être utilisée comme clé de cryptage. Exemple de la commande innobackupex utilisant --encrypt-key :

$ innobackupex --encrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1” /storage/backups/encrypted

La sortie de la commande OpenSSL ci-dessus peut également être redirigée vers un fichier et peut être traitée comme un fichier clé :

openssl rand -base64 24 > /etc/keys/pxb.key

Utilisez-le plutôt avec l'option --encrypt-key-file :

innobackupex --encrypt=AES256 --encrypt-key-file=/etc/keys/pxb.key /storage/backups/encrypted

Pour déchiffrer, utilisez simplement l'option --decrypt avec --encrypt-key ou --encrypt-key-file approprié :

$ innobackupex --decrypt=AES256 --encrypt-key=”bWuYY6FxIPp3Vg5EDWAxoXlmEFqxUqz1”
/storage/backups/encrypted/2018-11-18_11-10-09/

Pour plus d'informations sur le chiffrement MySQL et MariaDB, veuillez consulter notre autre article de blog.

Compression

Dans le monde de la sauvegarde de bases de données dans le cloud, la compression est l'un de vos meilleurs amis. 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.
De nombreux outils de compression sont disponibles, à savoir gzip, bzip2, zip, rar et 7z.
Normalement, mysqldump 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 mysqldump compressé peut être jusqu'à 6 fois plus petit que la taille de la sauvegarde d'origine. Pour compresser la sauvegarde, vous pouvez rediriger la sortie de mysqldump vers un outil de compression et la rediriger vers un fichier de destination. Vous pouvez également ignorer plusieurs choses comme les commentaires, l'instruction de verrouillage des tables (si InnoDB), ignorer le GTID purgé et les déclencheurs :

mysqldump --single-transaction --skip-comments --skip-triggers --skip-lock-tables --set-gtid-purged OFF --all-databases | gzip > /storage/backups/all-databases.sql.gz

Avec Percona Xtrabackup, vous pouvez utiliser le mode streaming (innobackupex), qui envoie la sauvegarde vers STDOUT au format tar ou xbstream spécial au lieu de copier les fichiers dans le répertoire de sauvegarde. Une sauvegarde compressée peut vous faire économiser jusqu'à 50 % de la taille de la sauvegarde d'origine, selon le jeu de données. Ajoutez l'option --compress dans la commande de sauvegarde. En utilisant xbstream dans les sauvegardes en continu, vous pouvez accélérer le processus de compression en utilisant l'option --compress-threads. Cette option spécifie le nombre de threads créés par xtrabackup pour la compression parallèle des données. La valeur par défaut de cette option est 1. Pour utiliser cette fonction, ajoutez l'option à une sauvegarde locale. Un exemple de sauvegarde avec compression :

innobackupex --stream=xbstream --compress --compress-threads=4 > /storage/backups/backup.xbstream

Avant d'appliquer les journaux lors de la phase de préparation, les fichiers compressés devront être
décompressés à l'aide de xbstream :
Ensuite, utilisez qpress pour extraire chaque fichier se terminant par .qp dans leur répertoire respectif avant
d'exécution -- commande apply-log pour préparer les données MySQL.

$ xbstream -x < /storage/backups/backup.xbstream

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

Dans l'exemple ci-dessous, vous pouvez voir xtrabackup avec gzip parallèle, chiffrement

 /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 4 --stream=xbstream --no-timestamp . | pv -q -L 2m | pigz -9 - | openssl enc -aes-256-cbc -pass file:/var/tmp/cmon-008688-19992-72450efc3b6e9e4f.tmp > /home/ubuntu/backups/BACKUP-3445/backup-full-2018-11-28_213540.xbstream.gz.aes256 ) 2>&1.

Transférer la sauvegarde vers le cloud

Désormais, lorsque votre sauvegarde est compressée et cryptée, elle est prête à être transférée.

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 compartiment de stockage régional nommé mysql-backups-storage dans votre projet actuel.

gsutil mb -c regional -l europe-west1 gs://severalnines-storage/
Creating gs://mysql-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 peuvent être trouvées ici.

aws s3 cp severalnines.sql s3://severalnine-sbucket/mysql_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 ce 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 leur 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.sql --name severalnines_backup

Stockage hybride pour les sauvegardes MySQL et MariaDB

Avec l'industrie croissante du stockage en nuage public et privé, nous avons une nouvelle catégorie appelée stockage hybride. Cette technologie permet aux fichiers d'être stockés localement, les modifications étant automatiquement synchronisées à distance dans le cloud. Une telle approche découle de la nécessité d'avoir des sauvegardes récentes stockées localement pour une restauration rapide (RTO inférieur), ainsi que des objectifs de continuité d'activité.
L'aspect important d'une utilisation efficace des ressources est d'avoir des rétentions de sauvegarde distinctes. 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érentes industries (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 d'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

Lors de la planification d'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
  • Période de conservation des sauvegardes locales
  • Période de conservation des sauvegardes cloud
Rétention de sauvegarde double ClusterControl Fonctionnalités de sauvegarde avancées de ClusterControl pour le cloud, compression parallèle, limite de bande passante réseau, cryptage etc...

Conclusion

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.

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.

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