PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verwendung von Automatisierung zur Beschleunigung von Release-Tests auf PostgreSQL

Eine Testumgebung ist ein Muss in allen Unternehmen. Dies kann zum Testen von Änderungen oder neuen Versionen der Anwendung oder sogar zum Testen Ihrer vorhandenen Anwendung mit einer neuen PostgreSQL-Version erforderlich sein. Der schwierige Teil dabei ist zunächst, wie man eine Testumgebung bereitstellt, die der Produktionsumgebung so ähnlich wie möglich ist, und wie man diese Umgebung pflegt, ohne alles von Grund auf neu zu erstellen.

In diesem Blog werden wir sehen, wie Sie eine Testumgebung mit ClusterControl auf verschiedene Arten bereitstellen können, was Ihnen hilft, den Prozess zu automatisieren und manuelle zeitaufwändige Aufgaben zu vermeiden.

Cluster-zu-Cluster-Replikation

Seit ClusterControl 1.7.4 gibt es eine Funktion namens Cluster-zu-Cluster-Replikation. Es ermöglicht Ihnen, eine Replikation zwischen zwei autonomen Clustern laufen zu lassen.

Wir sehen uns an, wie Sie diese Funktion für einen vorhandenen PostgreSQL-Cluster verwenden können. Für diese Aufgabe gehen wir davon aus, dass Sie ClusterControl installiert haben und der primäre Cluster damit bereitgestellt wurde.

Cluster-zu-Cluster-Replikation erstellen

Um eine neue Cluster-zu-Cluster-Replikation über die ClusterControl-Benutzeroberfläche zu erstellen, gehen Sie zu ClusterControl -> PostgreSQL-Cluster auswählen -> Cluster-Aktionen -> Slave-Cluster erstellen.

Der Slave-Cluster wird durch Streaming von Daten aus dem aktuellen primären Cluster erstellt.

Sie müssen SSH-Anmeldeinformationen und -Port angeben, einen Namen für Ihren Slave-Cluster und ob ClusterControl die entsprechende Software und Konfigurationen für Sie installieren soll.

Nachdem Sie die SSH-Zugriffsinformationen eingerichtet haben, müssen Sie die Datenbankversion, das Datenverzeichnis, den Port und die Anmeldeinformationen des Administrators definieren. Da die Streaming-Replikation verwendet wird, stellen Sie sicher, dass Sie dieselbe Datenbankversion verwenden und dass die Anmeldeinformationen dieselben sein müssen, die vom primären Cluster verwendet werden.

In diesem Schritt müssen Sie den Server zum neuen Slave-Cluster hinzufügen. Für diese Aufgabe können Sie sowohl die IP-Adresse als auch den Hostnamen des Datenbankknotens eingeben.

Sie können den Jobstatus im Aktivitätsmonitor von ClusterControl überwachen. Sobald die Aufgabe abgeschlossen ist, können Sie den Cluster auf dem Hauptbildschirm von ClusterControl sehen.

ClusterControl-CLI

ClusterControl CLI, auch als s9s bekannt, ist ein in ClusterControl Version 1.4.1 eingeführtes Befehlszeilentool zur Interaktion, Steuerung und Verwaltung von Datenbank-Clustern mithilfe des ClusterControl-Systems. Die ClusterControl-CLI öffnet eine neue Tür für die Cluster-Automatisierung, wo Sie sie einfach in vorhandene Bereitstellungsautomatisierungstools wie Ansible, Puppet, Chef usw. integrieren können. Sie können dieses ClusterControl-Tool auch zum Erstellen eines Slave-Clusters verwenden. Sehen wir uns ein Beispiel an:

$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log

Sehen wir uns nun den verwendeten Parameter genauer an:

  • Cluster:Um Cluster aufzulisten und zu manipulieren.

  • Erstellen:Erstellen und installieren Sie einen neuen Cluster.

  • Cluster-Name:Der Name des neuen Slave-Clusters.

  • Clustertyp:Der zu installierende Clustertyp.

  • Provider-Version:Die Software-Version.

  • Knoten:Liste der neuen Knoten im Slave-Cluster.

  • Os-user:Der Benutzername für die SSH-Befehle.

  • OS-Schlüsseldatei:Die Schlüsseldatei, die für die SSH-Verbindung verwendet werden soll.

  • Db-admin:Der Benutzername des Datenbankadministrators.

  • Db-admin-passwd:Das Passwort für den Datenbankadministrator.

  • Remote-cluster-id:Master-Cluster-ID für die Cluster-zu-Cluster-Replikation.

  • Log:Jobmeldungen abwarten und überwachen.

Cluster-zu-Cluster-Replikation verwalten

Nun haben Sie Ihre Cluster-zu-Cluster-Replikation eingerichtet und ausgeführt, es gibt verschiedene Aktionen, die Sie in dieser Topologie mit ClusterControl sowohl von der Benutzeroberfläche als auch von der CLI ausführen können.

Neuaufbau eines Slave-Clusters

Um einen Slave-Cluster neu aufzubauen, gehen Sie zu ClusterControl -> Select Slave Cluster -> Nodes -> Choose the Node -> Node Actions -> Rebuild Replication Slave.

ClusterControl führt die folgenden Schritte aus:

  • PostgreSQL-Server stoppen

  • Inhalt aus seinem Datenverzeichnis entfernen

  • Streamen Sie mit pg_basebackup ein Backup vom Master zum Slave

  • Starte den Slave

Sie können einen Slave-Cluster auch mit dem folgenden Befehl vom ClusterControl-Server neu aufbauen:

$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log

Die Parameter sind:

  • Replikation:Zur Überwachung und Steuerung der Datenreplikation.

  • Stufe:Stufe/Wiederaufbau eines Replikations-Slaves.

  • Master:Der Replikations-Master im Master-Cluster.

  • Slave:Der Replikations-Slave im Slave-Cluster.

  • Cluster-id:Die Slave-Cluster-ID.

  • Remote-cluster-id:Die Master-Cluster-ID.

  • Log:Jobmeldungen abwarten und überwachen.

Cluster aus Backup erstellen

Eine andere Möglichkeit, eine Testumgebung zu erstellen, besteht darin, einen neuen Cluster aus einer Sicherung Ihres primären Clusters zu erstellen. Gehen Sie dazu zu ClusterControl -> Select your PostgreSQL cluster -> Backup. Wählen Sie dort das wiederherzustellende Backup aus der Liste aus.

Jetzt können Sie diese Sicherung in Ihrer aktuellen Datenbank oder in einem separaten Knoten wiederherstellen oder aus dieser Sicherung einen neuen Cluster erstellen.

Die Option „Cluster aus Backup erstellen“ erstellt einen neuen PostgreSQL-Cluster aus dem ausgewählten Backup.

Sie müssen die Betriebssystem- und Datenbankanmeldeinformationen sowie die Informationen zum Bereitstellen des neuen Clusters hinzufügen. Wenn dieser Job abgeschlossen ist, sehen Sie den neuen Cluster in der ClusterControl-Benutzeroberfläche.

Sicherung auf eigenständigem Host wiederherstellen

Im gleichen Sicherungsabschnitt können Sie die Option „Auf eigenständigem Host wiederherstellen und überprüfen“ auswählen, um eine Sicherung in einem separaten Knoten wiederherzustellen.

Hier können Sie angeben, ob ClusterControl die Software auf dem neuen Knoten installieren soll, und die Firewall oder AppArmor/SELinux (je nach Betriebssystem) deaktivieren. Sie können den Knoten am Laufen halten oder ClusterControl kann den Datenbankdienst bis zum nächsten Wiederherstellungsjob herunterfahren. Wenn es fertig ist, sehen Sie das wiederhergestellte/verifizierte Backup in der Backup-Liste mit einem Häkchen markiert.

Wenn Sie diese Aufgabe nicht manuell ausführen möchten, können Sie diesen Vorgang mit der Funktion "Sicherung überprüfen" planen, um diesen Job regelmäßig in einem Sicherungsjob zu wiederholen.

Automatische ClusterControl-Backup-Verifizierung

In ClusterControl -> PostgreSQL-Cluster auswählen -> Backup -> Backup erstellen.

Die Funktion zur automatischen Überprüfung der Sicherung ist für geplante Sicherungen verfügbar. Beim Planen einer Sicherung müssen Sie zusätzlich zur Auswahl der allgemeinen Optionen wie Methode oder Speicher auch Zeitplan/Häufigkeit angeben.

Mit ClusterControl können Sie je nach Datenbanktechnologie verschiedene Backup-Methoden auswählen und im selben Abschnitt den Server auswählen, von dem die Sicherung erfolgen soll, auf dem Sie die Sicherung speichern möchten , und ob Sie die Sicherung in die Cloud (AWS, Azure oder Google Cloud) hochladen möchten. Sie können Ihr Backup auch komprimieren und verschlüsseln und den Aufbewahrungszeitraum angeben.

Um die Funktion "Sicherung überprüfen" zu verwenden, benötigen Sie einen dedizierten Host (oder eine VM), der nicht Teil des Clusters ist. ClusterControl installiert die Software und stellt die Sicherung jedes Mal auf diesem Host wieder her, wenn der Job ausgeführt wird.

Nach der Wiederherstellung sehen Sie das Verifizierungssymbol im ClusterControl Backup-Bereich, das gleiche wie bei der manuellen ClusterControl-Verifizierung, mit dem Unterschied, dass Sie sich keine Sorgen machen müssen über die Restaurierungsaufgabe. ClusterControl stellt das Backup jedes Mal automatisch wieder her.

Fazit

Das Bereitstellen einer Testumgebung bei Bedarf kann eine zeitaufwändige Aufgabe sein, und es ist schwierig, diese auf dem neuesten Stand zu halten. Die Folge davon ist, dass Unternehmen manchmal neue Releases nicht testen oder der Test nicht korrekt ist, beispielsweise weil eine andere Umgebung als die Produktionsumgebung verwendet wird.

Wie Sie sehen konnten, ermöglicht Ihnen ClusterControl, mit nur wenigen Klicks dieselbe Umgebung bereitzustellen, die Sie in der Produktion verwenden, oder den Prozess sogar zu automatisieren, um manuelle Aufgaben zu vermeiden.