Was sind die jeweiligen Vor- und Nachteile von Amazon RDS gegenüber EC2 mit MySQL? [geschlossen]


132

Ich erkenne ein paar grundlegende Unterschiede zwischen den beiden, dh

  1. EC2 wird billiger

  2. RDS Ich müsste keine Wartung durchführen

Abgesehen von diesen beiden gibt es Vorteile beim Ausführen meiner Datenbank über RDS im Gegensatz zu einem separaten EC2-Server, der als MySQL-Server fungiert. Werden beide unter der Annahme ähnlicher Instanzgrößen dieselben Einschränkungen hinsichtlich der Fähigkeit haben, eine Last zu bewältigen?

Um Ihnen ein bisschen mehr Informationen über meine Verwendung zu geben, habe ich eine Datenbank, nichts zu groß oder so (größte Tabelle 1 Million Zeilen), nur ein hohes SELECT-Volumen.


Fügen Sie einfach die konsistente Sicherungsmethode ec2 hinzu. alestic.com/2009/09/ec2-consistent-snapshot Ich verwende dieses Tool mit einem 300-GB-Server und rund 5.000 Datenbanken. Zu diesem Zeitpunkt dauert es bei einem 3000 IOPS-Volume ungefähr 1,2 Stunden, um MySQL zu starten, da es von einem unsauberen Herunterfahren ausgeht, sodass MySQL jede Tabelle scannen muss.
Jozwikjp

Unter dba.stackexchange.com/questions/34525/… gibt es ein Cross-Site-Duplikat , das einige gute Antworten enthält.
Mark Amery

Antworten:


135

Dies ist eine einfache Frage mit einer sehr komplizierten Antwort!

Kurz gesagt: EC2 bietet maximale Leistung, wenn Sie sich für ein RAID0-EBS entscheiden. Das Ausführen von RAID0 EBS erfordert einen erheblichen Wartungsaufwand, zum Beispiel:

http://alestic.com/2009/06/ec2-ebs-raid

http://alestic.com/2009/09/ec2-consistent-snapshot

EC2 ohne RAID0 EBS bietet eine beschissene E / A-Leistung, daher ist dies nicht einmal wirklich eine Option.

RDS bietet sofort eine sehr gute (wenn auch nicht maximale) Leistung. Die Verwaltungskonsole ist fantastisch und es ist einfach, Instanzen zu aktualisieren. Hochverfügbarkeit und schreibgeschützte Slaves sind nur einen Klick entfernt. Es ist wirklich super.

Kurze Antwort: Gehen Sie mit RDS. Immer noch auf dem Zaun? Geh mit RDS !!! Wenn Sie gerne Kopfschmerzen haben und sich auf maximale Leistung einstellen, können Sie EC2 + EBS RAID 0 in Betracht ziehen. Vanilla EC2 ist eine schreckliche Option für MySQL-Hosting.


1
Gute Antwort. Dies ist genau das, was ich will: aws.typepad.com/aws/2010/10/… - Danke, dass Sie mich in die richtige Richtung geführt haben
Macgyver

Gute Antwort. Wie gehen Sie mit den Ausfallzeiten von 4 Stunden pro Woche um?
Tihom

8
Eine wichtige Information über das 4-Stunden-Wartungsfenster ist, dass Ihr Server 4 Stunden pro Woche nicht ausfällt! Das ist genau dann, wenn sie Wartungsarbeiten durchführen, wenn Wartungsarbeiten durchgeführt werden müssen. Ich habe RDS-Server monatelang ohne Ausfallzeiten laufen lassen.
Efalcao

2
Wir haben RDS-Server seit JAHREN ohne Ausfallzeiten. Bei einem größeren Ausfall (ca. 6 Stunden) normalisierte sich alles wieder, sobald sich AWS erledigt hatte. (Ich sollte darauf hinweisen, dass dies eine Multi-AZ-Instanz war, aber kein Failover auf die Sicherung möglich war.)
cjm2671

1
@paulkon - Wir führen kein Failover auf Offsite-Replikate durch, wir verwenden das RDS-Failover, da sonst die Beförderung usw. zum neuen Master schwierig wird. Die Offsite-Replikate sind hauptsächlich für DR-Backups außerhalb der Cloud sowie für die Lese- / Schreibaufteilung für Berichtsumgebungen vorgesehen (unsere Anwendungsebene kennt sie). HTH
Ross

24

In diesem Beitrag gibt es einen hervorragenden Benchmark zwischen:

  • Ausführen von MySql auf einem kleinen EC2 + EBS
  • Ausführen von MySql auf einem kleinen EC2 + EBS + angepassten MySql-Parametern
  • Ein kleines RDS

Der Benchmark ist sehr gut, da er nicht nur unter idealen Bedingungen (nur ein Thread), sondern auch in realistischeren Szenarien mit 50 Threads in der Datenbank fokussiert ist.


2
Es ist schön, Benchmarks zu veröffentlichen, aber in gutem Glauben gab der Autor am Ende zu, dass er Innodb nicht richtig eingestellt hat (der große Parameter, der geändert werden muss, ist natürlich innodb_buffer_pool_size .... was er nicht tat)
phil_w

12

RDS ist kein Hochverfügbarkeitssystem. Lesen Sie das Kleingedruckte in der RDS-FAQ. Während eines Failover-Ereignisses kann das Failover bis zu 3 Minuten dauern. Zusätzliches Amazon entscheidet, dass es Ihre rds-Instanz "aktualisieren" und an diesem Punkt ein Failover durchführen muss, wodurch Ihre Datenbank für "bis zu 3 Minuten" heruntergefahren wird (unserer Erfahrung nach kann dies länger dauern).

Die Hochverfügbarkeit von RDS unterscheidet sich stark von der Master-Master- oder Master-Slave-Replikation und ist viel langsamer. Sie verwenden keine MySQL-Replikation, sondern eine Art EBS-Replikation. In einer Failover-Situation werden die EBS auf dem Backup-Computer bereitgestellt, MySQL gestartet, darauf gewartet, dass MySQL die Fehlerbehebung durchführt (hoffentlich wurde nichts zu stark beschädigt), und dann ein DNS-Switch ausgeführt.

Ich hoffe das hilft dir bei deiner Bewertung.


1
Das Hinzufügen eines gelesenen Slaves auf einer Datenbank mit 40 GB Daten dauerte für mich über 20 Minuten. Dies und die Kosten und das Fehlen von Read-Slaves in regulärem ec2 und / oder Offsite, die nicht verfügbar sind, sind für mich so gut wie kein Anfänger. Ich würde sagen, RDS ist gut für kleine Geschäfte, die keine echten Hochverfügbarkeits- und Failover-Antwortzeiten benötigen. Es ist mehr, einen DBA zu eliminieren, als IMHO.
Ross

Gute Nachrichten hier (März 2020). Mit Aurora ist es viel besser geworden. Es wird immer noch kein Master-Slave-System ausgeführt, aber da ein neues "Cloud-basiertes" Speichersystem-Failover erstellt wurde, ist es jetzt sehr schnell. Außerdem bietet es schnelle Schnappschüsse und Backups. Aurora hat wirklich viele der Mängel von RDS MySQL behoben.
Jeff Whiting

6

Wir haben uns für die Verwendung von EC2-MySQL-Instanzen entschieden, da wir ein hohes Lesevolumen haben und eine Master-Slave-Replikation benötigen. Natürlich können Sie mehrere RDS-Instanzen hochfahren und die MySQL-Replikation zwischen ihnen selbst einrichten, aber wir verwenden Scalr.net, das dies mithilfe von EC2-Instanzen für Sie verwaltet.

Grundsätzlich teilen wir Scalr nur mit, wie viele MySQL-Instanzen wir benötigen, um sie aufrechtzuerhalten, die Einrichtung der Replikation zu automatisieren, das automatische Failover der Slave-Heraufstufung zum Master durchzuführen, wenn der Master beendet wird usw. Es werden sowohl SQL-Dump-Backups als auch EBS-Volume-Snapshots von ausgeführt der Meister. Wenn ein neuer Slave erstellt werden muss, wird automatisch vorübergehend ein EBS-Volume des letzten Master-Snapshots bereitgestellt, um die Slave-Datenbank zu initialisieren, und anschließend wird die Replikation an der entsprechenden Stelle gestartet. Alle zeigen und klicken :) (und nein, ich arbeite nicht für Scalr oder so. Scalr ist als Open Source verfügbar, wenn Sie ihren Service nicht nutzen möchten)


Beachten Sie, dass Amazon seit der Veröffentlichung der obigen Antwort eine explizite Unterstützung für Lesereplikate für RDS-Instanzen eingeführt hat (derzeit nur MySQL).
DavidJ

5

Bezüglich der Frage zum Wartungsfenster. Wenn Sie Multi-AZ verwenden, erstellt RDS ein Standby-Replikat in einer anderen Verfügbarkeitszone, sodass keine Ausfallzeiten für die Wartung anfallen und Sie sich vor einem Zonenausfall schützen.

Das habe ich in der nächsten Woche vor. Natürlich wird es dich mehr kosten, aber ich habe das noch nicht herausgefunden.


4

MySQL auf EC2 gegen RDS MySQL

Vorteile von MySQL bei der EC2 Amazon EC2 Inter Region Replication

Kopieren Sie Snapshots in Amazon EC2-Regionen

RAID 0 mit EBS Striping in MySQL EC2

Auf MySQL unter EC2 können mehr als 3 TB Festplattenspeicher (Sie benötigen diesen für Ihre Größe nicht) angeschlossen werden.

Nachteile von MySQL auf EC2

Konfiguration, Überwachung und Wartung im Vergleich zu RDS

In RDS verfügbare Zeitpunktsicherungen

IOPS kleiner als RDS MySQL (auch nach RAID 0) derzeit 10800 mit 6 Festplatten für MySQL unter EC2, während 12500 IOPS 16 KB unter RDS MySQL


4

Ich habe RDS einige Monate lang ausprobiert und hier sind einige Probleme, die ich habe:

  1. Die Verwendung des SQL-Profilers ist schwierig. Da Sie den Profiler nicht direkt mit dem Server verbinden können, müssen Sie einige gespeicherte Prozeduren ausführen, um eine Protokolldatei zu erstellen, die Sie analysieren können. Sie bieten zwar einige Vorschläge dazu, sind aber alles andere als benutzerfreundlich. Ich würde nur empfehlen, dass Sie einen zertifizierten SQL-Experten für diese Art von Arbeit beauftragen.

  2. Während Amazon Ihre Instanz sichert, können Sie keine einzelne Datenbank wiederherstellen. Ich habe eine Web-App mit mehreren separaten kundenspezifischen Datenbanken. Meine Lösung bestand darin, eine EC2-Instanz mit darauf ausgeführtem SQL zu starten, um sie an die RDB-Produktionsdatenbank anzuhängen, die Daten zu importieren und sie dann auf der EC2-Instanz zu sichern. Die andere Lösung bestand darin, ein Drittanbieter-Tool zu verwenden, das ein umfangreiches SQL-Skript (auf dem App-Server) erstellt, mit dem das Schema neu erstellt und die Daten wieder an einem Wiederherstellungspunkt gespeichert werden.


1

Ich hatte dieses Wochenende die gleiche Frage. Für RDS gibt es ein Ausfallzeitfenster von 4 Stunden pro Woche, in dem Wartungsarbeiten durchgeführt werden. RDS schien teurer zu sein, wenn Sie mit einer Mikroinstanz von EC2 davonkommen können. (Dies gilt für Testinstanzen mit minimalem Datenverkehr.) Ich konnte auch die Zeitzone der RDS-Instanz nicht ändern, da ich keine Berechtigung habe.

Ich schaue jetzt tatsächlich auf http://xeround.com/, das MySQL auf EC2 von einem anderen Unternehmen ist. Sie verwenden InnoDB nicht, sondern haben eine eigene Engine namens IDG. Ich fange gerade an, das zu untersuchen, aber sie befinden sich in BETA und werden 500 MB Speicherplatz bieten.


Beachten Sie, dass das Wartungsfenster nicht jede Woche ausfällt. Es ist nur die Zeit, in der Wartungsarbeiten durchgeführt werden, wenn sie benötigt werden: aws.amazon.com/rds/faqs/#12 Siehe auch @ efalcaos Kommentar zu seiner Antwort oben.
mpdaugherty

Sieht wirklich cool aus, aber wirklich $$, wenn Sie eine Datenmenge auf xeround.com haben
csharp4me
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.