MariaDB Server ist kein direktes Imitat von MySQL mehr. Es entwickelte sich zu einem ausgereiften Fork, der neue Funktionalitäten implementiert, die denen ähneln, die proprietäre Datenbanksysteme im Upstream bieten. MariaDB 10.3 erweitert die Liste der Unternehmensfunktionen erheblich und wird mit dem neuen SQL_MODE=Oracle zu einer spannenden Wahl für Unternehmen, die ihre Oracle-Datenbanken auf eine Open-Source-Datenbank migrieren möchten. Das Betriebsmanagement ist jedoch ein Bereich, in dem noch Nachholbedarf besteht, und MariaDB erfordert, dass Sie Ihre eigenen Skripte erstellen.
Vielleicht eine gute Gelegenheit, sich mit einem Automatisierungssystem zu befassen?
Automatisierte Verfahren sind genau und konsistent. Sie können Ihnen die dringend benötigte Wiederholbarkeit bieten, sodass Sie das Risiko von Änderungen in den Produktionssystemen minimieren können. Da sich moderne Open-Source-Datenbanken jedoch so schnell entwickeln, ist es schwieriger, Ihre Verwaltungssysteme mit allen neuen Funktionen auf Augenhöhe zu halten.
Der natürliche nächste Schritt ist die Suche nach Automatisierungsplattformen. Es gibt viele Plattformen, die Sie zum Bereitstellen von Systemen verwenden können. Puppet, Chef und Ansible sind wahrscheinlich die besten Beispiele für diesen neuen Trend. Diese Plattformen eignen sich für die schnelle Bereitstellung verschiedener Softwaredienste. Sie eignen sich perfekt für Bereitstellungen, erfordern aber dennoch, dass Sie den Code pflegen, Funktionsänderungen abdecken und normalerweise nur einen Aspekt Ihrer Arbeit abdecken. Dinge wie Sicherungen, Leistung und Wartung erfordern immer noch externe Tools oder Skripte.
Auf der anderen Seite haben wir Cloud-Plattformen mit ausgefeilten Schnittstellen und einer Vielzahl zusätzlicher Dienste für ein vollständig verwaltetes Erlebnis. Es ist jedoch möglicherweise nicht machbar; zum Beispiel hybride Umgebungen, in denen Sie möglicherweise die Cloud verwenden, aber immer noch einen erheblichen lokalen Fußabdruck haben.
Wie wäre es also mit einer dedizierten Verwaltungsebene für Ihre MariaDB-Datenbanken?
ClusterControl wurde entwickelt, um die Bereitstellung und Verwaltung von MariaDB sowie anderen Open-Source-Datenbanken zu automatisieren. Der Kern von ClusterControl ist eine Funktionalität, mit der Sie die Datenbankaufgaben automatisieren können, die Sie regelmäßig ausführen müssen, wie das Bereitstellen neuer Datenbankinstanzen und Cluster, das Verwalten von Backups, Hochverfügbarkeit und Failover, Topologieänderungen, Upgrades, das Skalieren neuer Knoten und mehr.
ClusterControl-Installation
Um mit ClusterControl zu beginnen, benötigen Sie eine dedizierte virtuelle Maschine oder einen Host. Die Anforderungen an VM und unterstützte Systeme werden hier beschrieben. Sie können mindestens von einer winzigen VM mit 2 GB RAM, 2 CPU-Kernen und 20 GB Speicherplatz starten, entweder lokal oder in der Cloud.
Die primäre Installationsmethode besteht darin, einen Installationsassistenten herunterzuladen, der Sie durch alle Schritte führt (Betriebssystemkonfiguration, Paketdownload und -installation, Metadatenerstellung und andere).
Für Umgebungen ohne Internetzugang können Sie den Offline-Installationsprozess verwenden.
ClusterControl ist agentenlos, sodass Sie keine zusätzliche Software installieren müssen. Es erfordert nur SSH-Zugriff auf die Datenbankhosts. Es unterstützt auch agentenbasierte Überwachung für Überwachungsdaten mit höherer Auflösung.
Um kennwortloses SSH für alle Zielknoten (ClusterControl und alle Datenbankhosts) einzurichten, führen Sie die folgenden Befehle auf dem ClusterControl-Server aus:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes
Eine der bequemsten Möglichkeiten, die Cluster-Steuerung auszuprobieren, ist vielleicht die Option, sie im Docker-Container auszuführen.
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol
Nach erfolgreicher Bereitstellung sollten Sie unter {IP-Adresse des Hosts}:{Port des Hosts} auf die ClusterControl-Webbenutzeroberfläche zugreifen können, zum Beispiel:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Installation des MariaDB-Clusters
Sobald wir die ClusterControl-Schnittstelle aufgerufen haben, müssen Sie zunächst eine neue Datenbank bereitstellen oder eine vorhandene importieren. Die Version 1.7.2 führte die Unterstützung für Version 10.3 (zusammen mit 10.0, 10.1, 10.2) ein. In 1.7.3, das diese Woche veröffentlicht wurde, können wir die verbesserte Bereitstellung der Installation in der Cloud sehen.
ClusterControl:Bereitstellen/ImportierenZum Zeitpunkt der Erstellung dieses Blogs sind die aktuellen Versionen 10.3.16. Neueste Pakete werden standardmäßig abgeholt. Wählen Sie die Option „Datenbank-Cluster bereitstellen“ und folgen Sie den angezeigten Anweisungen.
Jetzt ist es an der Zeit, Daten bereitzustellen, die für die Verbindung zwischen ClusterControl und DB-Knoten benötigt werden. In diesem Schritt hätten Sie saubere VMs oder Images von Betriebssystemen, die Sie in Ihrer Organisation verwenden. Bei der Auswahl von MariaDB müssen wir Benutzer, Schlüssel oder Passwort und Port angeben, um eine SSH-Verbindung zu unseren Servern herzustellen.
ClusterControl:Datenbankcluster bereitstellenNach dem Einrichten der SSH-Zugangsinformationen müssen wir die Daten für den Zugriff auf unsere Datenbank eingeben, für MariaDB ist dies der Superuser-Root. Wir können auch angeben, welches Repository verwendet werden soll. Sie können drei Arten von Repositories haben, wenn Sie Datenbankserver/Cluster mit ClusterControl bereitstellen:
- Verwenden Sie das Anbieter-Repository. Stellen Sie Software bereit, indem Sie das bevorzugte Software-Repository des Datenbankanbieters einrichten und verwenden. ClusterControl installiert die neueste Version dessen, was vom Datenbankanbieter-Repository bereitgestellt wird.
- Richten Sie keine Anbieter-Repositories ein. Es werden keine Repositories von ClusterControl eingerichtet. ClusterControl verlässt sich auf die Systemkonfiguration (Ihre Standard-Repository-Dateien).
- Erstellen und spiegeln Sie das Repository des aktuellen Datenbankanbieters und stellen Sie es dann mit dem lokalen gespiegelten Repository bereit. Damit können Sie die aktuellen Versionen der Softwarepakete "einfrieren".
Wenn alles eingestellt ist, drücken Sie die Bereitstellungstaste. Der Bereitstellungsprozess kümmert sich auch um die Installation zusätzlicher Tools, die von MariaDB bereitgestellt werden, wie mariabackup und Tools von externen Anbietern, die in der Datenbankverwaltung beliebt sind.
Neuen Cluster importieren
Wir haben auch die Möglichkeit, ein bestehendes Setup zu verwalten, indem wir es in ClusterControl importieren. Eine solche Umgebung kann durch ClusterControl oder andere Methoden (Puppet, Chef, Ansible, Docker …) erstellt werden. Der Vorgang ist einfach und erfordert keine Fachkenntnisse.
Zuerst müssen wir die SSH-Zugangsdaten zu unseren bestehenden Datenbankservern eingeben. Dann geben wir die Zugangsdaten zu unserer Datenbank, das Serverdatenverzeichnis und die Version ein. Wir fügen die Knoten nach IP oder Hostname hinzu, genauso wie bei der Bereitstellung, und drücken auf Importieren. Sobald die Aufgabe abgeschlossen ist, können wir unseren Cluster von ClusterControl aus verwalten. An dieser Stelle können wir auch die Optionen für die automatische Wiederherstellung von Knoten oder Clustern definieren.
ClusterControl:Vorhandenen 10.3-Datenbankcluster importierenSkalieren von MariaDB, Hinzufügen weiterer Knoten zum DB-Cluster
Mit ClusterControl ist das Hinzufügen weiterer Server zum Server ein einfacher Schritt. Sie können dies über die GUI oder CLI tun. Fortgeschrittene Benutzer können ClusterControl Developer Studio verwenden und eine Ressourcenbasisbedingung schreiben, um Ihren Cluster automatisch zu erweitern.
ClusterControl:MariaDB-Knoten hinzufügenClusterControl unterstützt eine Option zur Verwendung eines vorhandenen Backups, sodass der Produktions-Master-Knoten nicht mit zusätzlicher Arbeit überfordert werden muss.
MariaDB sichern
Die standardmäßige MariaDB-Installation wird mit entspannter Sicherheit geliefert. Dies wurde mit den letzten Versionen verbessert, jedoch erfordern Produktionssysteme immer noch Anpassungen in der Standardkonfiguration von my.cnf. ClusterControl-Bereitstellungen werden mit nicht standardmäßigen my.cnf-Einstellungen geliefert (anders für verschiedene Cluster-Typen).
ClusterControl beseitigt menschliche Fehler und bietet Zugriff auf eine Reihe von Sicherheitsfunktionen, um Ihre Datenbanken automatisch vor Hacks und anderen Bedrohungen zu schützen.
ClusterControl:SicherheitsbereichClusterControl aktiviert die SSL-Unterstützung für MariaDB-Verbindungen. Die Aktivierung von SSL fügt eine weitere Sicherheitsebene für die Kommunikation zwischen den Anwendungen (einschließlich ClusterControl) und der Datenbank hinzu. MariaDB-Clients öffnen verschlüsselte Verbindungen zu den Datenbankservern und überprüfen die Identität dieser Server, bevor sie vertrauliche Informationen übertragen.
ClusterControl führt alle notwendigen Schritte aus, einschließlich der Erstellung von Zertifikaten auf allen Datenbankknoten. Solche Zertifikate können später im Register Schlüsselverwaltung gepflegt werden.
Mit ClusterControl können Sie auch Auditing aktivieren. Es verwendet das von MariaDB bereitgestellte Audit-Plugin. Kontinuierliche Überwachung ist eine zwingende Aufgabe für die Überwachung Ihrer Datenbankumgebung. Indem Sie Ihre Datenbank prüfen, können Sie für durchgeführte Aktionen oder aufgerufene Inhalte Rechenschaft ablegen. Darüber hinaus kann die Prüfung einige kritische Systemkomponenten umfassen, z. B. diejenigen, die mit Finanzdaten verbunden sind, um eine genaue Reihe von Vorschriften wie SOX oder die EU-DSGVO-Verordnung zu unterstützen. Der geführte Prozess lässt Sie auswählen, was geprüft werden soll und wie die Prüfprotokolldateien verwaltet werden.
Überwachung und Benachrichtigung
Wenn Sie mit Datenbanksystemen arbeiten, sollten Sie diese überwachen können. So können Sie Trends erkennen, Upgrades oder Verbesserungen planen oder effektiv auf auftretende Probleme oder Fehler reagieren.
ClusterControl:ÜbersichtDas neue ClusterControl verwendet Prometheus als Datenspeicher mit der Abfragesprache PromQL. Die Liste der Dashboards umfasst Server General, Server Caches, InnoDB Metrics, Replication Master, Replication Slave, System Overview und Cluster Overview Dashboards.
ClusterControl:DashBoardClusterControl installiert Prometheus-Agenten, konfiguriert Metriken und verwaltet den Zugriff auf die Prometheus-Exporterkonfiguration über seine GUI, sodass Sie die Parameterkonfiguration wie Collector-Flags für die Exporter (Prometheus) besser verwalten können.
Als Datenbankbetreiber müssen wir informiert werden, wenn etwas Kritisches in unserer Datenbank passiert. Die drei Hauptmethoden in ClusterControl, um eine Warnung zu erhalten, umfassen:
- E-Mail-Benachrichtigungen
- Integrationen
- Berater
Sie können die E-Mail-Benachrichtigungen auf Benutzerebene festlegen. Gehen Sie zu Einstellungen> E-Mail-Benachrichtigungen. Wo Sie zwischen Kritikalität und Art der zu sendenden Warnung wählen können.
Die nächste Methode ist die Verwendung der Integrationsdienste. Dadurch wird die spezifische Kategorie von Ereignissen an andere Dienste wie ServiceNow-Tickets, Slack, PagerDuty usw. weitergegeben, damit Sie erweiterte Benachrichtigungsmethoden und Integrationen in Ihrer Organisation erstellen können.
Die letzte besteht darin, eine ausgefeilte Metrikanalyse in den Advisor-Bereich einzubeziehen, wo Sie intelligente Überprüfungen und Trigger erstellen können.
ClusterControl:BeraterSQL-Überwachung
Das SQL-Monitoring ist in drei Abschnitte unterteilt.
- Häufigste Suchanfragen - zeigt die Informationen zu Abfragen an, die einen erheblichen Teil der Ressourcen beanspruchen. Abfrageüberwachung:Häufigste Abfragen
- Ausführen von Abfragen - Es ist eine Prozessliste mit Informationen, die von allen Datenbank-Cluster-Knoten in einer Ansicht kombiniert werden. Sie können dies verwenden, um Abfragen zu beenden, die sich auf Ihre Datenbankoperationen auswirken. Abfragemonitor:Ausführen von Abfragen
- Abfrageausreißer - Präsentieren Sie die Liste der Abfragen mit einer überdurchschnittlich langen Ausführungszeit. Abfragemonitor:Abfrageausreißer
Sicherung und Wiederherstellung
Nachdem Sie Ihre MariaDB eingerichtet und ausgeführt und Ihre Überwachung eingerichtet haben, ist es Zeit für den nächsten Schritt:Stellen Sie sicher, dass Sie eine Sicherungskopie Ihrer Daten haben.
ClusterControl:Backup-RepositoryClusterControl bietet eine Schnittstelle für das MariaDB-Backup-Management mit Unterstützung für Planung und kreative Berichte. Es gibt Ihnen zwei Optionen für Backup-Methoden.
- Logisches Backup (Text):mysqldump
- Binäre Backups:xtrabackup (niedrigere Versionen), mariabackup
Eine gute Sicherungsstrategie ist ein kritischer Bestandteil jedes Datenbankverwaltungssystems. ClusterControl bietet viele Optionen für Backups und Recovery/Restore.
Die Aufbewahrung von ClusterControl-Backups ist konfigurierbar; Sie können wählen, ob Sie Ihre Sicherung für einen beliebigen Zeitraum aufbewahren oder Sicherungen nie löschen möchten. AES256-Verschlüsselung wird verwendet, um Ihre Backups vor Rogue-Elementen zu schützen. Für eine schnelle Wiederherstellung können Backups direkt in einem neuen Cluster wiederhergestellt werden - ClusterControl übernimmt den vollständigen Wiederherstellungsprozess vom Start einer neuen Datenbankeinrichtung bis zur Wiederherstellung von Daten und entfernt fehleranfällige manuelle Schritte aus dem Prozess.
Sicherungen können nach Abschluss automatisch verifiziert und dann in Cloud-Speicherdienste (AWS, Azure und Google) hochgeladen werden. Für lokale Backups im Rechenzentrum sowie Backups, die in die Cloud hochgeladen werden, können unterschiedliche Aufbewahrungsrichtlinien definiert werden.
Automatische Wiederherstellung von Knoten und Clustern
ClusterControl bietet erweiterte Unterstützung für die Fehlererkennung und -behandlung. Außerdem können Sie verschiedene Proxys bereitstellen, um sie in Ihren HA-Stack zu integrieren, sodass Sie keine Anwendungsverbindungszeichenfolge oder DNS-Einträge anpassen müssen, um die Anwendung auf den neuen Master-Knoten umzuleiten.
Wenn der Master-Server heruntergefahren ist, erstellt ClusterControl einen Job, um ein automatisches Failover durchzuführen. ClusterControl erledigt die gesamte Hintergrundarbeit, um einen neuen Master zu wählen, Failover-Slave-Server bereitzustellen und Load Balancer zu konfigurieren.
Das automatische ClusterControl-Failover wurde nach den folgenden Prinzipien entwickelt:
- Stellen Sie sicher, dass der Master wirklich tot ist, bevor Sie ein Failover durchführen
- Failover nur einmal
- Führen Sie kein Failover zu einem inkonsistenten Slave durch
- Nur an den Master schreiben
- Den ausgefallenen Master nicht automatisch wiederherstellen
Mit den integrierten Algorithmen kann Failover oft ziemlich schnell durchgeführt werden, sodass Sie die höchsten SLAs für Ihre Datenbankumgebung sicherstellen können.
ClusterControl:Automatische WiederherstellungDer Prozess ist hochgradig konfigurierbar. Es enthält mehrere Parameter, mit denen Sie die Wiederherstellung an die Besonderheiten Ihrer Umgebung anpassen können. Unter den verschiedenen Optionen finden Sie replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script und viele andere.
Failover ist der Prozess des Wechsels zu einer fehlerfreien Standby-Komponente während eines Ausfalls oder Wartungsereignisses, um die Betriebszeit aufrechtzuerhalten. Je schneller das geht, desto schneller sind Sie wieder online. Wenn Sie Ausfallzeiten minimieren und Ihre SLAs durch einen automatisierten Ansatz für TimescaleDB erfüllen möchten, dann ist dieser Blog genau das Richtige für Sie.
MaxScale-Load-Balancer
Zusätzlich zu MariaDB 10.3 fügt ClusterControl eine Option des Load Balancer MaxScale 2.3 hinzu. MaxScale ist ein SQL-fähiger Proxy, der zum Aufbau hochverfügbarer Umgebungen verwendet werden kann. Es verfügt über zahlreiche Funktionen, das Hauptziel besteht jedoch darin, Lastausgleich und Hochverfügbarkeit zu ermöglichen.
ClusterControl:MaxScaleMaxScale kann verwendet werden, um den Zustand des Master-MariaDB-Knotens zu verfolgen und bei einem Ausfall ein schnelles, automatisches Failover durchzuführen. Automatisiertes Failover ist entscheidend für den Aufbau einer hochverfügbaren Lösung, die sich nach einem Ausfall umgehend erholen kann.
Balance-Datenbanksitzungen laden
Read-Write-Splitting ist ein kritisches Feature, um Read-Scaling zu ermöglichen. Es reicht aus, wenn sich die Anwendung mit MaxScale verbindet, und sie erkennt die Topologie, bestimmt, welche MariaDB als Master und welche als Slaves fungiert. Es leitet den Datenverkehr entsprechend dorthin.
Zusammenfassung
Wir hoffen, dass dieser Blog Ihnen dabei hilft, sich mit den Administrationsmodulen von ClusterControl und MariaDB 10.3 vertraut zu machen. Die beste Option ist, ClusterControl herunterzuladen und jedes von ihnen zu testen.