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

Der beste Weg, MySQL in Azure Cloud zu hosten

Möchten Sie mit der weltweit beliebtesten Open-Source-Datenbank beginnen und fragen sich, wie Sie Ihr MySQL-Hosting einrichten sollen? So viele verwenden standardmäßig Amazon RDS, wenn MySQL in Azure Cloud außergewöhnlich gut abschneidet. Obwohl Microsoft Azure eine verwaltete Lösung, Azure Database, anbietet, weist die Lösung einige wesentliche Einschränkungen auf, die Sie kennen sollten, bevor Sie Ihre MySQL-Bereitstellungen migrieren. In diesem Beitrag skizzieren wir die beste Methode zum Hosten von MySQL auf Azure, einschließlich verwalteter Lösungen, Instanztypen, Hochverfügbarkeitsreplikation, Sicherung und Datenträgertypen zur Optimierung Ihrer Cloud-Datenbankleistung.

MySQL-DBaaS im Vergleich zu selbstverwaltetem MySQL

Wenn Sie zwischen Selbstverwaltung und einer MySQL Database-as-a-Service (DBaaS)-Lösung abwägen, sollten Sie zuerst berücksichtigen, welche internen Ressourcen Ihnen zur Verfügung stehen. Wenn Sie dies lesen, kennen Sie wahrscheinlich bereits die Größenordnung der betrieblichen Aufgaben, die mit der Wartung einer Produktionsbereitstellung verbunden sind, aber für eine kurze Zusammenfassung gibt es Bereitstellung, Deprovisionierung, Master-Slave-Konfigurationen, Backups, Skalierung, Upgrades, Protokollrotationen, Betriebssystem-Patching , und Überwachung, um nur einige zu nennen.

Ein interner MySQL-Experte oder ein Team von DBAs, abhängig von Ihrer Anwendungsgröße, kann diese mit Ihrer Organisation sicherlich für Sie erledigen, aber es stellt sich die Frage, worauf Sie die Bemühungen Ihres Teams konzentrieren möchten . Viele entscheiden sich für den Wechsel zu MySQL DBaaS, um diese zeitaufwändigen Aufgaben zu automatisieren, damit sie sich mehr auf die Entwicklung und Optimierung ihrer Anwendungsdatenbanken konzentrieren können. Ein gutes Beispiel wäre die langsame Abfrageanalyse. Während fast jeder DBaaS ein MySQL Slow Query Analyzer-Tool anbietet, um problematische Abfragen zu identifizieren, erfordert diese Aufgabe dennoch menschliches Geschick und Intuition, um zu bestimmen, wie diese Abfragen optimiert werden können, die sich auf die Anwendungsleistung auswirken.

Egal, ob Sie ein Start-up-Unternehmen oder ein Fortune-500-Unternehmen sind, Sie werden feststellen, dass sich viele Organisationen für die Nutzung eines DBaaS entscheiden, um die Zeit ihrer DBAs zu optimieren, während die gleichen Geschäftstypen und -größen vorhanden sind entscheiden Sie sich auch dafür, bei der internen Selbstverwaltung zu bleiben. Für viele Unternehmen hängt die Entscheidung weitgehend von der Anpassung und Kontrolle ab. Aus diesem Grund warnen wir davor, standardmäßig auf Azure Database oder den AWS-Konkurrenten Amazon RDS zu setzen, da diese Ihnen nicht erlauben, den MySQL-Superuser-Zugriff oder sogar den SSH-Zugriff auf Ihre Computer zu behalten. Darüber hinaus ist die Möglichkeit, Ihr Bereitstellungs-Setup anzupassen, stark eingeschränkt, z. B. die Instance-Typen, RAM, Festplattengröße oder IOPS, die Sie verwenden können. Im Folgenden erfahren Sie mehr über die besten Instance-Typen und Datenträger, die Sie verwenden können, und Sie können sich diesen Vergleich von MySQL-Anbietern ansehen, um die Vorteile und Einschränkungen der vier wichtigsten verwalteten MySQL-Lösungen, ScaleGrid, Compose, Azure Database und Amazon RDS, zu sehen.

Bereitstellung mit hoher Verfügbarkeit

Wenn Sie in der Produktion bereitstellen, sollten Sie MySQL immer als Master-Slave-Bereitstellung einrichten. Eigenständige Bereitstellungen sind ein einzelner Knoten ohne Replikation und sollten wirklich nur für Entwicklungs- oder Testumgebungen verwendet werden. Mit Master-Slave-Bereitstellungen können Sie Hochverfügbarkeit konfigurieren, sodass Sie beim Ausfall eines Ihrer Knoten ohne Ausfallzeit auf einen Slave umschalten können. Dies wird normalerweise entweder als 3-Knoten-Master-Slave-Slave oder als 2+1-Knoten-Master-Slave-Quorum eingerichtet. Der Vorteil der Verwendung eines Quorums ist, dass es eine kostengünstigere Alternative ist, aber der Nachteil ist, dass Sie nur 2 datentragende Knoten haben, da der andere als Quorum-Knoten fungiert, um den besten Failover-Kurs zu bestimmen. Wenn Ihre Anwendung vom Slave lesen kann, müssen Sie eine Leseskalierung vornehmen, damit sie dieselben Daten mit minimaler Verzögerung vom Cluster-Volume zurückgeben.

Der beste Weg, MySQL in Azure Cloud zu hostenClick To Tweet

Wenn Sie eine MySQL-Master-Slave-Konfiguration verwenden, empfehlen wir die Einrichtung einer halbsynchronen Replikation, um Ihre Datenintegrität mit Datenredundanz zu verbessern. Dadurch wird sichergestellt, dass bei erfolgreicher Rückgabe eines Commit die Daten sowohl im Master als auch im Slave vorhanden sind, sodass Ihr MySQL-Master im Falle eines Ausfalls eines Rechenzentrums ohne Datenverlust auf einen Slave umschalten kann. Sie können dies entweder mit asynchroner oder semisynchroner Replikation tun und erfahren Sie mehr darüber in unserem Blogbeitrag MySQL High Availability Explained – Part II.

Wie konfigurieren wir Hochverfügbarkeit für MySQL in Azure? Wir müssen unsere Slave-Instanzen auf verschiedene Azure-Verfügbarkeitszonen (AZ) verteilen. Wir möchten also sicherstellen, dass wir eine Azure-Region mit mindestens 3 AZs auswählen und jede Instanz in einer anderen AZ platzieren. Wir tun dies, weil die Verfügbarkeitsgarantien über AZs hinweg gelten. Wenn also 1 Zone ausfällt, kann Ihre Anwendungsdatenbank immer noch über die anderen 2 AZs online bleiben. Verfügbarkeitszonen sind ziemlich neu in Azure, wenn Sie also in einer Region arbeiten, die keine AZs anbietet, haben Sie die Möglichkeit, Verfügbarkeitsgruppen zu verwenden. Diese sind etwas schwächer als die von AZ, aber stellen Sie sicher, dass Sie in verschiedenen Domänen und Racks bereitgestellt werden, um Sie vor einem möglichen Ausfall zu schützen. Es besteht auch die Möglichkeit, über Regionen hinweg bereitzustellen, aber dies ist eine kompliziertere Einrichtung, daher empfehlen wir, sich vor der Implementierung mit uns in Verbindung zu setzen, um dies zu besprechen.

Virtuelle Azure-Netzwerke

Der beste Weg, Ihre Datenbank vor dem Internet zu schützen, besteht darin, sie in einem privaten Subnetz bereitzustellen, um sicherzustellen, dass sie nicht offengelegt wird. Azure erleichtert die Einrichtung durch die Verwendung eines virtuellen Netzwerks (VNET), das für Ihre MySQL-Server konfiguriert werden kann. Mit einem Azure VNET für MySQL können Sie eine sichere Kommunikation zwischen Ihren Servern, dem Internet und sogar Ihrem privaten Cloud-Netzwerk vor Ort einrichten. Diese sind normalerweise für die Kommunikation über ein einziges Netzwerk konfiguriert, aber wenn Sie mehr als eine Region verbinden müssen, können Sie mehrere VNETs erstellen, um über Virtual Network Peering zu kommunizieren.

Außerdem können Sie Ihre MySQL-Zugriffskontrolle über Regeln für Netzwerksicherheitsgruppen (NSG) verwalten, ohne sich mit IP-Whitelists befassen zu müssen. Dies ist nicht über Azure Database for MySQL verfügbar, aber sowohl VNET als auch NSG können über unsere MySQL Bring Your Own Cloud (BYOC)-Pläne auf Azure konfiguriert werden, wo Sie Ihre Cluster über Ihr eigenes Cloud-Konto hosten können.

Azure-Instanztypen

Ein weiterer wichtiger Aspekt ist die Leistung Ihrer MySQL-Instanzen in der Public Cloud. Azure Cloud bietet mehrere Instanztypen, die für Ihr MySQL-Hosting verwendet werden können, einschließlich Es2 v3, Ds2, v2 und Ls4.

Wir empfehlen, mit speicheroptimierten Instanztypen zu beginnen, da Datenbanken viel RAM benötigen und für die beste Leistung nach der schnellstmöglichen Festplattengeschwindigkeit suchen. Die Es2-Serie ist in der Regel ein guter Ausgangspunkt für die meisten MySQL-Workloads von Anwendungen. Von dort aus können Sie einige Leistungstests durchführen, um festzustellen, ob Sie mehr CPU benötigen. In diesem Fall können ausgeglichene Instance-Typen oder CPU-intensive Instance-Typen Ihre MySQL-Anforderungen besser erfüllen, z. B. die Dv3-Instance-Typen. Ihre Leistungstests können auch zeigen, dass Sie mehr E/A (Eingabe/Ausgabe) benötigen, Sie können zu einem plattenintensiven Instanztyp wechseln.

Wenn Sie vorhaben, Azure für die nächsten 1–3 Jahre als Ihren MySQL-Cloud-Anbieter zu nutzen und ziemlich konsistente Bereitstellungskonfigurationen beizubehalten, können Sie auch reservierte Instanzen in Betracht ziehen. Dies sind im Wesentlichen Prepaid-Instanzen, mit denen Sie erhebliche Kosteneinsparungen für Ihr MySQL-Hosting erzielen können. Im Durchschnitt können Sie etwa 20 % bis 30 % für reservierte Instanzen für ein Jahr und 40 % bis 50 % für reservierte Instanzen für drei Jahre sparen.

Azure-Festplattentypen

Die erste Entscheidung, die Sie bei der Auswahl eines Azure-Datenträgertyps für Ihre MySQL-Bereitstellungen treffen müssen, ist, ob Sie sich für einen verwalteten oder einen nicht verwalteten Datenträger entscheiden. Die nicht verwalteten Datenträger sind die von Azure angebotenen Legacydatenträger, bei denen Sie das Speicherkonto einrichten, Ihren Datenträger dem Speicherkonto zuordnen und die IOPS-Nutzung und -Grenzwerte für dieses Speicherkonto überwachen müssen. Wir empfehlen dringend, verwaltete Datenträger zu verwenden, und wenn Sie immer noch nicht verwaltete Datenträger bereitstellen, sollten Sie in Betracht ziehen, zu verwalteten Datenträgern zu wechseln.

MySQL-Entwicklungs-/Testumgebungen:Standardfestplatten

Über Azure sind mehrere verwaltete Datenträgertypen verfügbar, wobei die Standarddatenträger die Standarddatenträger sind. Standardfestplatten können bis zu 500 IOPS (Eingabe-/Ausgabevorgänge pro Sekunde) unterstützen und eignen sich gut für Entwicklungs- und Testvorgänge, da ihre Größe dynamisch geändert werden kann, sollten aber nicht für MySQL-Produktionsbereitstellungen verwendet werden.

MySQL-Produktionsbereitstellungen:Premium-Datenträger

Für Ihre MySQL-Produktionsserver empfehlen wir dringend, Azure Premium-Festplatten zu nutzen. Es gibt eine große Auswahl an Premium-Festplatten, aus denen Sie auswählen können. Sie können für jeden Premium-Datenträger die beste Größe auswählen, und jede Größe wird mit unterschiedlichen bereitgestellten IOPS geliefert, sodass Sie diejenige auswählen können, die Ihren Anwendungsanforderungen am besten entspricht.

MySQL-Produktionsbereitstellungen:Lokale SSD

Lokale Azure-SSDs sind eine Hochleistungsalternative zu Premium-Datenträgern, die in der Regel am besten für große Cluster geeignet sind. Die lokalen SSDs bieten eine viel höhere E/A-Leistung und den besten Durchsatz in Azure. Sie haben jedoch den Nachteil, dass es sich um flüchtige Festplatten und nicht um einen dauerhaften Speicher handelt. Wenn Sie also die Instanz stoppen, verschwinden die Daten. Wir empfehlen die Ls v2-Serie, die sehr schnell ist, aber seien Sie vorsichtig, dass die CPU wirklich schwach ist, was zu Maschinenengpässen führen kann.

MySQL-Sicherungen auf Azure

Die beste Methode zum Sichern Ihrer MySQL-Daten in Azure ist die Verwendung von verwalteten Datenträger-Snapshots. Ein Snapshot ist eine schreibgeschützte Point-in-Time-Version einer Festplatte. Diese Sicherungen können gelesen, kopiert oder gelöscht werden, aber beachten Sie, dass sie nicht geändert werden können. Es ist eine gute Idee, vollständige Sicherungen durchzuführen, damit alle Ihre Datenbanken, Benutzer und Einstellungen auf der Instanz gesichert werden, falls Sie jemals eine MySQL-Datenbank wiederherstellen müssen. Es ist auch eine gute Idee, Ihre Backup-Snapshots zu verschlüsseln, sodass das Backup nur auf dem Computer wiederhergestellt werden kann, auf dem das Backup erstellt wurde.

Ihre MySQL-Sicherungen führen zu zusätzlichen Azure-Datenspeichergebühren, es sei denn, Sie nutzen eine allumfassende MySQL-on-Azure-Lösung wie unsere dedizierten Hosting-Pläne bei ScaleGrid. Um die Kosten zu kontrollieren, ist es eine gute Idee, Ihre Sicherungen durch einen anpassbaren Zeitplan zu automatisieren, mit dem Sie die Häufigkeit Ihrer Sicherungen, die maximale Anzahl der aufzubewahrenden Sicherungen und Ihr Sicherungsziel konfigurieren können. Dies hilft Ihnen natürlich auch sicherzustellen, dass Ihre MySQL-Daten im Falle eines Datenverlusts in Ihrer Produktionsbereitstellung regelmäßig gesichert werden, sodass Sie sie schnell mit einer aktuellen Sicherung wiederherstellen können.

Wenn Sie Fragen dazu haben, wie MySQL am besten auf Azure gehostet werden kann, hinterlassen Sie uns unten einen Kommentar oder kontaktieren Sie uns unter support@scalegrid. io. Sie können auch eine kostenlose 30-Tage-Testversion starten, um die Vorteile der Nutzung eines vollständig verwalteten MySQL-Dienstes zur Verbesserung der Leistung Ihrer Bereitstellungen zu erkunden.