Ich bin im Allgemeinen ein großer AWS-Fan ... aber RDS, nicht so sehr.
@RolandoMySQLDBA hat darauf hingewiesen, dass einige ziemlich gute Punkte dagegen sprechen.
Der einzige Vorteil, den ich in RDS im Vergleich zu MySQL in EC2 sehe, ist die Möglichkeit, Schnappschüsse, Klone und Wiederherstellungen zu erstellen, die jedoch bei weitem nicht ausreichen, um den Verlust an Kontrolle und Flexibilität auszugleichen Rechtfertigen Sie mit Sicherheit nicht, dass der Preis höher ist. RDS ist in mancher Hinsicht sexy, aber Sie können letztendlich nicht vertrauen, was Sie letztendlich nicht reparieren können, weil Sie nicht an alle beweglichen Teile gelangen können.
Ich mag es nicht, kein SUPER
Privileg zu haben. Ich mag es nicht, das Fehlerprotokoll nicht abschließen zu können. Ich mag es nicht, nicht "top" oder "iostat" auf meinem Datenbankserver ausführen zu können, um zu sehen, wie die Kerne und Laufwerke die Last genießen. Ich mag es nicht, keinen Zugriff auf die Verbundspeicher-Engine zu haben. Ich mag den Gedanken nicht, für einen Hot-Standyby-Backup-Master-Rechner (Multi-AZ) zu bezahlen, den ich nicht einmal als Lesereplikat nutzen kann. Sicher, es gibt absolut vernünftige Erklärungen, warum alle diese Einschränkungen vorhanden sein müssen, damit MySQL erfolgreich verpackt und als RDBMS-in-a-Box verkauft werden kann. Die einzige Sache ist, dass RDBMS-in-a-Box eine ganze Reihe von Problemen "löst" , die ich nicht habe ... und sich mir in den Weg stellt und neue Probleme verursacht.
Aber der absolute Deal-Breaker für mich bei RDS ist das völlige Fehlen des Zugriffs auf die Binärprotokolle und die Replikation. Binlogs, insbesondere zeilenbasierte, sind ein fantastisches Wiederherstellungstool für kleinere Katastrophen, aber sie helfen Ihnen nicht, wenn Sie nicht auf sie zugreifen können. Möchten Sie einen lokalen Server in Ihrem Büro als Lesereplikat Ihrer Produktionsdatenbank in RDS konfigurieren? Entnehmen Sie lokalen Backups, haben Sie Berichte für die Notfallwiederherstellung parat, sollte etwas Undenkbares mit Ihren Daten geschehen, die in RDS gespeichert sind? Das ist eine Idee, die offensichtlich und brillant zugleich ist.
Hoppla, leider ist kein direkter Zugriff auf die Replikation verfügbar. Sicher, Sie können für gelesene Replikate bezahlen ... aber nur für andere RDS-Instanzen. Kein Wertversprechen in meinem Buch.
Update: Eine wesentliche Änderung in RDS für MySQL 5.6
Ich ziehe es immer noch meinen eigenen Server (auch in EC2) läuft im Gegensatz RDS für eine Reihe von Gründen, einschließlich der Mangel an Unterstützung für zu laufen Benutzerdefinierte Funktionen , die Unfähigkeit , die verwenden Federated Storage Engine , und die Unfähigkeit zu haben , die eine zusätzlicher Anschluss für den Notfallzugang verfügbar ... jedoch ...
Amazon hat eine wesentliche Änderung in MySQL 5.6 für RDS vorgenommen, mit der einer meiner wichtigsten Einwände beseitigt wird - vielleicht mein größter Einwand: Auf die Binärprotokolle kann jetzt zugegriffen werden, und Sie können eine Nicht-RDS-Instanz als Slave ausführen oder andere Dienstprogramme mit dem verbinden Server, der den Binlog-Stream gelesen hat.
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html
Offiziell wird in der Dokumentation angegeben, dass diese Informationen verfügbar gemacht werden, damit Sie einen Slave für die Live-Migration einrichten können. Sie synchronisieren den fremden zukünftigen Masterserver von der vorhandenen RDS-Instanz mithilfe von mysqldump
und verbinden ihn dann als Slave mit RDS Sie können einen Live-Feed mit Updates über den Replikationsdatenstrom abrufen, bis Ihre Anwendung auf den neuen Master migriert wurde. Inoffiziell können Sie dies jedoch fortlaufend tun, sofern Sie nicht erwarten, dass sie Sie unterstützen. scheint mir vernünftig.
Dies wurde kürzlich in einem Webinar in einem Gespräch bestätigt, das gegen 56:45 Uhr beginnt:
"Sie können es auf unbestimmte Zeit in einem replizierten Zustand halten ...
"... solange Sie die Verantwortung für die Pflege der Replikation übernehmen ..."
"Wir hindern Sie nicht daran, eine fortlaufende Replikation durchzuführen, wenn Sie dies wünschen."
Diese neue Funktion genügte mir, um meinen generellen Einwand gegen die Verwendung von RDS in unseren öffentlich zugänglichen MySQL-Instanzen mit Website-Unterstützung zu verwerfen, in denen wir FEDERATED
oder einige der anderen Dinge nicht so häufig oder überhaupt nicht verwenden.
Deshalb bin ich immer noch nicht dafür, aber ich bin nicht länger dagegen, da ich durch einen Live-Stream der Binärprotokolle letztendlich wieder die Kontrolle über die Daten in Echtzeit habe und die Verantwortung dafür habe, dass keine Transaktionen getätigt werden verloren in einem katastrophalen Ausfall ist zurück bei mir, weil ich als DBA wieder die Kontrolle habe - genau so will ich es haben. Wenn Sie einen Drittanbieter beauftragen, mit den Fingern darauf zu zeigen oder eine Klage gegen ihn einzureichen, werden Ihre verlorenen Daten nicht zurückerhalten, wenn sie in einem schwarzen Loch in einer Black Box verschwinden.
Das Management scheint die "Idee" von RDS zu mögen und erhebt keine Einwände gegen den Kostenunterschied. Deshalb starten wir jetzt alle neuen Websites mit RDS dahinter.
Die Point-and-Click-Point-in-Time-Wiederherstellung ist eine nette Funktion in RDS. Sie verändert oder stört Ihren vorhandenen Computer nicht. Stattdessen wird mithilfe der zuvor erstellten Sicherung eine völlig neue Instanz gestartet am nächsten zum ausgewählten Zeitpunkt und wendet dann die erforderlichen Binlogs an, um den neuen Computer auf den von Ihnen angegebenen Zeitpunkt zu verschieben.
In diesem Zusammenhang, aber in der anderen Richtung, ist es jetzt auch möglich, eine ähnliche Strategie zu verwenden, um eine Live-MySQL-Datenbank in RDS zu migrieren. Sie können einen RDS-Master anschließen (wahrscheinlich ist dies in der Regel ein neu implementierter Master) Instanz) als Slave eines vorhandenen Systems, sodass die RDS-Instanz zum Zeitpunkt der Migration die Live-Version der Daten hat. Im Gegensatz zum Zugriff auf die RDS-Binlogs für die ausgehende Replikation, die nur in 5.6 funktioniert, wird die eingehende Replikation in RDS ab 5.5.33 und 5.6.13 unterstützt.