it-swarm.it

Qual è il modo consigliato per eseguire il backup di un database MySQL / Amazon RDS su S3?

Ho due scopi per questo:

  1. Avere un backup fuori sede in caso di un problema a livello di regione con Amazon Web Services.
  2. Per copiare i dati di produzione da un account di fatturazione di produzione a un account di fatturazione beta.

Attualmente non sembra che Amazon supporti uno di questi due casi di utilizzo.

Ho visto mysqldump e xtrabackup (vedi modulo post) menzionati.

Ho anche visto un processo più complicato (documentato qui )

  1. Un nuovo server RDS nell'account di fatturazione di origine (prod) viene espulso da un backup recente.
  2. Viene creata una nuova istanza EC2 che ha accesso al server RDS nel passaggio 1.
  3. mysqldump viene utilizzato per eseguire un backup di questo database.
  4. Il backup viene copiato in una posizione esterna (S3?).
  5. In un account e/o area separati, viene avviato un nuovo server RDS.
  6. Il dump del database è stato importato.

Suggerimenti e suggerimenti sono apprezzati.

32
Peter Stephens

Il modo consigliato per eseguire il backup di RDS è con backup automatici e Snapshot DB . Gli snapshot DB sono sostanzialmente gli stessi degli snapshot EBS, che sono memorizzati in S3 dietro le quinte, ma sono disponibili solo nella stessa regione.

Se hai bisogno di tolleranza ai guasti tra regioni (buon piano!), Non c'è modo di ripristinare i tuoi dati in n'altra regione senza farlo "nel modo più duro" da un mysqldump. Le alternative sono eseguire il backup utilizzando mysqldump (lento e terribile per qualsiasi set di dati di dimensioni ragionevoli) o impostare il proprio slave basato su EC2 in un'altra regione e eseguire il backup utilizzando qualsiasi metodo disponibile (xtrabackup, snapshot EBS, ecc.). Tuttavia, sei tornato a gestire le tue istanze MySQL, quindi potresti anche abbandonare completamente RDS.

Per quanto mi riguarda, RDS non offre assolutamente alcun vantaggio in alcun modo e molti svantaggi in termini di prestazioni, flessibilità e affidabilità. Vorrei chiederti quale valore ti offre RDS.

23
Aaron Brown

Ho avuto lo stesso problema. La mia soluzione era scrivere un semplice script bash . Tuttavia, è limitato a una singola regione.

Ecco lo script in questione:

#!/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 ora supporta cross-region e cross-account copia di istantanee che ti permetterà di completare i tuoi obiettivi semplicemente usando RDS.

A questo punto è ancora necessario utilizzare un metodo di script di dump per ottenere backup su S3. La capacità di utilizzare S3-IA o Glacier sarebbe buona in termini di risparmi sui costi poiché i costi di backup RDS sono di livello S3 standard o superiore (variano in base al db).

7
Mike Lapinskas