MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

DBaaS, Cloud und transparentes Abfragerouting

In den meisten Fällen werden Replikate für Hochverfügbarkeit und/oder Leseskalierung bereitgestellt. Wenn der Primärserver ausfällt, wird eines der Replikate zum Primärserver heraufgestuft. Wenn es viele Lesevorgänge gibt, und das ist fast immer der Fall, werden Replikate zum Aufskalieren hinzugefügt. Idealerweise werden Schreibvorgänge an den primären Server geleitet und Lesevorgänge werden über die Replikate verteilt. Dies ist die effizienteste Art, die verfügbaren Ressourcen zu nutzen.

RDS, Azure Database und Cloud SQL bieten Ihnen alle individuelle Endpunkte für Datenbankinstanzen, einen für die primäre und einen für jedes Replikat. Wenn Sie Balance-Reads laden möchten, müssen Sie mehrere Verbindungen erstellen (eine für jedes Replikat) und dies selbst tun. Wenn Sie Schreibvorgänge auf dem primären und Lesevorgänge auf den Replikaten ausführen möchten (d. h. Lese-/Schreib-Splitting), müssen Sie eine zusätzliche Verbindung zum primären erstellen und dies selbst tun.

Kein Spaß. Nicht cool.

Mit MaxScale, einem fortschrittlichen Datenbank-Proxy für MariaDB Enterprise Server, müssen Sie sich darüber keine Gedanken machen. MaxScale führt für Sie Read Load Balancing und Read/Write Splitting durch – das nennen wir transparentes Query Routing. Entwickler sollten sich keine Gedanken über die physische Infrastruktur (d. h. Datenbanktopologie) machen müssen. Warum sollten sie? Vielleicht gibt es eine Replik, vielleicht gibt es fünf. Vielleicht haben die DBAs letzte Nacht eine Replik hinzugefügt, vielleicht haben sie zwei entfernt. Es sollte keine Rolle spielen, und Anwendungen sollten es nicht berücksichtigen müssen.

Das ist das Tolle an MaxScale. Es abstrahiert die zugrunde liegende Datenbankinfrastruktur und Bereitstellungstopologie. Vielleicht ist es eine eigenständige Datenbank. Vielleicht ist es eine replizierte Datenbank. Vielleicht ist es eine geclusterte Datenbank. Wen interessiert das? Besonders in der Cloud.

Warum können Sie also das transparente Abfragerouting lokal, aber nicht in der Cloud nutzen? Denn RDS, Azure Database und Google Cloud SQL haben kein MaxScale. Wenn es nur einen DBaaS mit MaxScale und transparentem Query-Routing gäbe. Wenn wir doch nur mit der ultimativen MariaDB-Cloud höher steigen könnten. Warte, hallo SkySQL!

Ja, wir haben SkySQL die Leistung von MaxScale gebracht.

Nachdem Sie eine replizierte Datenbank erstellt haben, erhalten Sie einen Hostnamen und zwei Ports, einen zum Lesen und einen zum Lesen/Schreiben. Sie benötigen nur den Lese-/Schreibport, da dieser auch den Lastausgleich durchführt. Wenn Sie jedoch schreibgeschützte Anwendungen haben (z. B. BI/Berichterstellung), kann sich der Leseport als nützlich erweisen. Kinderleicht.

Sie fragen sich vielleicht, hat Shane gerade den Hostnamen und den Port seiner Datenbank geteilt?

Warum ja, ja habe ich. Standardmäßig sind SkySQL-Datenbanken nicht zugänglich. Sie müssen die IP-Adressen (oder Bereiche) aller Clients und Anwendungsserver, die Zugriff benötigen, auf die Whitelist setzen. Und die einzige IP-Adresse, die ich auf die Whitelist gesetzt habe, ist die meines Laptops zu Hause. Viel Glück. 😉

Zurück zum eigentlichen Thema sehen Sie die beiden Ports:5001 für die Lese-/Schreibaufteilung (schreibt auf den primären Port, Lesevorgänge werden über Replikate hinweg verteilt) und 5002 für den schreibgeschützten Lastenausgleich. Meine Datenbank hat zwei Replikate, aber die damit verbundenen Anwendungen müssen sich nicht darum kümmern. Ich könnte morgen zwei weitere Replikate hinzufügen, und es wären keine Anwendungsänderungen erforderlich, um sie zu nutzen. MaxScale würde einfach und automatisch damit beginnen, Lesevorgänge an sie weiterzuleiten.

Und wenn die primäre ausfällt, keine große Sache. MaxScale stuft automatisch ein Replikat hoch und beginnt mit dem Weiterleiten von Schreibvorgängen (und dem Lastenausgleich von Lesevorgängen über die verbleibenden Replikate). Wenn Sie jemals unter der unvorhersehbaren Failover-Zeit von RDS gelitten haben, wissen Sie warum. RDS-Failover basiert auf der DNS-Weitergabe, sodass Sie den Endpunkt-Hostnamen nicht ändern müssen. Es ist fast transparent, aber es braucht Zeit. Bei MaxScale dagegen sofort – keine DNS-Propagation erforderlich.

Aber ich will nicht zu weit vom Thema abschweifen. Ich habe etwas anderes im Sinn, das für HA geplant ist. Bleiben Sie dran.