it-swarm.com.de

Was ist die empfohlene Methode zum Sichern einer MySQL / Amazon RDS-Datenbank in S3?

Ich habe zwei Zwecke dafür:

  1. Offsite-Backup bei einem regionalen Problem mit Amazon Web Services.
  2. Kopieren von Produktionsdaten von einem Produktionsabrechnungskonto auf ein Beta-Abrechnungskonto.

Derzeit scheint es nicht so zu sein, dass Amazon einen dieser beiden Anwendungsfälle sofort unterstützt.

Ich habe gesehen, dass mysqldump und xtrabackup (siehe form post) erwähnt wurden.

Ich habe auch einen komplizierteren Prozess gesehen (dokumentiert hier )

  1. Ein neuer RDS-Server im Quellabrechnungskonto (Prod) wird aus einer kürzlich durchgeführten Sicherung hochgefahren.
  2. In Schritt 1 wird eine neue EC2-Instanz gestartet, die Zugriff auf den RDS-Server hat.
  3. mysqldump wird verwendet, um eine Sicherungskopie dieser Datenbank zu erstellen.
  4. Die Sicherung wird an einen externen Speicherort (S3?) Kopiert.
  5. In einem separaten Konto und/oder einer separaten Region wird ein neuer RDS-Server hochgefahren.
  6. Der Datenbankspeicherauszug wird importiert.

Tipps und Vorschläge sind willkommen.

32
Peter Stephens

Die empfohlene Methode zum Sichern von RDS ist automatische Sicherungen und DB-Snapshots . DB-Snapshots sind grundsätzlich dieselben wie EBS-Snapshots, die in S3 hinter den Kulissen gespeichert werden, jedoch nur in derselben Region verfügbar sind.

Wenn Sie eine überregionale Fehlertoleranz benötigen (guter Plan!), Gibt es keine Möglichkeit, Ihre Daten in einer anderen Region wiederherzustellen, ohne dies "auf die harte Tour" von einem mysqldump aus zu tun. Ihre Alternativen sind das Sichern mit mysqldump (langsam und für jeden Datensatz mit angemessener Größe schrecklich) oder das Einrichten eines eigenen EC2-basierten Slaves in einer anderen Region und das Sichern mit einer beliebigen verfügbaren Methode (xtrabackup, EBS-Snapshots usw.). Dann können Sie jedoch wieder Ihre eigenen MySQL-Instanzen verwalten, sodass Sie RDS genauso gut ganz aufgeben können.

Für mein Geld bietet RDS in keiner Weise Vorteile und eine ganze Reihe von Nachteilen in Bezug auf Leistung, Flexibilität und Zuverlässigkeit. Ich würde mich fragen, welchen Wert RDS für Sie hat.

23
Aaron Brown

Ich hatte das gleiche Problem. Meine Lösung bestand darin, ein einfaches Bash-Skript zu schreiben. Es ist jedoch auf eine einzelne Region beschränkt.

Hier ist das fragliche Skript:

#!/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 unterstützt jetzt regionen- und kontoübergreifende Kopieren von Schnappschüssen , mit denen Sie Ihre Ziele einfach mit RDS erreichen können.

Zu diesem Zeitpunkt müssen Sie noch eine Dump-Skriptmethode verwenden, um Backups auf S3 zu erhalten. Die Möglichkeit, S3-IA oder Glacier zu verwenden, wäre im Hinblick auf Kosteneinsparungen gut, da die RDS-Sicherungskosten bei S3 Standard oder höher liegen (variieren je nach Datenbank).

7
Mike Lapinskas