MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Erste Schritte mit der Datenbankautomatisierung

Datenbankautomatisierung hilft, komplexe und zeitraubende Aufgaben einfach und schnell zu machen. Die Aufgaben, die am häufigsten und am einfachsten für die Automatisierung identifiziert werden können, sind diejenigen, die zeitaufwändig, aber sich wiederholend sind. Diese verbrauchen oft die Produktivität und können sich auf die Finanzen des Unternehmens auswirken, da Sie die Personen bezahlen müssen, die an diesen Aufgaben arbeiten. Allerdings können die Prozesse, in denen Zeit und Mühe unnötig verbraucht werden, auf virtuelle Automatisierung umgestellt werden, wodurch oft langweilige, anstrengende Arbeit vermieden wird.

Datenbankautomatisierung ist eine gängige Praxis von Datenbankadministratoren und Serveradministratoren, die heute zusammen besser als DevOps bekannt sind. DevOps bezieht sich auch auf die Kombination der Aufgaben von DBAs und Serveradministratoren. Auf altmodische Weise werden herkömmliche und gängige automatisierte Aufgaben als eine Reihe von SQL-Anweisungen oder .sql-Dateien geschrieben, die Server über Skripte bereitstellen und bereitstellen, Verschlüsselung/Entschlüsselung einrichten oder Sicherheit für die Umgebung nutzen, in der Ihre Automatisierung vorgesehen ist laufen. Hier ist Automatisierung kein Beispiel dafür, wie ein Unternehmen Menschen durch Skripte ersetzt. Es dient als Assistent, um die Dinge auf den neuesten Stand zu bringen und Aufgaben schneller und mit weniger Fehlern zu erledigen. Automatisierung kann die Art und Weise, wie DBAs ihre Aufgaben ausführen, oder den Wert, den sie für das gesamte Unternehmen oder die gesamte Organisation liefern können, nicht ersetzen.

Ausgeklügelte Tools für Infrastructure as Code (IaC) wie Puppet, Chef, Ansible, SaltStack und Terraform helfen DBAs bei der Erledigung von Aufgaben, die leicht repliziert werden können, wie Sicherung und Wiederherstellung, Failover, Bereitstellung von neue Cluster, Anpassen der Sicherheitseinstellungen, Optimieren der Betriebssystemkernel- und Datenbankleistung und vieles mehr. Mit Hilfe der Automatisierung haben viele DBAs auch ihre Fähigkeiten verbessert oder verlagert, anstatt sich auf datendomänenspezifische Aufgaben zu konzentrieren, um auch das Programmieren abzudecken, um diese IaC-Tools zu verwenden, die die Dinge einfacher machen als die Verwendung des traditionellen Ansatzes. Derzeit gibt es auch Tools, die die Verwaltung Ihrer Assets in der Cloud vereinfachen, z. B. die Verwaltung Ihrer Unternehmensbenutzerkonten, Protokolle, die Bereitstellung von Instanzen oder die Verwaltung Ihrer Server. Zu den Tools für die Cloud von den drei großen Cloud-Anbietern gehören AWS CloudFormation, Azure Resource Manager und Google Cloud Deployment Manager und ermöglichen es DBAs oder DevOps, die Leistungsfähigkeit der Automatisierung zu nutzen und Dinge zu beschleunigen. Das beeindruckt nicht nur die Führungskräfte Ihrer Organisation oder Ihres Unternehmens, sondern auch die Kunden, die sich auf Ihren Service verlassen.

Was muss automatisiert werden?

Wie oben erwähnt, ist die Datenbankautomatisierung für DBAs, Serveradministratoren oder sogar DevOps nichts Neues. Es gibt keinen Grund zu zögern oder zu hinterfragen, ob man automatisieren sollte. Wie bereits erwähnt, handelt es sich bei häufigen Fällen, die für die Automatisierung leicht identifiziert werden können, um Aufgaben, die sich wiederholen.

Im Folgenden zählen wir Dinge auf, die aus Sicht des DBA unumstößlich sind.

  • Bereitstellung Ihrer Server (z. B. Initiieren von VM-Instanzen wie mit Vagrant, Initiieren von Docker oder Initiieren Ihrer Kubernetes Plattform) und SSH-Zugriff einrichten oder VPN-Zugriff einrichten

  • Bereitstellung eines neuen Datenbank-Clusters

    • Identifizieren Sie die Art des Datenbankanbieters, die Art der Einrichtung (primär/Standby, Master-Master-Replikation, synchrone Replikation)

  • Bestehenden Datenbank-Cluster importieren

  • Stellen Sie vorhandene Datenbanken in Ihrem aktuellen Datenbank-Cluster bereit/importieren Sie sie

  • Auto-failover oder switchover

  • Automatische Wiederherstellung von Knoten oder Clustern

  • Replica/Slave-Beförderung oder Degradierung eines Masters

  • Bereitstellung von Load Balancern (z. B. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Sichern und Wiederherstellen

  • Richten Sie Ihre Datenbanküberwachungsumgebung ein (stellen Sie z. B. agentenbasierte Überwachung wie Prometheus bereit)

  • Sicherheitsanpassungen aktivieren

  • Führen Sie automatische Optimierungen und Anpassungen gemäß der Art der Umgebung durch

  • Aktivieren Sie Warnsysteme für andere Integrationen von Drittanbietern

  • Warnungen oder Alarme und Benachrichtigungen generieren

  • Berichte wie Grafiken erstellen

  • Abfrageprotokolle (langsame Protokolle) für die Abfrageanalyse verarbeiten

  • Anfrageanalyse generieren

  • Datenbank archivieren oder bereinigen

Es gibt natürlich viele Fälle, die Sie automatisieren könnten, aber dies listet die häufigsten Aufgaben auf und ihre Automatisierung steht außer Frage. Dies sind die Arten von Aufgaben, die sich wiederholen und die meisten fehleranfällig sind, insbesondere wenn sie aus Zeitgründen schnell erledigt werden müssen.

Was sind Dinge, die nicht automatisiert werden sollten?

In diesen Bereichen erledigen Ihre DBAs oder SysAdmins die meiste Arbeit. Automatisierung kann die Fähigkeiten und die Intelligenz des DBA nicht ersetzen, wenn es um Dinge geht, die nicht automatisiert werden können.

Es versteht sich, dass ein DBA qualifiziert sein muss, mit einem profunden Verständnis von:  der Datenbank, die er verwendet, und den Datenbanken, die bereitgestellt werden; die Daten, die verarbeitet und gespeichert werden; und ob die Art und Weise, wie sie verarbeitet werden, sicher ist oder den Sicherheitsstandards des Unternehmens entspricht. DBAs prüfen auch und werden meistens als DevOps sowie als Automatisierungsarchitekten betrachtet. Sie schreiben vor, was zu tun ist und was nicht. Übliche Dinge, die nicht automatisiert werden sollten, sind die folgenden:

 

  • Festlegen Ihrer geplanten Backups. Geplante Sicherungen sind natürlich automatisiert und müssen entsprechend ausgeführt werden, aber die geplanten Daten oder der erforderliche Zeitraum sollten auf den Zeiten mit geringer Auslastung des Servers basieren. Beispielsweise können Sie kein Backup erstellen, wenn der Cluster tagsüber ausgelastet ist. Es gibt auch häufige Fälle, in denen Server nachts immer noch ausgelastet sind, je nach Art der Anwendung, die Sie bedienen, und wo sie sich geografisch befindet.

  • Auto-Failover konnte keinen neuen Master heraufstufen. Dies ist einer der wichtigsten Fälle und muss gut verstanden werden. Wenn Sie automatisierte Skripts für Failover haben, sollten diese nicht so konzipiert sein, dass sie ein Failover erzwingen, falls es fehlschlägt. Möglicherweise wissen Sie nie, was das Hauptproblem ist, und wenn es einen Fehler gibt, kann es Transaktionen geben, die dies getan haben wiederhergestellt werden, bevor irgendetwas anderes getan werden sollte. Beispielsweise könnte es sich um eine Finanztransaktion handeln, die auf dem ausgefallenen Master gespeichert war, und Sie wollten zwangsweise einen Slave befördern, aber der Kandidaten-Slave hatte die letzte Transaktion nicht repliziert. In diesem Fall könnten Sie mit beschädigten Daten enden.

  • Datenwiederherstellung. Wenn Sie auf Datenbeschädigungen stoßen oder sich ein Cluster nicht von Ihrer automatischen Knoten-/Serverwiederherstellung erholen kann, müssen Sie möglicherweise die Hauptursache untersuchen. Sie müssen dies für Ihre RCA (Root Cause Analysis) dokumentieren, um dies in Zukunft zu vermeiden. Es gibt jedoch Fälle, in denen der Fehler auf einen Fehler in der von Ihnen verwendeten Datenbanksoftware oder auf eine Beschädigung der VM zurückzuführen ist.

  • Datendrift oder Dateninkonsistenz. Dies ist definitiv keine ideale Situation für die Automatisierung. Sie möchten nicht, dass Ihr Automat Ihre Daten in eine Praxis verallgemeinert oder stereotypisiert, die dieses Konzept anwenden würde:"Wenn Daten beschädigt sind, lassen Sie uns das automatisch beheben". Es ist definitiv keine gute Praxis. Es gibt viele Fälle, die erst verstanden und untersucht werden müssen, bevor Sie eine Entscheidung treffen können. In MySQL gibt es zum Beispiel ein Percona-Tool namens pt-table-checksum, dann pt-table-sync, für das beide korrelativ zueinander sind, um Dateninkonsistenzen zu beheben. Sie werden dies definitiv nicht automatisieren wollen, es sei denn, Sie kennen Ihre Daten sehr gut, oder Ihre Daten sind nicht umfangreich, oder die Daten können neu generiert werden.

  • Kernel-Tuning und Datenbank-Tuning. Dies kann natürlich als Widerspruch zu dem angesehen werden, was wir oben gesagt haben. Es gibt jedoch automatisch einstellbare Variablen, die für bestimmte Arten von Umgebungen bekannt sind, z. B. Arbeitsspeicher, Pufferpool, HugePages oder Parameter des virtuellen Arbeitsspeichers. Es gibt jedoch definitiv viele Parameter, die verstanden, untersucht, getestet und verglichen werden müssen, bevor Sie sich entscheiden, die Änderungen anzuwenden oder nicht.

Auf jeden Fall gibt es eine Menge Dinge, die Sie nicht automatisieren sollten, die wir nicht erwähnt haben. In der Datenbankwelt gibt es eine Vielzahl von Situationen, die von der Art der Daten und der Anwendung abhängen, die Sie bedienen. Denken Sie daran und achten Sie auf Dinge, die automatisiert werden können. Andernfalls kann die Automatisierung zur Zerstörung führen.

Tools für die Automatisierung

Hier können Sie mit Ihren Automatisierungsskripten beginnen. Die wichtigste Komponente der Automatisierung ist Geschwindigkeit! Geschwindigkeit wird nicht daran gemessen, wie schnell ein Tool die Aufgaben erledigen kann, sondern wie wohl die Entwickler oder Betreuer der Skripte oder IaC mit dem Tool umgehen. Auf jeden Fall gibt es Vor- und Nachteile für diese verfügbaren Automatisierungstools. Wichtiger ist es, die Spezifikationen dieser Automatisierungstools zu bestimmen, da neben der Automatisierung noch mehr zu bieten ist. Häufiger stellen sie Konfigurationsverwaltungs- und Bereitstellungsmechanismen bereit.

Bei der Automatisierung dreht sich alles um Geschwindigkeit, d. h. wie schnell sie im Gegensatz zur Verwendung eines traditionellen Ansatzes oder der Verwendung Ihrer eigenen bevorzugten Sprachskripte ist. Natürlich kann die Verwendung Ihrer eigenen Skripte perfekt sein, aber wenn Ihre Organisation oder Ihr Unternehmen auf technologischen Fortschritt ausgerichtet ist, ist die Verwendung von Tools von Drittanbietern wie Ansible, Puppet, Chef, SaltStack oder Terraform idealer. Warum ist es idealer? Diese Tools von Drittanbietern wurden entwickelt, um lange und langwierige Aufgaben zu bewältigen, und können mit wenigen Codezeilen erledigt werden.

Zum Beispiel ist Terraform für seine Portabilitätsvorteile bekannt. Stellen Sie sich vor, mit Terraform haben Sie ein Tool und eine Sprache zur Beschreibung der Infrastruktur für Google Cloud, AWS, OpenStack und JEDE andere Cloud. Wenn Sie zu einem anderen Anbieter wechseln, müssen Sie Ihre Skripte nicht ändern oder neu erstellen. Es ermöglicht Ihnen auch eine Full-Stack-Bereitstellung, einschließlich der Verwaltung Ihrer Kubernetes-Container. Stellen Sie sich vor, dass Sie mit einem Tool viele Dinge tun können.

Wenn Sie mit Ihrer Datenbankautomatisierung beginnen, fangen Sie nicht bei Null an, denn das Ziel der Automatisierung ist Geschwindigkeit! Auch hier wird die Geschwindigkeit nicht daran gemessen, wie schnell die Arbeit erledigt wird, sondern wie schnell sie im Vergleich zu einem traditionellen Ansatz oder manuellen Aufgaben ist. Natürlich hängt alles davon ab, wie schnell der Job abgeschlossen werden kann, z. B. kann ein Teil Ihrer Skripts aufgrund einer Menge verarbeiteter Daten und langer Jobausführungen zu langen Verzögerungen führen.

Wählen Sie immer nach Ihren Anforderungen

Verlassen Sie sich bei der Auswahl von Tools nicht auf den Hype oder das, was am beliebtesten ist, von dem Sie gehört haben. Obwohl die zuvor erwähnten Mainstream-Tools von der Community weitgehend angenommen werden, führen sie auch zu Komplexität. Wenn Sie beispielsweise Ansible verwenden, müssen Sie mit YAML vertraut sein, während Sie bei Puppet oder Chef mit Ruby und der zugrunde liegenden domänenspezifischen Sprache vertraut sein müssen.

Nutzen Sie die Vorteile der verfügbaren Unternehmenstools

Es gibt viele vielversprechende Tools zur Datenbankautomatisierung, mit denen Sie beginnen können. Wenn Sie das Gefühl haben, dass es unangenehm und zeitaufwändig ist, DBAs, SysAdmins oder DevOps einzustellen, um Ihr Team zu erweitern, stehen Tools zur Verfügung, die Hilfe bei der Datenbankverwaltung, Sicherungsverwaltung und Beobachtbarkeit bieten.

Severalnines ClusterControl für Datenbankautomatisierung

ClusterControl bietet viele automatisierte Aufgaben, die manuelle Vorgehensweisen überflüssig machen. ClusterControl wurde entwickelt, um den Datenbankbetrieb für Organisationen, Unternehmen, DBAs, SysAdmins, DevOps und sogar Entwickler zu vereinfachen. Sein Ziel ist es, lang andauernde und sich wiederholende Aufgaben zu automatisieren. Der große Vorteil von ClusterControl ist, dass es ein ausgereiftes Datenbankmanagement-Tool ist und über umfangreiche Funktionen verfügt, die sehr leistungsfähig sind, um Ihre Datenbankserver zu verwalten. Es wendet auch die aktuellsten Best Practices nach Industriestandard für die Verwaltung Ihrer Datenbanken an. Wir hören uns die Anforderungen unserer Kunden an und implementieren dann Fähigkeiten, um sie zu erfüllen.

Einige der funktionsreichsten ClusterControl-Automatisierungsfunktionen, die Sie nutzen können, sind:

  • Bereitstellung Ihrer Datenbankserver. Wählen Sie den Anbieter aus, geben Sie die richtige Version an, bestimmen Sie den Clustertyp, geben Sie den Hostnamen/IP des Servers wie Benutzername, Passwort usw. an.

  • Import bestehender Server in ClusterControl

  • Bereitstellung in der Cloud

  • Überwachung und Berichterstellung zum Datenbankzustand

  • Warnungen und Benachrichtigungen

  • Sichern und Wiederherstellen

  • Backup-Verifizierung

  • Auto-failover, switchover

  • Hochverfügbarkeits-Setup

  • Befördere einen Sklaven oder degradiere einen Master

  • Neues/vorhandenes Replikat zu Ihrem Cluster hinzufügen

  • Erweitern Sie einen anderen Cluster als Slave eines anderen Clusters (perfekt für die geografische Einrichtung für Ihre Notfallwiederherstellung)

  • Knoten- und Clusterwiederherstellung

  • LDAP-Integration

  • Warnbenachrichtigungen von Drittanbietern

  • Bereitstellung eines beliebigen Load-Balancers aus einer umfangreichen Liste (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )

  • Bereitstellung von agentenbasierter Überwachung mit Prometheus-Exportern

  • Anfrageanalyse

  • Sicherheitsanpassungen

  • Automatisches Tuning für OS-Kernel und Datenbankparameter

Zusätzlich zu all diesen hat ClusterControl auch integrierte Advisors, die es DBAs oder DevOps ermöglichen, ihre eigenen Skripte zu erstellen und in ClusterControl Performance Advisors zu integrieren.

Zusammenfassung

Datenbankautomatisierung hilft dabei, komplexe, aber sich wiederholende Aufgaben auf den neuesten Stand zu bringen. Es hilft DBAs, bei verschiedenen Aufgaben schnell voranzukommen und ihre Fähigkeiten je nach Umfang der Arbeit zu verbessern. Die Datenbankautomatisierung gibt DBAs die Möglichkeit, innovativer zu sein und gleichzeitig die Datenbank bequem zu verwalten. Die Datenbankautomatisierung ersetzt nicht die Rolle des DBA. Es wird immer einen Bedarf an qualifizierten und intelligenten Mitarbeitern geben, um Ihre Datenbanken zu verwalten, insbesondere wenn eine Katastrophe eintritt. Verlassen Sie sich immer auf die Tools, die Ihre DBAs empfehlen, und vertrauen Sie gleichzeitig auf die Fähigkeiten ihrer DBAs, um den Zustand und die Lebensdauer Ihrer Datenbanken zu verwalten.