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

Monitoring &Operations Management von MySQL 8.0 mit ClusterControl

Benutzer von Open-Source-Datenbanken müssen häufig eine Mischung aus Tools und selbst entwickelten Skripten verwenden, um ihre Produktionsdatenbankumgebungen zu verwalten. Doch selbst wenn die Lösung über eigene, selbst erstellte Skripte verfügt, ist es schwierig, sie zu warten und mit neuen Datenbankfunktionen, Sicherheitsanforderungen oder Upgrades Schritt zu halten. Mit neuen Hauptversionen einer Datenbank, einschließlich MySQL 8.0, kann diese Aufgabe sogar noch schwieriger werden.

Das Herzstück von ClusterControl ist seine Automatisierungsfunktion, mit der Sie die Datenbankaufgaben automatisieren können, die Sie regelmäßig ausführen müssen, wie das Bereitstellen neuer Datenbanken, das Hinzufügen und Skalieren neuer Knoten, das Verwalten von Backups, Hochverfügbarkeit und Failover, Topologieänderungen, Upgrades und mehr. Automatisierte Verfahren sind genau, konsistent und wiederholbar, sodass Sie das Risiko von Änderungen in den Produktionsumgebungen minimieren können.

Darüber hinaus unterliegen MySQL-Benutzer mit ClusterControl nicht mehr der Herstellerbindung; etwas, das in letzter Zeit von vielen in Frage gestellt wurde. Sie können eine Vielzahl von MySQL-Versionen und -Anbietern kostenlos über eine einzige Konsole bereitstellen und importieren.

In diesem Artikel zeigen wir Ihnen, wie Sie MySQL 8.0 mit einer kampferprobten Konfiguration bereitstellen und automatisiert verwalten. Wie das geht, erfahren Sie hier:

  • ClusterControl-Installation
  • MySQL-Bereitstellungsprozess
    • Stellen Sie einen neuen Cluster bereit
    • Bestehenden Cluster importieren
  • Skalieren von MySQL
  • MySQL sichern
  • Überwachung und Trendanalyse
  • Sicherung und Wiederherstellung
  • Knoten- und Cluster-Autowiederherstellung (automatisches Failover)

ClusterControl-Installation

Um mit ClusterControl zu starten, benötigen Sie eine dedizierte virtuelle Maschine oder einen Host. Die Anforderungen an VM und unterstützte Systeme werden hier beschrieben. Die Basis-VM kann ab 2 GB, 2 Kernen und Speicherplatz ab 20 GB Speicherplatz beginnen, entweder lokal oder in der Cloud.

Die Installation ist in der Dokumentation gut beschrieben, aber im Grunde laden Sie ein Installationsskript herunter, das Sie durch die Schritte führt. Das Assistentenskript richtet die interne Datenbank ein, installiert die erforderlichen Pakete, Repositories und andere erforderliche Optimierungen. Für Umgebungen ohne Internetzugang können Sie den Offline-Installationsprozess verwenden.

ClusterControl erfordert SSH-Zugriff auf die Datenbankhosts, und die Überwachung kann agentenbasiert oder ohne Agenten erfolgen. Die Verwaltung erfolgt ohne Agenten.

Um passwortloses 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

Bereitstellung und Skalierung

MySQL 8.0 bereitstellen

Sobald wir die ClusterControl-Schnittstelle aufgerufen haben, müssen Sie zunächst eine neue Datenbank bereitstellen oder eine vorhandene importieren. Die neue Version 1.7.2 führt die Unterstützung für Version 8.0 von Oracle Community Edition und Percona Server ein. Zum Zeitpunkt der Erstellung dieses Blogs sind die aktuellen Versionen Oracle MySQL Server 8.0.15 und Percona Server for MySQL 8.0-15. Wählen Sie die Option "Datenbankcluster bereitstellen". “ und befolgen Sie die angezeigten Anweisungen.

ClusterControl:Datenbankcluster bereitstellen

Bei der Auswahl von MySQL müssen wir Benutzer, Schlüssel oder Passwort und Port angeben, um eine SSH-Verbindung zu unseren Servern herzustellen. Wir brauchen auch einen Namen für unseren neuen Cluster und wenn wir möchten, dass ClusterControl die entsprechende Software und Konfigurationen für uns installiert.

Nach Einrichtung der SSH-Zugangsdaten müssen wir die Daten für den Zugriff auf unsere Datenbank eingeben. Wir können auch angeben, welches Repository verwendet werden soll. Die Repository-Konfiguration ist ein wichtiger Aspekt für Datenbankserver und Cluster. Sie können drei Arten von Repositories haben, wenn Sie Datenbankserver/Cluster mit ClusterControl bereitstellen:

  • Vendor-Repository verwenden
    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.
  • Keine Anbieter-Repositories einrichten
    Stellen Sie Software bereit, indem Sie das bereits vorhandene Software-Repository verwenden, das bereits auf den Knoten eingerichtet ist. Der Benutzer muss das Software-Repository manuell auf jedem Datenbankknoten einrichten und ClusterControl verwendet dieses Repository für die Bereitstellung. Das ist gut, wenn die Datenbankknoten ohne Internetverbindung laufen.
  • Gespiegelte Repositorys verwenden (Neues Repository erstellen)
    Erstellen und spiegeln Sie das Repository des aktuellen Datenbankanbieters und stellen Sie es dann mithilfe des lokalen gespiegelten Repositorys bereit. Damit können Sie die aktuellen Versionen der Softwarepakete „einfrieren“.

Im nächsten Schritt müssen wir unsere Server dem Cluster hinzufügen, den wir erstellen werden. Beim Hinzufügen unserer Server können wir die IP oder den Hostnamen eingeben und dann die Netzwerkschnittstelle auswählen. Für letzteres müssen wir einen DNS-Server haben oder unsere MySQL-Server zur lokalen Auflösungsdatei (/etc/hosts) unseres ClusterControl hinzugefügt haben, damit es den entsprechenden Namen auflösen kann, den Sie hinzufügen möchten.

Auf dem Bildschirm sehen wir eine beispielhafte Bereitstellung mit einem Master- und zwei Slave-Servern. Die Serverliste ist dynamisch und ermöglicht die Erstellung anspruchsvoller Topologien, die nach der Erstinstallation erweitert werden können.

ClusterControl:Topologie definieren

Wenn alles eingestellt ist, drücken Sie die Bereitstellungstaste. Sie können den Status der Erstellung unseres neuen Replikations-Setups über den ClusterControl-Aktivitätsmonitor überwachen. Der Bereitstellungsprozess kümmert sich auch um die Installation beliebter MySQL-Tools wie percona toolkit und percona-xtradb-backup.

ClusterControl:Clusterdetails bereitstellen

Sobald die Aufgabe abgeschlossen ist, können wir unseren Cluster im Hauptbildschirm von ClusterControl und in der Topologieansicht sehen. Beachten Sie, dass wir vor den Datenbankinstanzen auch einen Load Balancer (ProxySQL) hinzugefügt haben.

ClusterControl:Topologie

Wie wir im Bild sehen können, können wir, nachdem wir unseren Cluster erstellt haben, mehrere Aufgaben direkt aus dem Abschnitt „Topologie“ ausführen.

ClusterControl:Topologieverwaltung

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.

ClusterControl:Vorhandenen Cluster importieren

Zuerst müssen wir die SSH-Zugangsdaten zu unseren Servern 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.

Skalieren von MySQL

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.

Wenn Sie dem Setup einen neuen Knoten hinzufügen, haben Sie die Möglichkeit, ein vorhandenes Backup zu verwenden, sodass Sie den Produktions-Master-Knoten nicht mit zusätzlicher Arbeit überfordern müssen.

ClusterControl Scaling MySQL

Mit der integrierten Unterstützung für Load Balancer (ProxySQL, Maxscale, HAProxy) können Sie MySQL-Knoten dynamisch hinzufügen und entfernen. Wenn Sie mehr darüber erfahren möchten, wie Sie MySQL-Replikation und -Clustering am besten verwalten, lesen Sie bitte das Whitepaper MySQL-Replikation für HA-Replikation.

MySQL sichern

MySQL wird standardmäßig mit sehr wenig Sicherheit geliefert. Dies wurde mit der letzten Version verbessert, jedoch erfordern Produktionssysteme immer noch tweeks in der Standardkonfiguration von my.cnf.

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 aktiviert die SSL-Unterstützung für MySQL-Verbindungen. Die Aktivierung von SSL fügt eine weitere Sicherheitsebene für die Kommunikation zwischen den Anwendungen (einschließlich ClusterControl) und der Datenbank hinzu. MySQL-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.

ClusterControl:Manager-SSL-Schlüssel

Die Percona-Serverinstallationen bieten zusätzliche Unterstützung für ein 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.

ClusterControl:Prüfprotokoll für Percona Server 8.0 aktivieren

Überwachung

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.

Das neue ClusterControl 1.7.2 kommt mit aktualisiertem hochauflösendem Monitoring für MySQL 8.0. Es verwendet Prometheus als Datenspeicher mit der PromQL-Abfragesprache. Die Liste der Dashboards umfasst MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview und Cluster Overview Dashboards.

ClusterControl 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. Was überwacht werden kann, haben wir im Artikel How to Monitoring MySQL with Prometheus &ClusterControl ausführlich beschrieben.

ClusterControl:Dashboard

Warnung

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.

ClusterControl:Benachrichtigung

Die nächste Methode ist die Verwendung von Integrationsdiensten. Dies dient dazu, die spezifische Kategorie von Ereignissen an andere Dienste wie ServiceNow-Tickets, Slack, PagerDuty usw. weiterzugeben, damit Sie erweiterte Benachrichtigungsmethoden und Integrationen innerhalb Ihrer Organisation erstellen können.

ClusterControl:Integration

Die letzte besteht darin, eine ausgefeilte Metrikanalyse in den Advisor-Bereich einzubeziehen, wo Sie intelligente Überprüfungen und Trigger erstellen können.

ClusterControl:Automatische Berater

Sicherung und Wiederherstellung

Nachdem Sie Ihr MySQL 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:Sicherung erstellen

ClusterControl bietet eine Schnittstelle für das MySQL-Backup-Management mit Unterstützung für Planung und kreative Berichte. Es gibt Ihnen zwei Optionen für Backup-Methoden.

  • Logisch:mysqldump
  • Binär:xtrabackup/mariabackup
ClusterControl:Sicherungsoptionen erstellen

Eine gute Sicherungsstrategie ist ein kritischer Bestandteil jedes Datenbankverwaltungssystems. ClusterControl bietet viele Optionen für Backups und Recovery/Restore.

ClusterControl:Backup-Zeitplan und Backup-Repository

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, wodurch fehleranfällige manuelle Schritte aus dem Prozess entfernt werden.

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 für 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 die Verbindungszeichenfolge der Anwendung oder den DNS-Eintrag nicht 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.

ClusterControl:Automatische Knotenwiederherstellung

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 ein Failover oft ziemlich schnell durchgeführt werden, sodass Sie die höchsten SLAs für Ihre Datenbankumgebung sicherstellen können.

Der 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.