Quelle est la méthode recommandée pour sauvegarder une base de données MySQL / Amazon RDS sur S3?

31

J'ai deux objectifs pour cela:

  1. Pour avoir une sauvegarde hors site en cas de problème régional avec Amazon Web Services.
  2. Pour copier les données de production d'un compte de facturation de production vers un compte de facturation bêta.

Actuellement, il ne semble pas qu'Amazon prenne en charge l'un de ces deux cas d'utilisation prêts à l'emploi.

J'ai vu mysqldump et xtrabackup (voir le formulaire ) mentionnés.

J'ai également vu un processus plus compliqué (documenté ici )

  1. Un nouveau serveur RDS dans le compte de facturation source (prod) est issu d'une sauvegarde récente.
  2. Une nouvelle instance EC2 est lancée et a accès au serveur RDS à l'étape 1.
  3. mysqldump est utilisé pour effectuer une sauvegarde de cette base de données.
  4. La sauvegarde est copiée vers un emplacement hors site (S3?).
  5. Dans un compte et / ou une région séparés, un nouveau serveur RDS est activé.
  6. Le vidage de la base de données est importé.

Les conseils et suggestions sont appréciés.

Peter Stephens
la source

Réponses:

22

La méthode recommandée pour sauvegarder RDS consiste à effectuer des sauvegardes automatiques et des instantanés de base de données . Les instantanés DB sont essentiellement les mêmes que les instantanés EBS, qui sont stockés dans S3 en arrière-plan, mais ne sont disponibles que dans la même région.

Si vous avez besoin d'une tolérance aux pannes entre régions (bon plan!), Il n'y a aucun moyen de restaurer vos données dans une autre région sans le faire "à la dure" à partir d'un mysqldump. Vos alternatives sont de sauvegarder en utilisant mysqldump (lent et terrible pour tout ensemble de données de taille raisonnable), ou de configurer votre propre esclave basé sur EC2 dans une autre région et de le sauvegarder en utilisant n'importe quelle méthode disponible (xtrabackup, instantanés EBS, etc.). Cependant, vous êtes de retour à la gestion de vos propres instances MySQL, vous pouvez donc aussi bien abandonner complètement RDS.

Pour mon argent, RDS n'offre absolument aucun avantage en aucune façon et de nombreux inconvénients en termes de performances, de flexibilité et de fiabilité. Je voudrais vous demander quelle valeur RDS vous apporte.

Aaron Brown
la source
Pour mes besoins actuels, mysqldump peut fonctionner correctement. Je ne m'attends pas à des ensembles de données massifs et je n'ai généralement pas besoin que les données soient déplacées trop rapidement. J'espère que RDS prendra en charge une fonctionnalité pour faire tourner un nouveau serveur à partir d'un instantané dans un autre compte. Une autre fonctionnalité utile serait d'importer / exporter les instantanés d'Amazon à l'aide de S3 ou de leur serveur d'importation / exportation. Quoi qu'il en soit, merci pour la réponse.
Peter Stephens
4
Les instantanés RDS peuvent désormais être copiés dans d'autres régions. Voir cette annonce et cette documentation pour plus de détails.
shelley
9

J'ai eu le même problème. Ma solution a été d'écrire un simple script bash . Il est cependant limité à une seule région.

Voici le script en question:

#!/bin/bash
NOWDATE=`date +%Y-%m-%d`
BACKUPNAME="$NOWDATE.sql.gz"

echo "Creating backup of database finances to $BACKUPNAME"
mysqldump user=user password=password database_name | gzip -9 > $BACKUPNAME

echo "Succesfully created database backup"

echo "Uploading backup to Amazon S3 bucket…"
s3cmd put $BACKUPNAME s3://path/to/file/$BACKUPNAME

echo "Successfully uploaded backup to S3"

echo "Deleting backup file…"
rm $BACKUPNAME

echo "Done"
Jeevan Dongre
la source
Je recommande fortement --single-transaction lors de l'exécution de mysqldump
user1250
7

AWS RDS prend désormais en charge la copie entre régions et entre comptes d'instantanés qui vous permettra d'atteindre vos objectifs en utilisant simplement RDS.

Vous devez toujours utiliser une méthode de script de vidage pour obtenir des sauvegardes sur S3 à ce stade. La possibilité d'utiliser S3-IA ou Glacier serait bonne en termes d'économies car les coûts de sauvegarde RDS sont au standard S3 ou plus (varient selon la base de données).

Mike Lapinskas
la source
1
Il existe une limite logicielle de 100 instantanés manuels par région et par compte.
Jude