Gebruikers van open source databases moeten vaak een combinatie van tools en zelfgemaakte scripts gebruiken om hun productiedatabase-omgevingen te beheren. Maar zelfs als je eigen scripts van eigen bodem in de oplossing hebt, is het moeilijk om deze te onderhouden en bij te blijven met nieuwe databasefuncties, beveiligingsvereisten of upgrades. Met nieuwe hoofdversies van een database, waaronder MySQL 8.0, kan deze taak nog moeilijker worden.
De kern van ClusterControl is de automatiseringsfunctionaliteit waarmee u de databasetaken kunt automatiseren die u regelmatig moet uitvoeren, zoals het implementeren van nieuwe databases, het toevoegen en schalen van nieuwe knooppunten, het beheren van back-ups, hoge beschikbaarheid en failover, topologiewijzigingen, upgrades en meer. Geautomatiseerde procedures zijn nauwkeurig, consistent en herhaalbaar, zodat u het risico op wijzigingen in de productieomgevingen kunt minimaliseren.
Bovendien zijn MySQL-gebruikers met ClusterControl niet langer onderworpen aan vendor lock-in; iets dat onlangs door velen in vraag werd gesteld. U kunt een verscheidenheid aan MySQL-versies en leveranciers gratis implementeren en importeren vanaf één enkele console.
In dit artikel laten we u zien hoe u MySQL 8.0 implementeert met een door de strijd geteste configuratie en deze op een geautomatiseerde manier beheert. U vindt hier hoe u dit moet doen:
- ClusterControl-installatie
- MySQL-implementatieproces
- Een nieuw cluster implementeren
- Bestaande cluster importeren
- MySQL schalen
- MySQL beveiligen
- Bewaking en trending
- Back-up en herstel
- Automatisch herstel van knoop- en cluster (automatische failover)
ClusterControl-installatie
Om met ClusterControl te beginnen heeft u een dedicated virtuele machine of host nodig. De vereisten voor de virtuele machine en ondersteunde systemen worden hier beschreven. De basis-VM kan starten vanaf 2 GB, 2 cores en schijfruimte 20 GB opslagruimte, zowel op locatie als in de cloud.
De installatie wordt goed beschreven in de documentatie, maar in feite download je een installatiescript dat je door de stappen leidt. Het wizardscript stelt de interne database in, installeert de benodigde pakketten, opslagplaatsen en andere noodzakelijke aanpassingen. Voor omgevingen zonder internettoegang kunt u het offline installatieproces gebruiken.
ClusterControl vereist SSH-toegang tot de databasehosts en monitoring kan agentgebaseerd of agentloos zijn. Het management is zonder agenten.
Om SSH zonder wachtwoord in te stellen op alle doelknooppunten (ClusterControl en alle databasehosts), voert u de volgende opdrachten uit op de ClusterControl-server:
$ 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
Een van de handigste manieren om clusterbeheer uit te proberen, is misschien de optie om het in een docker-container uit te voeren.
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
Na een succesvolle implementatie zou u toegang moeten hebben tot de ClusterControl Web UI op {host's IP address}:{host's port}, bijvoorbeeld:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Implementatie en schalen
MySQL 8.0 implementeren
Zodra we de ClusterControl-interface openen, moeten we eerst een nieuwe database implementeren of een bestaande importeren. De nieuwe versie 1.7.2 introduceert ondersteuning voor versie 8.0 van Oracle Community Edition en Percona Server. Op het moment van schrijven van deze blog zijn de huidige versies Oracle MySQL Server 8.0.15 en Percona Server voor MySQL 8.0-15. Selecteer de optie "Databasecluster implementeren ” en volg de instructies die verschijnen.
ClusterControl:Databasecluster implementerenBij het kiezen van MySQL moeten we Gebruiker, Sleutel of Wachtwoord en poort specificeren om via SSH verbinding te maken met onze servers. We hebben ook een naam nodig voor ons nieuwe cluster en als we willen dat ClusterControl de bijbehorende software en configuraties voor ons installeert.
Na het instellen van de SSH-toegangsinformatie, moeten we de gegevens invoeren om toegang te krijgen tot onze database. We kunnen ook specificeren welke repository we moeten gebruiken. Repositoryconfiguratie is een belangrijk aspect voor databaseservers en clusters. U kunt drie soorten opslagplaatsen hebben bij het implementeren van databaseserver/cluster met ClusterControl:
- Verkoperrepository gebruiken
Software leveren door de voorkeurssoftwarerepository van de databaseleverancier in te stellen en te gebruiken. ClusterControl installeert de nieuwste versie van wat wordt geleverd door de repository van de databaseleverancier. - Stel geen leveranciersopslagplaatsen in
Lever software door gebruik te maken van de reeds bestaande softwarerepository die al op de nodes is ingesteld. De gebruiker moet de softwarerepository handmatig instellen op elk databaseknooppunt en ClusterControl zal deze repository gebruiken voor implementatie. Dit is goed als de databaseknooppunten zonder internetverbinding werken. - Gespiegelde opslagplaatsen gebruiken (nieuwe opslagplaats maken)
Creëer en spiegel de repository van de huidige databaseleverancier en implementeer deze vervolgens met behulp van de lokale gespiegelde repository. Hiermee kunt u de huidige versies van de softwarepakketten "bevriezen".
In de volgende stap moeten we onze servers toevoegen aan het cluster dat we gaan maken. Bij het toevoegen van onze servers kunnen we IP of hostnaam invoeren en vervolgens netwerkinterface kiezen. Voor dat laatste moeten we een DNS-server hebben of onze MySQL-servers hebben toegevoegd aan het lokale resolutiebestand (/etc/hosts) van onze ClusterControl, zodat het de bijbehorende naam kan oplossen die u wilt toevoegen.
Op het scherm zien we een voorbeeldimplementatie met één master- en twee slave-servers. De serverlijst is dynamisch en stelt u in staat geavanceerde topologieën te creëren die na de eerste installatie kunnen worden uitgebreid.
ClusterControl:topologie definiërenWanneer alles is ingesteld, drukt u op de knop Implementeren. U kunt de status van het maken van onze nieuwe replicatieconfiguratie volgen via de ClusterControl-activiteitenmonitor. Het implementatieproces zorgt ook voor de installatie van populaire mysql-tools zoals percona toolkit en percona-xtradb-backup.
ClusterControl:Clusterdetails implementerenZodra de taak is voltooid, kunnen we ons cluster zien in het hoofdscherm van ClusterControl en in de topologieweergave. Merk op dat we ook een load balancer (ProxySQL) hebben toegevoegd voor de database-instanties.
ClusterControl:TopologieZoals we in de afbeelding kunnen zien, kunnen we, zodra we ons cluster hebben gemaakt, er verschillende taken op uitvoeren, rechtstreeks vanuit de topologiesectie.
ClusterControl:topologiebeheerEen nieuw cluster importeren
We hebben ook de mogelijkheid om een bestaande setup te beheren door deze te importeren in ClusterControl. Zo'n omgeving kan gecreëerd worden door ClusterControl of andere methodes (puppet, chef, ansible, docker …). Het proces is eenvoudig en vereist geen gespecialiseerde kennis.
ClusterControl:bestaande cluster importerenEerst moeten we de SSH-toegangsreferenties voor onze servers invoeren. Vervolgens voeren we de toegangsreferenties in voor onze database, de servergegevensdirectory en de versie. We voegen de knooppunten toe op IP of hostnaam, op dezelfde manier als wanneer we implementeren, en drukken op Importeren. Zodra de taak is voltooid, zijn we klaar om ons cluster te beheren vanuit ClusterControl. Op dit punt kunnen we ook de opties definiëren voor automatisch herstel van knooppunten of clusters.
MySQL schalen
Met ClusterControl is het toevoegen van meer servers aan de server een eenvoudige stap. U kunt dat doen vanuit de GUI of CLI. Voor meer gevorderde gebruikers kunt u ClusterControl Developer Studio gebruiken en een resourcebase-voorwaarde schrijven om uw cluster automatisch uit te breiden.
Wanneer u een nieuw knooppunt aan de installatie toevoegt, heeft u de mogelijkheid om bestaande back-up te gebruiken, zodat u het productiehoofdknooppunt niet hoeft te overweldigen met extra werk.
ClusterControl Scaling MySQLMet de ingebouwde ondersteuning voor load balancers (ProxySQL, Maxscale, HAProxy) kunt u dynamisch MySQL-knooppunten toevoegen en verwijderen. Als u meer wilt weten over hoe u MySQL-replicatie en clustering het beste kunt beheren, leest u de whitepaper MySQL-replicatie voor HA-replicatie.
MySQL beveiligen
MySQL wordt standaard geleverd met zeer weinig beveiliging. Dit is verbeterd met de recente versie, maar productiekwaliteitssystemen vereisen nog steeds tweeks in de standaard my.cnf-configuratie.
ClusterControl verwijdert menselijke fouten en biedt toegang tot een reeks beveiligingsfuncties om uw databases automatisch te beschermen tegen hacks en andere bedreigingen.
ClusterControl maakt SSL-ondersteuning voor MySQL-verbindingen mogelijk. Het inschakelen van SSL voegt een extra beveiligingsniveau toe voor de communicatie tussen de applicaties (inclusief ClusterControl) en de database. MySQL-clients openen versleutelde verbindingen met de databaseservers en verifiëren de identiteit van die servers voordat gevoelige informatie wordt overgedragen.
ClusterControl voert alle noodzakelijke stappen uit, inclusief het maken van certificaten op alle databaseknooppunten. Dergelijke certificaten kunnen later worden onderhouden op het tabblad Sleutelbeheer.
ClusterControl:SSL-sleutels beherenDe Percona-serverinstallaties worden geleverd met extra ondersteuning voor een audit-plug-in. Continue auditing is een noodzakelijke taak voor het bewaken van uw databaseomgeving. Door uw database te controleren, kunt u verantwoordelijkheid nemen voor ondernomen acties of geopende inhoud. Bovendien kan de audit enkele kritieke systeemcomponenten bevatten, zoals degene die verband houden met financiële gegevens ter ondersteuning van een precieze reeks voorschriften zoals SOX of de EU AVG-verordening. Met het begeleide proces kunt u kiezen wat er moet worden gecontroleerd en hoe u de controlelogboekbestanden wilt onderhouden.
ClusterControl:Auditlogboek inschakelen voor Percona Server 8.0Bewaking
Als u met databasesystemen werkt, moet u deze kunnen controleren. Zo kunt u trends identificeren, upgrades of verbeteringen plannen of effectief reageren op eventuele problemen of fouten die zich kunnen voordoen.
De nieuwe ClusterControl 1.7.2 wordt geleverd met bijgewerkte monitoring met hoge resolutie voor MySQL 8.0. Het gebruikt Prometheus als de gegevensopslag met de PromQL-querytaal. De lijst met dashboards omvat MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview en Cluster Overview Dashboards.
ClusterControl installeert Prometheus-agents, configureert metrische gegevens en onderhoudt toegang tot de configuratie van Prometheus-exporteurs via de GUI, zodat u de parameterconfiguratie zoals collectorvlaggen voor de exporteurs (Prometheus) beter kunt beheren. In het artikel MySQL monitoren met Prometheus &ClusterControl hebben we in detail beschreven wat recentelijk kan worden gemonitord.
ClusterControl:DashboardWaarschuwing
Als database-operator moeten we worden geïnformeerd wanneer er iets kritieks gebeurt in onze database. De drie belangrijkste methoden in ClusterControl om een waarschuwing te krijgen zijn:
- e-mailmeldingen
- integraties
- adviseurs
U kunt de e-mailmeldingen op gebruikersniveau instellen. Ga naar Instellingen> E-mailmeldingen . Waar u kunt kiezen tussen kritiekheid en het type waarschuwing dat moet worden verzonden.
ClusterControl:meldingDe volgende methode is het gebruik van integratieservices. Dit is om de specifieke categorie evenementen door te geven aan de andere service, zoals ServiceNow-tickets, Slack, PagerDuty enz., zodat u geavanceerde meldingsmethoden en integraties binnen uw organisatie kunt creëren.
ClusterControl:integratieDe laatste is om geavanceerde metrische analyse in het gedeelte Advisor te betrekken, waar u intelligente controles en triggers kunt bouwen.
ClusterControl:automatische adviseursBack-up en herstel
Nu je MySQL in de lucht hebt en je monitoring hebt geïnstalleerd, is het tijd voor de volgende stap:zorg ervoor dat je een back-up van je gegevens hebt.
ClusterControl:back-up makenClusterControl biedt een interface voor MySQL-back-upbeheer met ondersteuning voor planning en creatieve rapporten. Het geeft je twee opties voor back-upmethoden.
- Logisch:mysqldump
- Binair:xtrabackup/mariabackup
Een goede back-upstrategie is een essentieel onderdeel van elk databasebeheersysteem. ClusterControl biedt veel opties voor back-ups en herstel/herstel.
ClusterControl:back-upschema en back-uprepositoryClusterControl back-upretentie is configureerbaar; u kunt ervoor kiezen om uw back-up voor elke tijdsperiode te bewaren of om back-ups nooit te verwijderen. AES256-codering wordt gebruikt om uw back-ups te beveiligen tegen frauduleuze elementen. Voor snel herstel kunnen back-ups direct in een nieuw cluster worden teruggezet - ClusterControl verzorgt het volledige herstelproces van de lancering van een nieuwe database-setup tot het herstellen van gegevens, waarbij foutgevoelige handmatige stappen uit het proces worden verwijderd.
Back-ups kunnen na voltooiing automatisch worden geverifieerd en vervolgens worden geüpload naar cloudopslagservices (AWS, Azure en Google). Er kunnen verschillende bewaarbeleidsregels worden gedefinieerd voor lokale back-ups in het datacenter en voor back-ups die in de cloud worden geüpload.
Automatisch herstel van knoop- en cluster
ClusterControl biedt geavanceerde ondersteuning voor storingsdetectie en -afhandeling. Het stelt je ook in staat om verschillende proxy's te implementeren om ze te integreren met je HA-stack, zodat het niet nodig is om de applicatieverbindingsreeks of dns-invoer aan te passen om de applicatie om te leiden naar het nieuwe hoofdknooppunt.
Wanneer de masterserver niet beschikbaar is, maakt ClusterControl een taak om automatische failover uit te voeren. ClusterControl doet al het achtergrondwerk om een nieuwe master te kiezen, fail-over slave-servers te implementeren en load balancers te configureren.
ClusterControl:automatisch herstel van knooppuntClusterControl automatische failover is ontworpen met de volgende principes:
- Zorg ervoor dat de master echt dood is voordat je een failover uitvoert
- Slechts één keer failover
- Maak geen failover naar een inconsistente slaaf
- Schrijf alleen naar de master
- Herstel de mislukte master niet automatisch
Met de ingebouwde algoritmen kan een failover vaak vrij snel worden uitgevoerd, zodat u verzekerd bent van de hoogste SLA's voor uw database-omgeving.
Het proces is zeer configureerbaar. Het wordt geleverd met meerdere parameters die u kunt gebruiken om herstel aan te passen aan de specifieke kenmerken van uw omgeving. Onder de verschillende opties vindt u replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script en vele anderen.