Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Beste DBaaS-Lösung für MySQL

Als beliebteste Open-Source-Datenbank wurde MySQL an vielen Orten implementiert, von kleinen Startups bis hin zu sehr großen Organisationen. Anwendungsfälle reichen von einfachen Website-Anwendungen bis hin zu unternehmenskritischen Umgebungen mit 99,999 % Verfügbarkeitsanforderungen. MySQL erledigt einfach die Arbeit und ist einfach zu handhaben.

Obwohl MySQL relativ einfach zu verwalten ist, läuft es nicht alleine. Es gibt einen gewissen Verwaltungsaufwand – Software muss von Zeit zu Zeit gepatcht werden, die Datenbank muss auf Ausfälle oder Anomalien in Leistung oder Sicherheit überwacht werden, Ausfälle müssen behandelt und wiederhergestellt werden, Backups müssen verwaltet werden … und so weiter Die Liste geht weiter.. Daher sollte es keine Überraschung sein, dass die größten Cloud-Anbieter öffentliche DBaaS-Dienste auf Basis von MySQL anbieten.

Drei Cloud-Anbieter, die MySQL als Service anbieten, sind:

  • Amazon Web Service mit RDS für MySQL
  • Google Compute Engine mit CloudSQL für MySQL
  • Microsoft Azure, Microsoft Azure MySQL

In diesem Blog vergleichen wir die Lösungen dieser Cloud-Anbieter.

MySQL-Version und -Patches

Die neueste Version von MySQL, die in Amazon Web Services (AWS) verfügbar ist, ist MySQL 8.0.20, was der neuesten Version des offiziellen Oracle MySQL (8.0.21 zum Zeitpunkt des Schreiben). Neben der neuesten Version bietet AWS RDS auch die ältere Version von MySQL (Hauptversion 5.5, 5.6 und 5.7), sodass Sie genau die Version bereitstellen können, die mit Ihrer Anwendung kompatibel ist.

In der Google Cloud Platform (GCP) ist die MySQL-Version, die in CloudSQL for MySQL unterstützt wird, immer noch MySQL 5.6 und 5.7, die neueste Nebenversion von Version 5.6 ist 5.6.42, während Version 5.7 die neueste ist Nebenversion ist 5.7.25.

Azure-Datenbank für MySQL unterstützt die Versionen 5.6, 5.7, 8.0, leider stellen sie die Nebenversion (oder die Fehlerbehebungsversion der Datenbank, wie Azure sie nennt) nicht bereit, wenn sie über die Konsole bereitgestellt werden. Um die Version Ihrer MySQL-Serverinstanz zu ermitteln, kann man die SELECT VERSION(); Befehl an der MySQL-Eingabeaufforderung.

Bekannte Probleme und Einschränkungen

Es gibt einige bekannte Probleme und Einschränkungen, die bei der Datenbank als Dienst bestehen, während dies bei MySQL vor Ort oder VMs nicht der Fall ist. Auf RDS sind einige Einschränkungen:

  • MySQL-Schlüsselbund-Plugin wird nicht unterstützt.
  • Die maximale Speichergröße für eine Tabelle beträgt 16 TB, wenn die InnoDB-Speicher-Engine verwendet wird.
  • Es gibt einige Parameter, die bei der Verwendung von RDS besondere Überlegungen erfordern, zB:long_query_time, small_case_table_name.

In CloudSQL für MySQL sind einige Beschränkungen und Probleme bekannt, die in verschiedene Kategorien unterteilt sind, zum Beispiel:Probleme mit der Dauerhaftigkeit und Verfügbarkeit von Daten, Probleme mit Instanzverbindungen, administrative Probleme und Probleme mit dem Exportieren und Importieren von Daten. Jede Kategorie hat spezifische Probleme und Einschränkungen, einige davon sind: 

  • Lange laufende Vorgänge können nicht abgebrochen oder gestoppt werden.
  • Instanznamen können nicht sofort verwendet werden, nachdem wir die Instanz gelöscht haben.
  • Die DEFINER-Klausel führt dazu, dass der Import fehlschlägt.

Azure-Datenbank für MySQL hat einige Einschränkungen und bekannte Probleme im Zusammenhang mit Upgrades, Berechtigungen und der Speicher-Engine. Einige der Details sind:

  • Größere Datenbank-Upgrades werden derzeit nicht unterstützt. Für ein größeres Upgrade müssen Sie einen Speicherauszug erstellen und auf einem neuen Server wiederherstellen.
  • Azure-Datenbank für MySQL unterstützt derzeit InnoDB- und Memory-Speicher-Engines.
  • Die Systemdatenbank in der Azure-Datenbank für MySQL ist schreibgeschützt. Sie können nichts in der MySQL-Systemdatenbank ändern.

Sie müssen die Einschränkungen und bekannten Probleme für MySQL bei jedem Cloud-Anbieter überprüfen und mit Ihren Anforderungen vergleichen, um zu verstehen, ob dies Auswirkungen auf die Anwendung hat.

Sichern und Wiederherstellen

Amazon RDS for MySQL führt das automatische Backup gemäß dem Zeitplan durch, es erstellt einen Volume-Snapshot der Datenbankinstanz. Der Standardwert für die Aufbewahrungsdauer der Sicherung beträgt 7 Tage. Darüber hinaus lädt RDS Ihre Transaktionsprotokolle für Datenbankinstanzen alle 5 Minuten auf S3 hoch, um den Zeitpunkt der Wiederherstellung beizubehalten.

Sie können eine Sicherung zu einem bestimmten Zeitpunkt wiederherstellen, indem Sie innerhalb der Aufbewahrungsfrist der Sicherung eine neue Instanz erstellen. Sie können die späteste wiederherstellbare Zeit auswählen, um die spätestmögliche Zeit wiederherzustellen, oder Sie können eine benutzerdefinierte Zeit auswählen, um eine bestimmte Zeit für die Wiederherstellung der Daten zu definieren.

Sicherung, die in CloudSQL für MySQL stattfindet, ist inkrementell. Es enthält nur die Änderungen der Daten nach der vorherigen Sicherung. Die älteste Sicherung entspricht Ihrer aktuellen Datenbankgröße. Wenn die älteste Sicherung entfernt wird, erhöht sich die Größe der folgenden ältesten Sicherung, sodass die vollständige Sicherung noch vorhanden ist.

Die automatische Sicherung erfolgt täglich und wird standardmäßig 7 Tage lang aufbewahrt. CloudSQL speichert Sicherungsdaten aus Redundanzgründen in zwei Regionen. Eine Region kann sich in derselben Region befinden, in der die Instanz ausgeführt wird, und die andere in einer anderen Region.

Point-in-Time-Wiederherstellung in CloudSQL erstellt eine neue Instanz, die Instanzeinstellung erbt mit der Quelle der Instanz. Bevor Sie die Point-in-Time-Wiederherstellung durchführen, vergewissern Sie sich bitte, dass Sie die binäre Protokollierung bereits aktiviert haben. Wenn Sie eine Point-in-Time-Wiederherstellung durchführen, müssen Sie nur den Namen des Binärprotokolls und die Wiederherstellungsposition eingeben.

Azure-Datenbank für MySQL erstellt Sicherungskopien von Datendateien und Transaktionsprotokolle. Der Sicherungsplan selbst ist eine Kombination aus vollständiger und differentieller Sicherung für Server mit einer Speichergröße von bis zu 4 TB, während eine Snapshot-Sicherung für Speicherserver mit maximal 16 TB erfolgt.

Die vollständige Sicherung wird einmal pro Woche ausgeführt, während die differenziellen Sicherungen zweimal täglich erfolgen. Die Standardaufbewahrungsdauer des Backups beträgt 7 Tage, aber Sie können die Aufbewahrung jederzeit auf bis zu 35 Tage konfigurieren.

Es gibt zwei Arten der Wiederherstellung in der Azure-Datenbank für MySQL:

  • Wiederherstellung zu einem bestimmten Zeitpunkt, verfügbar als redundante Sicherungsoption, oder Sie können einen neuen Server in derselben Region wie Ihr ursprünglicher Server erstellen und die vollständige Sicherung und das Transaktionsprotokoll zum Wiederherstellen der Daten verwenden.
  • Geo-Wiederherstellung, verfügbar, wenn Sie eine Geo-Redundanz in der Speicheroption konfigurieren. Damit können Sie Ihr Backup in verschiedenen Regionen wiederherstellen.

Bitte beachten Sie, dass weder AWS, Google noch Azure Ihnen erlauben, Ihre Backups herunterzuladen.

Datenbanküberwachung

RDS bietet Überwachungsintegration mit CloudWatch, Sie können einige Metriken wie CPU-Auslastung, DB-Verbindungen, Schreib-IOPS und Lese-IOPS, Schreibdurchsatz und Lesedurchsatz, Schreib- und Leselatenz sehen. Sie können einen Alarm erstellen, um die Warnung von CloudWatch basierend auf einer Metrikkategorie auszulösen, und einfach den Schwellenwert definieren.

Ähnlich wie RDS lässt sich GCP CloudSQL auch in Stackdriver integrieren, Sie können Metriken sehen wie:CPU-Auslastung, Speicherauslastung, aktive Verbindungen, Transaktionen/s, ein-/ausgehende Bytes, Schreib- und Lesevorgänge, Replikationsverzögerung .

Azure-Datenbank für MySQL bietet einige Metriken, z. Aktive Verbindungen, CPU-Prozent, fehlgeschlagene Verbindung, E/A-Prozent, Arbeitsspeicher in Prozent, Replikationsverzögerung, Speicher in Prozent, verwendeter Speicher. Sie können auch Warnungen in Azure-Datenbanken für MySQL erstellen, die Metriken auswählen und die Regeln definieren.

Fazit

Basierend auf 4 Schlüsselbereichen; MySQL-Version und -Patches, bekannte Probleme und Einschränkungen, Sicherung und Wiederherstellung, Datenbanküberwachung, meiner Meinung nach ist Amazon RDS für MySQL immer noch die beste Datenbank als Service für MySQL. Es bietet detaillierte Versionen und Patches, sehr begrenzte Probleme und Einschränkungen im Vergleich zu anderen. Es ist eine bequeme Möglichkeit, MySQL auszuführen, mit dem Vorbehalt, dass der Preis für den Dienst in den letzten Jahren gestiegen ist.