I en af vores tidligere blogs forklarede vi, hvordan Clone Plugin, en af de nye funktioner, der blev vist i MySQL 8.0.17, kan bruges til at genopbygge en replikeringsslave. I øjeblikket er gå-til-værktøjet til det, såvel som til sikkerhedskopier, Xtrabackup. Vi syntes, det er interessant at sammenligne, hvordan disse værktøjer fungerer og opfører sig.
Sammenligning af ydeevne
Det første, vi besluttede os for at teste, er, hvordan begge klarer sig, når det kommer til at gemme kopien af dataene lokalt. Vi brugte AWS og m5d.metal instans med to NVMe SSD, og vi kørte klonen til lokal kopi:
mysql> CLONE LOCAL DATA DIRECTORY='/mnt/clone/';
Query OK, 0 rows affected (2 min 39.77 sec)
Så testede vi Xtrabackup og lavede den lokale kopi:
rm -rf /mnt/backup/ ; time xtrabackup --backup --target-dir=/mnt/backup/ --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=16
200120 13:12:28 completed OK!
real 2m38.407s
user 0m45.181s
sys 4m18.642s
Som du kan se, var den tid, der krævedes for at kopiere dataene, stort set den samme. I begge tilfælde var begrænsningen hardwaren, ikke softwaren.
Overførsel af data til en anden server vil være den mest almindelige brug for begge værktøjer. Det kan være en slave, du vil sørge for eller genopbygge. I fremtiden kan det være en sikkerhedskopi, Clone Plugin har ikke en sådan funktionalitet som nu, men vi er ret sikre på, at nogen i fremtiden vil gøre det muligt at bruge det som et backupværktøj. Da hardware er begrænsningen for lokal backup i begge tilfælde, vil hardware også være en begrænsning for overførsel af data på tværs af netværket. Afhængigt af din opsætning kan det være enten netværket, disk I/O eller CPU.
I en I/O-intensiv operation er CPU den mindst almindelige flaskehals. Dette gør det ret almindeligt at bytte en vis CPU-udnyttelse til reduktion af datasættets størrelse. Du kan opnå det gennem komprimering. Hvis det gøres på farten, skal du stadig læse den samme mængde data, men du sender mindre af det (da det er komprimeret) over netværket. Derefter bliver du nødt til at dekomprimere det og skrive det ned. Det er også muligt, at selve filerne er komprimeret. I så fald reducerer du mængden af data læst, overført og skrevet til disk.
Både Clone Plugin og Xtrabackup kommer med en on-the-fly komprimering (vi vil gerne takke Kenny Gryp, som rettede os på denne bit). I Clone Plugin kan du aktivere det gennem clone_enable_compression, som er deaktiveret som standard. Xtrabackup kan også bruge eksterne værktøjer til at komprimere dataene. I tilfælde af komprimerede InnoDB-tabeller vil ekstern komprimering ikke gøre for stor forskel, så begge værktøjer bør fungere på samme måde, hvis netværkets båndbredde er den begrænsende faktor.
Sammenligning af brugervenlighed
Ydeevne er kun én ting at sammenligne, der er mange andre, ligesom hvor nemme værktøjer er at bruge. I begge tilfælde er der flere trin, du skal udføre. For Clone Plugin er det:
- Installer pluginnet på alle noder
- Opret brugere på både donor- og modtagerknudepunkter
- Opsæt donorlisten på modtageren
Disse tre trin skal udføres én gang. Når de er indstillet, kan du bruge Clone Plugin til at kopiere dataene. Baseret på init-systemet skal du muligvis starte MySQL-knudepunktet, efter at klonprocessen er afsluttet. Dette er ikke påkrævet, hvis MySQL automatisk genstartes, ligesom i tilfældet med systemd.
Xtrabackup kræver et par trin mere for at få tingene gjort.
- Installer softwaren på alle noder
- Opret bruger på donoren
Disse to trin skal udføres én gang. For hver sikkerhedskopiering skal du udføre følgende trin:
- Konfigurer netværksstreaming. En enkel og sikker måde ville være at bruge SSH, noget som:
xtrabackup --backup --innodb-file-io-threads=8 --innodb-read-io-threads=8 --innodb-write-io-threads=8 --innodb-io-capacity=20000 --parallel=8 --stream=xbstream --target-dir=/mnt/backup/ | ssh [email protected] "xbstream -x -C /mnt/backup/"
Vi fandt dog ud af, at CPU'en bliver en flaskehals for hurtigere harddiske med enkelttrådet SSH. Opsætning af netcat kræver yderligere trin på modtageren for at sikre, at netcat er oppe, lytter og omdirigerer trafikken til den korrekte software (xbstream).
-
Stop MySQL på modtagernoden
-
Kør Xtrabackup
-
Anvend InnoDB-logfiler
-
Kopier dataene tilbage
-
Start MySQL på modtagernoden
Som du kan se, kræver Xtrabackup, at der tages flere skridt.
Sikkerhedsovervejelser
Clone Plugin kan konfigureres til at bruge SSL til dataoverførsel, selvom det som standard bruger almindelig tekst. Kloning af de krypterede tablespaces er mulig, men der er ingen mulighed for at kryptere for eksempel den lokale klon. Brugeren skal gøre det separat, efter at kloneprocessen er fuldført.
Xtrabackup i sig selv giver ingen sikkerhed. Sikkerheden bestemmes af, hvordan du streamer dataene. Hvis du bruger SSH til streaming, vil data i transit blive krypteret. Hvis du beslutter dig for at bruge netcat, vil det blive sendt som en almindelig tekst. Hvis dataene er krypteret i tablespaces, er de selvfølgelig allerede sikret, ligesom i tilfældet med Clone Plugin. Xtrabackup kan også bruges sammen med on-the-fly kryptering for at sikre, at dine data er krypteret også i hvile.
Plugin-funktioner
Clone Plugin er et nyt produkt, stadig i en spædbarnsfase. Dens primære opgave er at levere måder at klargøre noder i InnoDB Cluster, og det gør det fint. Til andre opgaver, såsom sikkerhedskopiering eller klargøring af replikeringsslaver, kan den bruges i et vist omfang, men den lider af flere begrænsninger. Vi dækkede nogle af dem i vores tidligere blog, så vi gentager det ikke her, men den mest alvorlige, når vi taler om klargøring og sikkerhedskopier, er, at kun InnoDB-tabeller klones. Hvis du tilfældigvis bruger en anden lagermotor, kan du ikke rigtig bruge Clone Plugin. På den anden side vil Xtrabackup med glæde sikkerhedskopiere og overføre de mest almindeligt anvendte lagringsmotorer:InnoDB, MyISAM (desværre bruges det stadig mange steder) og CSV. Xtrabackup kommer også med et sæt værktøjer, der er beregnet til at hjælpe med at streame data fra node til node eller endda streame sikkerhedskopiering til S3 buckets.
For at opsummere, når det kommer til sikkerhedskopiering af data og klargøring af replikeringsslaver, er og vil xtrabackup sandsynligvis stadig være det mest populære valg. På den anden side vil Clone Plugin højst sandsynligt forbedre og udvikle sig. Vi vil se, hvad fremtiden bringer, og hvordan tingene vil se ud om et år.
Fortæl os, hvis du har nogen tanker om Clone Plugin, vi er meget interesserede i at se, hvad din mening er om dette nye værktøj.