Sollte und wie kann ich meine Datenbank für eine Webanwendung sichern, die auf einem Amazon EC2-Server gehostet wird?

834
Kim Stacks

Ich habe die Amazon EC2- Instanz mit der Ubuntu Server Edition eingerichtet und den LAMP- Stapel darauf installiert . Ich habe eine PHP-Webanwendung unter MySQL erstellt. Ich habe die Webanwendung auf Amazon EC2 getestet und funktioniert.

Ich bin nicht offiziell gestartet, aber ich muss das vor dem Start wissen. Soll ich meine Datenbankdaten sichern? Wenn ja, wie sollte ich es so kostengünstig wie möglich gestalten?

Zuvor habe ich für eine andere Webanwendung ein Perl- oder Bash-Skript geschrieben (kann mich nicht erinnern), das täglich von cron ausgeführt wird .

Das Skript sichert dann die Datenbank in einer einzigen .sqlDatei und sendet sie als E-Mail-Anhang an mein Google Mail-Konto.

Da diese Webanwendung auf Shared Hosting lag, war ich mir ziemlich sicher, dass ich meine Datenbank sichern musste. Meine Dateien befinden sich im Git-Repository, darum mache ich mir keine Sorgen.

Für diese neue Webanwendung in Amazon Web Services (AWS) bin ich unentschieden, weil:

  1. Ich denke nicht, dass dies eine gute Lösung ist, da über E-Mail gesendete Daten nicht sicher sind. Soweit ich mich erinnern kann, gibt es kein SSL, obwohl es eine billige Lösung war. Kostenlos. Nach Datum leicht abrufbar.

  2. Amazon hat es möglicherweise für mich überflüssig gemacht, Backups durchzuführen, weil sie das bereits tun. Ich muss nur wissen, wie ich es im Falle einer Katastrophe wiederherstellen kann ( Holz berühren ).

  3. Ich erlaube Benutzern das Hochladen von Dateien, daher muss ich diese Dateien auch irgendwie sichern. Das weiß ich nicht und habe es noch nie in irgendeiner Form gemacht.

Was ich will: eine tägliche Sicherung meiner Datenbank- und Image-Dateien so kostengünstig wie möglich und eine klare, schrittweise Anleitung, um dies zu implementieren und im Katastrophenfall wiederherzustellen.

Hintergrund:

  • AWS ist mir völlig unbekannt. Wissen Sie nur so viel wie ein Konto einrichten. Das ist alles.

  • << Ein Jahr Erfahrung als Neuling in Ubuntu. Den größten Teil meines Lebens in Windows.

  • Meist intim mit der PHP-Programmierung. Die Beherrschung anderer Programmiersprachen ist aufgrund fehlenden Gebrauchs nicht so gut.

2

2 Antworten auf die Frage

2
Mike Scott

Amazon speichert Ihre Datenbankdateien auf redundantem Speicher, bietet jedoch nur eingeschränkte Informationen zur Konfiguration. Daher müssen Sie sich selbst ein Bild davon machen, ob dies für Ihre Anforderungen ausreichend ist oder nicht. Sie behalten jedoch keine alten Versionen bei, so dass Sie nur vor Hardwareausfällen und nicht vor Benutzerfehlern (die wahrscheinlicher als Hardwareausfälle sind) geschützt werden.

Beachten Sie außerdem, dass die Daten gelöscht werden, wenn sich Ihr EC2-Server in einem Instanzspeicher befindet, wenn der Server jemals gestoppt wurde. Für den dauerhaften Speicher müssen sich Ihre Daten auf einem EBS-Datenträger (Elastic Block Storage) befinden. Sobald es sich auf einem EBS-Volume befindet, können Sie regelmäßige Snapshots (manuell oder automatisiert mithilfe der Amazon-API) erstellen, um dann ein Rollback auf ältere Versionen durchzuführen. Das AWS SDK für PHP ist ziemlich gut und kann hier gefunden werden: http://aws.amazon.com/sdkforphp/ .

Vielen Dank für Informationen zu den regelmäßigen Schnappschüssen. Ich weiß gar nicht, dass es so etwas gibt. Und ja, ich bin schon bei EBS. Ich werde zuerst das AWS SDK durchgehen. Sobald ich es zum Laufen gebracht habe, werde ich Sie als richtige Antwort markieren. Bis dahin werde ich Ihre Antwort vorerst nur verbessern. Kim Stacks vor 13 Jahren 0
1
bwight

Amazon has very many services, sometimes it can get confusing with all the different technologies. Keep in mind that amazon is creating all these services to solve specific problems.

Backing up MySQL in S3 is very common and it's well documented in many blogs. I recommend following the guide here http://agiliq.com/blog/2009/02/automatically-backup-mysql-database-to-amazon-s3-u/

Never assume anything, S3 is designed to a fault tolerant storage device, but that wouldn't stop me from backing up everything locally on my computer or with some other provider. EBS volumes are not reliable enough to be the sole storage device for your backup much less so if your database is also stored on the same disk.

Whatever method you choose I would follow the follow steps when making you backup

  1. Create backup daily
  2. Send backup to S3 (make sure to use the MD5 checksum so you know your backup is good)
  3. Download backup from S3 locally or on another provider not S3
  4. Cleanup old backups using a rolling backup type history
    • Store a backup of the last 7 days
    • Store a backup of the Friday each week for 1 month
    • Store a backup of the last month for 1 year