web-dev-qa-db-fra.com

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

J'ai deux objectifs:

  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 formulaire post) mentionné.

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.

32
Peter Stephens

La méthode recommandée pour sauvegarder RDS est avec sauvegardes automatiques et instantanés DB . 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 ne 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 tout aussi bien abandonner 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.

23
Aaron Brown

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"
10
Jeevan Dongre

AWS RDS prend désormais en charge plusieurs régions et plusieurs comptes copie des 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).

7
Mike Lapinskas