sql >> Database >  >> RDS >> PostgreSQL

Automatisering gebruiken om releasetests op PostgreSQL te versnellen

Het hebben van een testomgeving is een must in alle bedrijven. Het kan nodig zijn om wijzigingen of nieuwe releases van de applicatie te testen, of zelfs om uw bestaande applicatie te testen met een nieuwe PostgreSQL-versie. Het moeilijkste hiervan is, ten eerste, hoe je een testomgeving implementeert die zo veel mogelijk lijkt op de productieomgeving, en hoe je die omgeving onderhoudt zonder alles opnieuw te creëren.

In deze blog zullen we zien hoe u een testomgeving op verschillende manieren kunt implementeren met ClusterControl, waarmee u het proces kunt automatiseren en handmatige tijdrovende taken kunt vermijden.

Cluster-naar-cluster replicatie

Sinds ClusterControl 1.7.4 is er een functie genaamd Cluster-naar-Cluster-replicatie. Hiermee kunt u een replicatie uitvoeren tussen twee autonome clusters.

We zullen bekijken hoe u deze functie kunt gebruiken voor een bestaand PostgreSQL-cluster. Voor deze taak gaan we ervan uit dat u ClusterControl hebt geïnstalleerd en dat het primaire cluster ermee is geïmplementeerd.

Een cluster-naar-cluster-replicatie maken

Als u een nieuwe Cluster-naar-Cluster-replicatie wilt maken vanuit de ClusterControl-gebruikersinterface, gaat u naar ClusterControl -> Selecteer PostgreSQL-cluster -> Clusteracties -> Slave-cluster maken.

Het slavecluster wordt gemaakt door gegevens uit het huidige primaire cluster te streamen.

U moet SSH-referenties en poort opgeven, een naam voor uw Slave Cluster, en als u wilt dat ClusterControl de bijbehorende software en configuraties voor u installeert.

Na het instellen van de SSH-toegangsinformatie, moet u de databaseversie, datadir, poort en beheerdersreferenties definiëren. Aangezien het streaming-replicatie gebruikt, moet u ervoor zorgen dat u dezelfde databaseversie gebruikt en dat de inloggegevens dezelfde zijn die worden gebruikt door het primaire cluster.

In deze stap moet u de server toevoegen aan het nieuwe Slave-cluster. Voor deze taak kunt u zowel het IP-adres als de hostnaam van het databaseknooppunt invoeren.

U kunt de taakstatus controleren in de ClusterControl-activiteitenmonitor. Zodra de taak is voltooid, kunt u het cluster zien in het hoofdscherm van ClusterControl.

ClusterControl CLI

ClusterControl CLI, ook bekend als s9s, is een opdrachtregelprogramma dat is geïntroduceerd in ClusterControl versie 1.4.1 voor interactie, controle en beheer van databaseclusters met behulp van het ClusterControl-systeem. ClusterControl CLI opent een nieuwe deur voor clusterautomatisering, waar u het eenvoudig kunt integreren met bestaande automatiseringstools voor implementatie, zoals Ansible, Puppet, Chef, enz. U kunt deze ClusterControl-tool ook gebruiken om een ​​Slave Cluster te maken. Laten we een voorbeeld bekijken:

$ 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

Laten we nu de gebruikte parameter meer in detail bekijken:

  • Cluster:clusters weergeven en manipuleren.

  • Maken:maak en installeer een nieuw cluster.

  • Clusternaam:de naam van het nieuwe slavencluster.

  • Clustertype:het type cluster dat moet worden geïnstalleerd.

  • Providerversie:de softwareversie.

  • Knooppunten:lijst met de nieuwe knooppunten in het slavecluster.

  • Os-user:de gebruikersnaam voor de SSH-opdrachten.

  • Os-key-file:het sleutelbestand dat moet worden gebruikt voor SSH-verbinding.

  • Db-admin:de gebruikersnaam van de databasebeheerder.

  • Db-admin-passwd:het wachtwoord voor de databasebeheerder.

  • Remote-cluster-id:hoofdcluster-ID voor de cluster-naar-clusterreplicatie.

  • Logboek:wacht en controleer taakberichten.

Cluster-naar-cluster replicatie beheren

Nu uw Cluster-naar-Cluster-replicatie actief is, kunt u verschillende acties uitvoeren op deze topologie met ClusterControl vanuit zowel de gebruikersinterface als de CLI.

Een slavencluster opnieuw opbouwen

Om een ​​Slave Cluster opnieuw op te bouwen, gaat u naar ClusterControl -> Selecteer Slave Cluster -> Knooppunten -> Kies het Knooppunt -> Knooppuntacties -> Rebuild Replication Slave.

ClusterControl voert de volgende stappen uit:

  • PostgreSQL-server stoppen

  • Verwijder inhoud uit de datadir

  • Stream een ​​back-up van de master naar de slave met pg_basebackup

  • Start de Slave

U kunt een slavecluster ook opnieuw opbouwen met de volgende opdracht van de ClusterControl-server:

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

De parameters zijn:

  • Replicatie:om gegevensreplicatie te bewaken en te controleren.

  • Fase:een replicatieslave uitvoeren/opnieuw bouwen.

  • Master:de replicatiemaster in het mastercluster.

  • Slave:de replicatieslave in het slavecluster.

  • Cluster-id:de slavecluster-ID.

  • Remote-cluster-id:de hoofdcluster-ID.

  • Logboek:wacht en controleer taakberichten.

Cluster maken van back-up

Een andere manier om een ​​testomgeving te maken is door een nieuw cluster te maken vanaf een back-up van uw primaire cluster. Ga hiervoor naar ClusterControl -> Selecteer je PostgreSQL-cluster -> Back-up. Kies daar de back-up die moet worden hersteld uit de lijst.

U kunt deze back-up nu terugzetten in uw huidige database, in een apart knooppunt, of een nieuw cluster maken van deze back-up.

De optie "Cluster maken van back-up" maakt een nieuw PostgreSQL-cluster van de geselecteerde back-up.

U moet het besturingssysteem en de databasereferenties en de informatie toevoegen om het nieuwe cluster te implementeren. Wanneer deze taak is voltooid, ziet u het nieuwe cluster in de gebruikersinterface van ClusterControl.

Back-up terugzetten op zelfstandige host

In dezelfde sectie Back-up kunt u de optie "Herstellen en verifiëren op zelfstandige host" kiezen om een ​​back-up in een apart knooppunt te herstellen.

Hier kunt u specificeren of u wilt dat ClusterControl de software in het nieuwe knooppunt installeert, en de firewall of AppArmor/SELinux uitschakelen (afhankelijk van het besturingssysteem). U kunt het knooppunt actief houden, of ClusterControl kan de databaseservice afsluiten tot de volgende hersteltaak. Als het klaar is, ziet u de herstelde/geverifieerde back-up in de back-uplijst gemarkeerd met een vinkje.

Als u deze taak niet handmatig wilt uitvoeren, kunt u dit proces plannen met de functie Back-up verifiëren, om deze taak periodiek in een back-uptaak ​​te herhalen.

Automatische ClusterControl-back-upverificatie

In ClusterControl -> Selecteer uw PostgreSQL-cluster -> Back-up -> Back-up maken.

De functie voor het automatisch verifiëren van back-ups is beschikbaar voor de geplande back-ups. Wanneer u een back-up plant, moet u naast het selecteren van de algemene opties zoals methode of opslag ook de planning/frequentie specificeren.

Met ClusterControl kunt u verschillende back-upmethoden kiezen, afhankelijk van de databasetechnologie, en in dezelfde sectie kunt u de server kiezen waarvan u de back-up wilt maken, waar u de back-up wilt opslaan , en als u de back-up wilt uploaden naar de cloud (AWS, Azure of Google Cloud). U kunt uw back-up ook comprimeren en coderen en de bewaarperiode specificeren.

Als u de functie Back-up verifiëren wilt gebruiken, hebt u een speciale host (of VM) nodig die geen deel uitmaakt van het cluster. ClusterControl installeert de software en herstelt de back-up in deze host elke keer dat de taak wordt uitgevoerd.

Na het terugzetten ziet u het verificatiepictogram in het gedeelte ClusterControl Backup, hetzelfde als wanneer u de verificatie op de handmatige ClusterControl-manier uitvoert, met het verschil dat u zich geen zorgen hoeft te maken over de restauratieopdracht. ClusterControl herstelt de back-up elke keer automatisch.

Conclusie

Het implementeren van een testomgeving elke keer dat je nodig hebt, kan een tijdrovende taak zijn, en het is moeilijk om deze up-to-date te houden. Het resultaat hiervan is dat bedrijven soms nieuwe releases niet testen of de test niet correct is, bijvoorbeeld met een andere omgeving dan de productieomgeving.

Zoals u kunt zien, stelt ClusterControl u in staat om met slechts een paar klikken dezelfde omgeving te implementeren die u in productie gebruikt, of zelfs het proces te automatiseren om handmatige taken te vermijden.


  1. SQLite AVG

  2. Hoe het queryresultaat naar Excel te exporteren in Oracle SQL Developer?

  3. DB-migratie met de NextForm Multi-Table Wizard

  4. Produceer DISTINCT-waarden in STRING_AGG