Brugere af open source-databaser skal ofte bruge en blanding af værktøjer og hjemmelavede scripts til at administrere deres produktionsdatabasemiljøer. Men selvom man har egne hjemmelavede scripts i løsningen, er det svært at vedligeholde det og holde trit med nye databasefunktioner, sikkerhedskrav eller opgraderinger. Med nye større versioner af en database, inklusive MySQL 8.0, kan denne opgave blive endnu sværere.
Kernen i ClusterControl er dens automatiseringsfunktionalitet, der lader dig automatisere de databaseopgaver, du skal udføre regelmæssigt, som at implementere nye databaser, tilføje og skalere nye noder, administrere sikkerhedskopier, høj tilgængelighed og failover, topologiændringer, opgraderinger og mere. Automatiserede procedurer er nøjagtige, konsistente og gentagelige, så du kan minimere risikoen for ændringer i produktionsmiljøerne.
Desuden er MySQL-brugere med ClusterControl ikke længere underlagt leverandørlåsning; noget, der blev stillet spørgsmålstegn ved af mange for nylig. Du kan implementere og importere en række MySQL-versioner og leverandører fra en enkelt konsol gratis.
I denne artikel vil vi vise dig, hvordan du implementerer MySQL 8.0 med en kamptestet konfiguration og administrerer den på en automatiseret måde. Du finder her, hvordan du gør:
- ClusterControl-installation
- MySQL-implementeringsproces
- Implementer en ny klynge
- Importér eksisterende klynge
- Skalering af MySQL
- Sikring af MySQL
- Overvågning og trending
- Sikkerhedskopiering og gendannelse
- Autogendannelse af node og klynge (automatisk failover)
ClusterControl-installation
For at starte med ClusterControl har du brug for en dedikeret virtuel maskine eller vært. Kravene til VM og understøttede systemer er beskrevet her. Den grundlæggende VM kan starte fra 2 GB, 2 kerner og diskplads 20 GB lagerplads, enten on-prem eller i skyen.
Installationen er godt beskrevet i dokumentationen, men dybest set downloader du et installationsscript, som leder dig gennem trinene. Guiden scriptet opsætter den interne database, installerer nødvendige pakker, repositories og andre nødvendige tweaks. For miljøer uden internetadgang kan du bruge offline installationsprocessen.
ClusterControl kræver SSH-adgang til databaseværterne, og overvågningen kan være agent-baseret eller agentløs. Ledelsen er agentløs.
For at konfigurere adgangskodefri SSH til alle målnoder (ClusterControl og alle databaseværter), skal du køre følgende kommandoer på ClusterControl-serveren:
$ 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
En af de mest bekvemme måder at prøve klyngekontrol på, måske muligheden for at køre den i docker-container.
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
Efter vellykket implementering bør du være i stand til at få adgang til ClusterControl Web UI på {host's IP address}:{host's port}, for eksempel:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol
Implementering og skalering
Implementer MySQL 8.0
Når vi kommer ind i ClusterControl-grænsefladen, er den første ting at gøre at implementere en ny database eller importere en eksisterende. Den nye version 1.7.2 introducerer understøttelse af version 8.0 af Oracle Community Edition og Percona Server. På tidspunktet for skrivning af denne blog er de aktuelle versioner Oracle MySQL Server 8.0.15 og Percona Server til MySQL 8.0-15. Vælg muligheden "Deploy Database Cluster ” og følg instruktionerne, der vises.
ClusterControl:Implementer databaseklyngeNår vi vælger MySQL, skal vi angive bruger, nøgle eller adgangskode og port for at forbinde med SSH til vores servere. Vi har også brug for et navn til vores nye klynge, og hvis vi ønsker, at ClusterControl skal installere den tilsvarende software og konfigurationer for os.
Efter opsætning af SSH-adgangsoplysningerne skal vi indtaste dataene for at få adgang til vores database. Vi kan også angive, hvilket lager der skal bruges. Lagringskonfiguration er et vigtigt aspekt for databaseservere og klynger. Du kan have tre typer repositories, når du implementerer databaseserver/klynge ved hjælp af ClusterControl:
- Brug Leverandørlager
Levering af software ved at opsætte og bruge databaseleverandørens foretrukne softwarelager. ClusterControl installerer den seneste version af det, der leveres af databaseleverandørens lager. - Opsæt ikke leverandørlagre
Lever software ved at bruge det allerede eksisterende softwarelager, der allerede er opsat på noderne. Brugeren skal konfigurere softwarelageret manuelt på hver databasenode, og ClusterControl vil bruge dette lager til implementering. Dette er godt, hvis databasenoderne kører uden internetforbindelse. - Brug spejlede depoter (Opret nyt lager)
Opret og spejle den aktuelle databaseleverandørs lager og implementer derefter ved hjælp af det lokale spejlede lager. Dette giver dig mulighed for at "fryse" de aktuelle versioner af softwarepakkerne.
I det næste trin skal vi tilføje vores servere til den klynge, som vi skal oprette. Når vi tilføjer vores servere, kan vi indtaste IP eller værtsnavn og derefter vælge netværksgrænseflade. Til sidstnævnte skal vi have en DNS-server eller have tilføjet vores MySQL-servere til den lokale opløsningsfil (/etc/hosts) i vores ClusterControl, så den kan løse det tilsvarende navn, som du vil tilføje.
På skærmen kan vi se et eksempel på implementering med en master- og to slaveservere. Serverlisten er dynamisk og giver dig mulighed for at skabe sofistikerede topologier, som kan udvides efter den indledende installation.
ClusterControl:Definer topologiNår alt er indstillet, skal du trykke på deploy-knappen. Du kan overvåge status for oprettelsen af vores nye replikeringsopsætning fra ClusterControl-aktivitetsmonitoren. Implementeringsprocessen vil også tage sig af installationen af populære mysql-værktøjer som percona toolkit og percona-xtradb-backup.
ClusterControl:Implementer klyngedetaljerNår opgaven er færdig, kan vi se vores klynge på hovedskærmen ClusterControl og på topologivisningen. Bemærk, at vi også tilføjede en belastningsbalancer (ProxySQL) foran databaseforekomsterne.
ClusterControl:TopologiSom vi kan se på billedet, kan vi, når vi har oprettet vores klynge, udføre flere opgaver på den, direkte fra topologisektionen.
ClusterControl:TopologistyringImporter en ny klynge
Vi har også mulighed for at administrere en eksisterende opsætning ved at importere den til ClusterControl. Et sådant miljø kan skabes med ClusterControl eller andre metoder (dukke, kok, ansible, docker …). Processen er enkel og kræver ikke specialviden.
ClusterControl:Importer eksisterende klyngeFørst skal vi indtaste SSH-adgangsoplysningerne til vores servere. Derefter indtaster vi adgangsoplysningerne til vores database, serverdatabiblioteket og versionen. Vi tilføjer noderne efter IP eller værtsnavn, på samme måde som når vi implementerer, og trykker på Importer. Når opgaven er færdig, er vi klar til at administrere vores klynge fra ClusterControl. På dette tidspunkt kan vi også definere mulighederne for automatisk gendannelse af node eller klynge.
Skalering af MySQL
Med ClusterControl er det et nemt trin at tilføje flere servere til serveren. Du kan gøre det fra GUI eller CLI. For mere avancerede brugere kan du bruge ClusterControl Developer Studio og skrive en ressourcebasebetingelse for automatisk at udvide din klynge.
Når du tilføjer en ny node til opsætningen, har du mulighed for at bruge eksisterende backup, så der ikke er behov for at overvælde produktionsmasternoden med yderligere arbejde.
ClusterControl Scaling MySQLMed den indbyggede understøttelse af belastningsbalancere (ProxySQL, Maxscale, HAProxy) kan du tilføje og fjerne MySQL-noder dynamisk. Hvis du ønsker at vide mere i dybden om, hvordan du bedst administrerer MySQL-replikering og -klyngning, bedes du læse MySQL-replikering til HA-replikering hvidbogen.
Sikring af MySQL
MySQL kommer med meget lidt sikkerhed ud af æsken. Dette er blevet forbedret med den seneste version, men produktionskvalitetssystemer kræver stadig tweeks i standard my.cnf-konfigurationen.
ClusterControl fjerner menneskelige fejl og giver adgang til en række sikkerhedsfunktioner for automatisk at beskytte dine databaser mod hacks og andre trusler.
ClusterControl muliggør SSL-understøttelse af MySQL-forbindelser. Aktivering af SSL tilføjer endnu et sikkerhedsniveau for kommunikation mellem applikationerne (inklusive ClusterControl) og databasen. MySQL-klienter åbner krypterede forbindelser til databaseserverne og verificerer identiteten af disse servere, før de overfører følsomme oplysninger.
ClusterControl vil udføre alle nødvendige trin, herunder oprettelse af certifikater på alle databasenoder. Sådanne certifikater kan vedligeholdes senere på fanen Nøglestyring.
ClusterControl:Manager SSL-nøglerPercona-serverinstallationerne leveres med yderligere understøttelse af et revisionsplugin. Kontinuerlig revision er en bydende opgave for at overvåge dit databasemiljø. Ved at revidere din database kan du opnå ansvarlighed for handlinger, der er foretaget, eller adgang til indhold. Desuden kan revisionen omfatte nogle kritiske systemkomponenter, såsom dem, der er forbundet med finansielle data for at understøtte et præcist sæt af regler som SOX eller EU's GDPR-forordning. Den guidede proces lader dig vælge, hvad der skal revideres, og hvordan du vedligeholder revisionslogfilerne.
ClusterControl:Aktiver revisionslog for Percona Server 8.0Overvågning
Når du arbejder med databasesystemer, bør du være i stand til at overvåge dem. Det vil gøre dig i stand til at identificere tendenser, planlægge opgraderinger eller forbedringer eller reagere effektivt på eventuelle problemer eller fejl, der måtte opstå.
Den nye ClusterControl 1.7.2 kommer med opdateret højopløsningsovervågning til MySQL 8.0. Det bruger Prometheus som datalageret med PromQL forespørgselssprog. Listen over dashboards inkluderer MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview og Cluster Overview Dashboards.
ClusterControl installerer Prometheus-agenter, konfigurerer metrikker og bevarer adgang til Prometheus-eksportørers konfiguration via dens GUI, så du bedre kan administrere parameterkonfiguration som samlerflag for eksportørerne (Prometheus). Vi har beskrevet detaljeret, hvad der kan overvåges for nylig, i artiklen Sådan overvåger du MySQL med Prometheus &ClusterControl.
ClusterControl:DashboardAlarm
Som databaseoperatør skal vi informeres, når der sker noget kritisk i vores database. De tre vigtigste metoder i ClusterControl til at få en advarsel omfatter:
- e-mail-meddelelser
- integrationer
- rådgivere
Du kan indstille e-mailmeddelelserne på brugerniveau. Gå til Indstillinger> E-mailmeddelelser . Hvor du kan vælge mellem kritikalitet og type advarsel, der skal sendes.
ClusterControl:MeddelelseDen næste metode er at bruge integrationstjenester. Dette er for at videregive den specifikke kategori af begivenheder til den anden service som ServiceNow-billetter, Slack, PagerDuty osv., så du kan oprette avancerede notifikationsmetoder og integrationer i din organisation.
ClusterControl:IntegrationDen sidste er at involvere sofistikeret metrikanalyse i Advisor-sektionen, hvor du kan bygge intelligente checks og triggere.
ClusterControl:Automatic AdvisorsSikkerhedskopiering og gendannelse
Nu hvor du har din MySQL kørende og har din overvågning på plads, er det tid til næste trin:Sørg for at have en sikkerhedskopi af dine data.
ClusterControl:Opret sikkerhedskopiClusterControl giver en grænseflade til MySQL-sikkerhedskopistyring med understøttelse af planlægning og kreative rapporter. Det giver dig to muligheder for sikkerhedskopieringsmetoder.
- Logisk:mysqldump
- Binær:xtrabackup/mariabackup
En god backup-strategi er en kritisk del af ethvert databasestyringssystem. ClusterControl tilbyder mange muligheder for sikkerhedskopiering og gendannelse/gendannelse.
ClusterControl:Sikkerhedskopieringsplan og backuplagerClusterControl sikkerhedskopiering kan konfigureres; du kan vælge at beholde din sikkerhedskopi i en hvilken som helst periode eller aldrig at slette sikkerhedskopier. AES256-kryptering bruges til at sikre dine sikkerhedskopier mod useriøse elementer. For hurtig gendannelse kan sikkerhedskopier gendannes direkte i en ny klynge - ClusterControl håndterer den fulde gendannelsesproces fra lancering af en ny databaseopsætning til gendannelse af data, fjerner fejltilbøjelige manuelle trin fra processen.
Sikkerhedskopier kan automatisk verificeres efter færdiggørelse og derefter uploades til cloud storage-tjenester (AWS, Azure og Google). Forskellige opbevaringspolitikker kan defineres for lokale sikkerhedskopier i datacentret samt sikkerhedskopier, der uploades i skyen.
Autogendannelse af node og klynge
ClusterControl giver avanceret support til fejlregistrering og håndtering. Det giver dig også mulighed for at implementere forskellige proxyer for at integrere dem med din HA-stak, så der ikke er behov for at justere applikationsforbindelsesstrengen eller dns-indgang for at omdirigere applikationen til den nye masterknude.
Når masterserveren er nede, vil ClusterControl oprette et job til at udføre automatisk failover. ClusterControl udfører alt baggrundsarbejdet for at vælge en ny master, implementere fail-over slave-servere og konfigurere belastningsbalancere.
ClusterControl:Node autogendannelseClusterControl automatisk failover blev designet med følgende principper:
- Sørg for, at masteren virkelig er død, før du failover
- Failover kun én gang
- Undgå failover til en inkonsekvent slave
- Skriv kun til masteren
- Gendan ikke automatisk den mislykkede master
Med de indbyggede algoritmer kan failover ofte udføres ret hurtigt, så du kan sikre de højeste SLA'er for dit databasemiljø.
Processen er meget konfigurerbar. Den kommer med flere parametre, som du kan bruge til at tilpasse gendannelse til dit miljøs specifikationer. Blandt de forskellige muligheder kan du finde replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script og mange andre.