sql >> Database >  >> RDS >> MariaDB

Geautomatiseerd testen van het upgradeproces voor MySQL/MariaDB/Percona Server

Upgrades zijn altijd een moeilijke en tijdrovende taak. Test eerst je applicatie in een testomgeving, dus idealiter moet je hiervoor je huidige productieomgeving klonen. Vervolgens moet u een plan maken om de upgrade uit te voeren die, afhankelijk van het bedrijf, zonder downtime (of bijna nul) zou kunnen zijn, of zelfs een onderhoudsperiode plannen om ervoor te zorgen dat als er iets misgaat, dit zo weinig mogelijk gevolgen heeft mogelijk.

Als je al deze dingen handmatig wilt doen, is er een grote kans op menselijke fouten en zal het proces traag verlopen. In deze blog zullen we zien hoe u het testen voor het upgraden van uw MySQL-, MariaDB- of Percona Server-databases kunt automatiseren met ClusterControl.

Type upgrades

Er zijn twee soorten upgrades:kleine upgrades en grote upgrades.

Kleine upgrades

De eerste, kleine upgrade, is de meest gebruikelijke en veilige upgrade, en in de meeste gevallen wordt deze ter plekke uitgevoerd. Aangezien niets 100% veilig is, moet u altijd back-ups en replicatie-slave-knooppunten hebben, dus als er iets misgaat met de upgrade en u om de een of andere reden niet kunt terugdraaien/downgraden, kunt u een slave-knooppunt promoten en uw systemen kunnen nog steeds werk zonder onderbreking.

U kunt dit soort upgrade uitvoeren met ClusterControl. Ga hiervoor naar ClusterControl -> Selecteer de Cluster -> Beheren -> Upgrades.

Op elk geselecteerd knooppunt zal de upgradeprocedure:

  • Stop Node

  • Knooppunt upgraden

  • Start Node

Het hoofdknooppunt in een replicatietopologie wordt niet geüpgraded. Om de Master te upgraden, moet eerst een ander knooppunt worden gepromoveerd om de nieuwe Master te worden.

Belangrijke upgrades

Voor grote upgrades wordt de interne upgrade niet aanbevolen, omdat het risico dat er iets misgaat te groot is voor een productieomgeving. In plaats daarvan kunt u uw huidige databasecluster klonen en uw toepassing daar testen, en wanneer u klaar bent, kunt u deze opnieuw maken of zelfs een nieuwe cluster maken in de nieuwe versie en het verkeer omschakelen wanneer deze gereed is. Er zijn verschillende benaderingen voor deze upgrades. U kunt de knooppunten één voor één upgraden of een ander cluster maken dat het verkeer van het huidige repliceert, u kunt ook load balancers gebruiken om de hoge beschikbaarheid te verbeteren en meer opties. De beste aanpak hangt af van de downtime-tolerantie en de Recovery Time Objective (RTO).

U kunt Major Upgrades niet rechtstreeks met ClusterControl uitvoeren, omdat, zoals we al zeiden, u eerst alles moet testen om er zeker van te zijn dat de upgrade veilig is, maar u kunt verschillende ClusterControl-functies gebruiken om deze taak gemakkelijker. Laten we eens kijken naar enkele van deze functies.

Back-ups

Back-ups zijn een must voor elke upgrade. Een goed back-upbeleid kan grote problemen voor het bedrijf voorkomen. Laten we dus eens kijken hoe ClusterControl dit kan automatiseren.

Een back-up maken

Ga naar ClusterControl -> Selecteer de Cluster -> Back-up -> Back-up maken.

U kunt een nieuwe back-up maken of een geplande back-up configureren.

U kunt 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 of u de back-up in dezelfde taak naar de cloud (AWS, Azure of Google Cloud) wilt uploaden.

U kunt uw back-up ook comprimeren en versleutelen, en onder andere de bewaarperiode specificeren.

In het back-upgedeelte kunt u de voortgang van de back-up zien en informatie zoals de methode, grootte, locatie en meer.

Een testomgeving implementeren

Hiervoor hoef je niet alles helemaal opnieuw te maken. In plaats daarvan kunt u ClusterControl gebruiken om dit handmatig of geautomatiseerd te doen.

Back-up terugzetten op zelfstandige host

In het gedeelte 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). Hiervoor heb je een dedicated host (of VM) nodig die geen deel uitmaakt van het cluster.

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. In het volgende gedeelte gaan we kijken hoe we dit kunnen doen.

Automatische ClusterControl-back-upverificatie

Als u deze taak wilt automatiseren, gaat u naar ClusterControl -> Selecteer uw cluster -> Back-up -> Back-up maken en kiest u de optie Geplande back-up.

De automatische functie Back-up verifiëren is alleen beschikbaar voor geplande back-ups en het proces is hetzelfde dat we in een vorige sectie hebben beschreven. Zorg er in de tweede stap voor dat u de optie Back-up verifiëren hebt ingeschakeld en vul de vereiste informatie in.

Wanneer de taak is voltooid, ziet u het verificatiepictogram in het gedeelte ClusterControl Backup, hetzelfde dat u zult hebben door de verificatie op de handmatige manier uit te voeren, met het verschil dat u het niet nodig hebt zorgen te maken over de restauratie taak. ClusterControl herstelt de back-up elke keer automatisch en u kunt uw applicatie testen met de meest recente gegevens.

Autoherstel en failover

Als de Autorecovery-functie is ingeschakeld, zal ClusterControl in geval van storing de meest geavanceerde slave-node tot master promoveren en u op de hoogte stellen van het probleem. Het faalt ook om de rest van de slave-knooppunten te repliceren vanaf de nieuwe masterserver.

Als er Load Balancers in de topologie zijn, zal ClusterControl deze opnieuw configureren om de wijzigingen in de topologie toe te passen.

U kunt indien nodig ook handmatig een failover uitvoeren. Ga naar ClusterControl -> Selecteer het cluster -> Knooppunten -> Selecteer het knooppunt dat moet worden gepromoot -> Knooppuntacties -> Slave promoten.

Op deze manier kun je ClusterControl gebruiken om het zo snel mogelijk op te lossen als er iets misgaat tijdens de upgrade.

Dingen automatiseren met 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 deur voor clusterautomatisering waar u het eenvoudig kunt integreren met bestaande automatiseringstools voor implementatie, zoals Ansible, Puppet, Chef, enz. Laten we nu enkele voorbeelden van deze tool bekijken.

Upgrade

$ s9s cluster --cluster-id=19 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=19 \
--available-upgrades \
--nodes='10.10.10.146' \
--log \
--print-json
$ s9s cluster --cluster-id=19 \
--upgrade-cluster \
--nodes='10.10.10.146' \
--log

Back-up maken

$ s9s backup --create \
--backup-method=mysqldump \
--cluster-id=2 \
--nodes=10.10.10.146:3306 \
--on-controller \
--backup-directory=/storage/backups
--log

Back-up terugzetten

$ s9s backup --restore \
--cluster-id=19 \
--backup-id=3 \
--wait

Back-ups verifiëren

$ s9s backup --verify \
--backup-id=3 \
--test-server=10.10.10.151 \
--cluster-id=19 \
--log

Slaafknooppunt promoten

$ s9s cluster --promote-slave \
--cluster-id=19 \
--nodes='10.10.10.146' \
--log

Conclusie

Upgrades zijn noodzakelijke maar tijdrovende taken. Elke keer dat u moet upgraden een testomgeving implementeren, kan een nachtmerrie zijn, en het is moeilijk om deze up-to-date te houden zonder een automatiseringstool.

Met ClusterControl kunt u kleine upgrades uitvoeren of zelfs de testomgeving implementeren om de upgradetaak eenvoudiger en veiliger te maken. Je kunt het ook integreren met verschillende automatiseringstools zoals Ansible, Puppet en meer.


  1. Het niet-vastgelegde isolatieniveau lezen

  2. Negatieve waarden opmaken met haakjes in SQL Server (T-SQL)

  3. Is er een Booleaans gegevenstype in Microsoft SQL Server zoals in MySQL?

  4. Eerst bestellen op specifieke veldwaarde