MySQL ist einfach zu installieren und zu verwenden und war schon immer bei Entwicklern und Systemadministratoren beliebt. Andererseits ist die Bereitstellung einer produktionsbereiten MySQL-Umgebung für einen geschäftskritischen Unternehmens-Workload eine andere Geschichte. Es kann eine kleine Herausforderung sein und erfordert fundierte Kenntnisse der Datenbank. In diesem Blogbeitrag werden wir einige der Schritte besprechen, die unternommen werden müssen, bevor wir unsere MySQL-Bereitstellung als produktionsbereit betrachten können.
Hohe Verfügbarkeit
Wenn Sie zu den Glücklichen gehören, die stundenlange Ausfallzeiten in Kauf nehmen können, können Sie hier aufhören zu lesen und zum nächsten Absatz springen. Für 99,999 % der geschäftskritischen Systeme wäre dies nicht akzeptabel. Daher muss eine produktionsreife Bereitstellung Maßnahmen zur Hochverfügbarkeit beinhalten. Ein automatisiertes Failover der Datenbankinstanzen sowie eine Proxy-Schicht, die Änderungen in der Topologie und im Status von MySQL erkennt und den Datenverkehr entsprechend weiterleitet, wären eine Hauptanforderung. Es gibt zahlreiche Tools, mit denen solche Umgebungen erstellt werden können, beispielsweise MHA, MRM oder ClusterControl.
Proxy-Schicht
Meisterhafte Fehlererkennung, automatisiertes Failover und Wiederherstellung – diese sind entscheidend beim Aufbau einer produktionsbereiten Infrastruktur. Aber alleine reicht es nicht. Es gibt noch eine Anwendung, die sich an die durch das Failover ausgelöste Topologieänderung anpassen muss. Natürlich ist es möglich, die Anwendung so zu codieren, dass sie Instanzfehler erkennt. Dies ist jedoch eine umständliche und unflexible Art, mit Topologieänderungen umzugehen. Hier kommt der Datenbank-Proxy – eine mittlere Schicht zwischen Anwendung und Datenbank. Ein Proxy kann die Komplexität Ihrer Datenbankschicht vor der Anwendung verbergen – die Anwendung stellt lediglich eine Verbindung zum Proxy her, und der Proxy kümmert sich um den Rest. Der Proxy leitet Abfragen an eine Datenbankinstanz weiter, verarbeitet Topologieänderungen und leitet bei Bedarf um. Ein Proxy kann auch verwendet werden, um eine Lese-Schreib-Aufteilung zu implementieren, wodurch die Anwendung von einem komplexeren Fall entlastet wird. Dies schafft eine weitere Herausforderung:Welcher Proxy soll verwendet werden? Wie konfiguriere ich es? Wie kann man es überwachen? Wie kann man es hochverfügbar machen, damit es kein SPOF wird?
ClusterControl kann hier Abhilfe schaffen. Es kann verwendet werden, um verschiedene Proxys bereitzustellen, um eine Proxy-Schicht zu bilden:ProxySQL, HAProxy und MaxScale. Es konfiguriert Proxys vor, um sicherzustellen, dass sie den Datenverkehr korrekt verarbeiten. Es erleichtert auch die Implementierung von Konfigurationsänderungen, wenn Sie die Proxy-Einrichtung für Ihre Anwendung anpassen müssen. Die Lese-Schreib-Aufteilung kann mit jedem der von ClusterControl unterstützten Proxys konfiguriert werden. ClusterControl überwacht auch die Proxys und stellt sie im Fehlerfall wieder her. Der Proxy-Layer kann zu einem Single Point of Failure werden, da eine automatisierte Wiederherstellung möglicherweise nicht ausreicht – um dies zu beheben, kann ClusterControl Keepalived bereitstellen und Virtual IP konfigurieren, um Failover zu automatisieren.
Sicherungen
Auch wenn Sie Hochverfügbarkeit nicht implementieren müssen, müssen Sie sich wahrscheinlich trotzdem um Ihre Daten kümmern. Backup ist ein Muss für fast jede Produktionsdatenbank. Nichts anderes als ein Backup kann Sie vor einem versehentlichen DROP TABLE oder DROP SCHEMA bewahren (na ja, vielleicht ein verzögerter Replikations-Slave, aber nur für eine gewisse Zeit). MySQL bietet mehrere Methoden zum Erstellen von Backups – mysqldump, xtrabackup, verschiedene Arten von Snapshots (einige sind nur bei bestimmten Hardware- oder Cloud-Anbietern verfügbar). Es ist nicht einfach, die richtige Backup-Strategie zu entwerfen, zu entscheiden, welche Tools verwendet werden sollen, und dann den gesamten Prozess zu skripten, damit er korrekt ausgeführt wird. Es ist auch keine Raketenwissenschaft und erfordert sorgfältige Planung und Tests. Sobald ein Backup erstellt wurde, sind Sie noch nicht fertig. Sind Sie sicher, dass die Sicherung wiederhergestellt werden kann und die Daten kein Müll sind? Das Überprüfen Ihrer Backups ist zeitaufwändig und vielleicht nicht das Aufregendste, was Sie auf Ihrer Todo-Liste haben werden. Aber es ist immer noch wichtig und muss regelmäßig durchgeführt werden.
ClusterControl verfügt über umfangreiche Sicherungs- und Wiederherstellungsfunktionen. Es unterstützt mysqldump für logische Sicherungen und Percona Xtrabackup für physische Sicherungen – diese Tools können in fast jeder Umgebung verwendet werden, entweder in der Cloud oder vor Ort. Es ist möglich, online eine Sicherungsstrategie mit einer Mischung aus logischen und physischen Sicherungen aufzubauen, inkrementell oder vollständig.
Abgesehen von der Wiederherstellung hat es auch Optionen, um ein Backup zu überprüfen - stellen Sie es beispielsweise auf einem separaten Host wieder her, um zu überprüfen, ob der Backup-Prozess in Ordnung ist oder nicht.
Wenn Sie die Backups regelmäßig im Auge behalten möchten (und das würden Sie wahrscheinlich auch tun), bietet ClusterControl die Möglichkeit, Betriebsberichte zu erstellen. Der Sicherungsbericht hilft Ihnen, ausgeführte Sicherungen nachzuverfolgen, und informiert Sie, wenn während der Erstellung Probleme aufgetreten sind.
Multiplenines DevOps-Leitfaden zur DatenbankverwaltungErfahren Sie, was Sie wissen müssen, um Ihre Open-Source-Datenbanken zu automatisieren und zu verwalten.Kostenlos herunterladenÜberwachung und Trendanalyse
Keine Bereitstellung ist ohne ordnungsgemäße Überwachung der Dienste produktionsbereit. Sie möchten sicherstellen, dass Sie benachrichtigt werden, wenn einige Dienste nicht mehr verfügbar sind, damit Sie Maßnahmen ergreifen, Nachforschungen anstellen oder Wiederherstellungsverfahren einleiten können. Natürlich möchten Sie auch eine Trendlösung haben. Es kann nicht genug betont werden, wie wichtig es ist, Überwachungsdaten für die Beurteilung des Zustands der Infrastruktur oder für jede Untersuchung zu haben, entweder Post-Mortem oder Echtzeit-Überwachung des Zustands der Dienste. Metriken sind nicht gleich wichtig – wenn Sie mit einem bestimmten Datenbankprodukt nicht sehr vertraut sind, wissen Sie höchstwahrscheinlich nicht, welche die wichtigsten Metriken sind, die Sie sammeln und beobachten sollten. Sicher, Sie können vielleicht alles sammeln, aber wenn es um die Überprüfung von Daten geht, ist es kaum möglich, Hunderte von Metriken pro Host durchzugehen – Sie müssen wissen, auf welche davon Sie sich konzentrieren sollten.
Die Open-Source-Welt ist voll von Tools, die entwickelt wurden, um Metriken aus verschiedenen Datenbanken zu überwachen und zu sammeln – die meisten von ihnen würden erfordern, dass Sie sie in Ihre gesamte Überwachungsinfrastruktur, Chatops-Plattform oder Oncall-Support-Tools (wie PagerDuty) integrieren. Es kann auch erforderlich sein, mehrere Komponenten zu installieren und zu integrieren – Speicher (eine Art Zeitreihendatenbank), Präsentationsschicht und Datenerfassungstools.
ClusterControl ist ein etwas anderer Ansatz, da es sich um ein einziges Produkt mit Echtzeitüberwachung, Trendanalyse und Dashboards handelt, die die wichtigsten Details anzeigen. Datenbankberater, die alles von einfachen Konfigurationsratschlägen, Warnungen zu Schwellenwerten oder komplexeren Regeln für Vorhersagen sein können, würden im Allgemeinen umfassende Empfehlungen geben.
Fähigkeit zur Skalierung
Datenbanken neigen dazu, an Größe zuzunehmen, und es ist nicht unwahrscheinlich, dass sie in Bezug auf das Transaktionsvolumen oder die Anzahl der Benutzer wachsen würden. Die Fähigkeit zum Scale-out oder Up-Scale kann für die Produktion entscheidend sein. Auch wenn Sie Ihre Hardwareanforderungen zu Beginn des Produktlebenszyklus gut einschätzen, werden Sie wahrscheinlich eine Wachstumsphase bewältigen müssen - solange Ihr Produkt erfolgreich ist (aber das planen wir alle, richtig). ?). Sie müssen über die Mittel verfügen, um Ihre Infrastruktur einfach zu skalieren, um die eingehende Last zu bewältigen. Bei zustandslosen Diensten wie Webservern ist dies ziemlich einfach – Sie müssen nur mehr Instanzen mit dem neuesten Produktionsimage oder Code aus Ihrem Versionskontrolltool bereitstellen. Bei zustandsbehafteten Diensten wie Datenbanken ist es schwieriger. Sie müssen neue Instanzen mit Ihren aktuellen Produktionsdaten bereitstellen, eine Replikation oder eine Form von Clustering zwischen der aktuellen und der neuen Instanz einrichten. Dies kann ein komplexer Prozess sein, und um ihn richtig hinzubekommen, müssen Sie über gründlichere Kenntnisse des gewählten Clustering- oder Replikationsmodells verfügen.
ClusterControl bietet, wie der Name schon sagt, umfassende Unterstützung für den Aufbau von geclusterten oder replizierten Datenbank-Setups. Die verwendeten Methoden sind in Tausenden von Einsätzen kampferprobt. Es wird mit einer Befehlszeilenschnittstelle (CLI) geliefert, sodass es einfach in Konfigurationsmanagementsysteme integriert werden kann. Bitte denken Sie jedoch daran, dass Sie möglicherweise nicht zu oft Änderungen an Ihrem Datenbankpool vornehmen möchten – die Bereitstellung einer neuen Instanz nimmt Zeit in Anspruch und erhöht den Overhead in vorhandenen Datenbanken. Daher möchten Sie möglicherweise ein wenig auf einer „überprovisionierten“ Seite bleiben, damit Sie etwas Zeit haben, eine neue Instanz hochzufahren, bevor Ihr Cluster überlastet wird.
Alles in allem müssen Sie nach der ersten Bereitstellung noch einige Schritte ausführen, um sicherzustellen, dass Ihre Umgebung für die Produktion bereit ist. Mit den richtigen Tools ist es viel einfacher, dorthin zu gelangen.