sql >> Database >  >> RDS >> Mysql

Een vergelijking tussen de MySQL Clone Plugin en Xtrabackup

In een van onze vorige blogs hebben we uitgelegd hoe Clone Plugin, een van de nieuwe functies die werd getoond in MySQL 8.0.17, kan worden gebruikt om een ​​replicatieslave opnieuw op te bouwen. Momenteel is Xtrabackup de go-to-tool daarvoor, evenals voor back-ups. We vonden het interessant om te vergelijken hoe die tools werken en zich gedragen.

Prestaties vergelijken

Het eerste dat we besloten te testen, is hoe beide presteren als het gaat om het lokaal opslaan van de kopie van de gegevens. We gebruikten AWS- en m5d.metal-instanties met twee NVMe SSD's en we voerden de kloon uit naar een lokale kopie:

mysql> CLONE LOCAL DATA DIRECTORY='/mnt/clone/';

Query OK, 0 rows affected (2 min 39.77 sec)

Vervolgens hebben we Xtrabackup getest en de lokale kopie gemaakt:

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

Zoals je kunt zien, was de tijd die nodig was om de gegevens te kopiëren in principe hetzelfde. In beide gevallen was de beperking de hardware, niet de software.

Het overbrengen van gegevens naar een andere server is de meest voorkomende toepassing voor beide tools. Het kan een slaaf zijn die je wilt voorzien of herbouwen. In de toekomst kan het een back-up zijn, Clone Plugin heeft momenteel niet zo'n functionaliteit, maar we zijn er vrij zeker van dat iemand het in de toekomst mogelijk zal maken om het als back-uptool te gebruiken. Aangezien hardware in beide gevallen de beperking is voor lokale back-up, zal hardware ook een beperking zijn voor het overbrengen van de gegevens over het netwerk. Afhankelijk van uw instellingen kan dit het netwerk, de schijf-I/O of de CPU zijn.

In een I/O-intensieve operatie is de CPU het minst voorkomende knelpunt. Dit maakt het vrij gebruikelijk om wat CPU-gebruik in te ruilen voor vermindering van de datasetgrootte. Dat bereik je door middel van compressie. Als het on-the-fly wordt gedaan, moet u nog steeds dezelfde hoeveelheid gegevens lezen, maar verzendt u er minder (omdat het gecomprimeerd is) over het netwerk. Vervolgens moet u het decomprimeren en opschrijven. Het is ook mogelijk dat de bestanden zelf zijn gecomprimeerd. In dat geval vermindert u de hoeveelheid gegevens die wordt gelezen, overgedragen en geschreven naar schijf.

Zowel Clone Plugin als Xtrabackup worden geleverd met een on-the-fly compressie (we willen Kenny Gryp bedanken, die ons op dit punt heeft gecorrigeerd). In Clone Plugin kun je het inschakelen via clone_enable_compression, dat standaard is uitgeschakeld. Xtrabackup kan ook externe tools gebruiken om de gegevens te comprimeren. In het geval van gecomprimeerde InnoDB-tabellen maakt externe compressie niet veel uit, dus beide tools zouden op dezelfde manier moeten werken als de netwerkbandbreedte de beperkende factor is.

Gebruiksvriendelijkheid vergelijken

Prestaties zijn slechts één ding om te vergelijken, er zijn vele andere, zoals hoe gemakkelijk tools te gebruiken zijn. In beide gevallen zijn er verschillende stappen die u moet uitvoeren. Voor Clone Plugin is dit:

  1. Installeer de plug-in op alle knooppunten
  2. Gebruikers maken op zowel donor- als ontvangerknooppunten
  3. Stel de donorlijst in op de ontvanger

Die drie stappen moeten één keer worden uitgevoerd. Als ze zijn ingesteld, kunt u Clone Plugin gebruiken om de gegevens te kopiëren. Op basis van het init-systeem moet u mogelijk MySQL-node starten nadat het kloonproces is voltooid. Dit is niet nodig als, zoals in het geval van systemd, MySQL automatisch opnieuw wordt opgestart.

Xtrabackup vereist nog een paar stappen om dingen voor elkaar te krijgen.

  1. Installeer de software op alle nodes
  2. Gebruiker aanmaken op de donateur

Die twee stappen moeten één keer worden uitgevoerd. Voor elke back-up moet u de volgende stappen uitvoeren:

  1. Netwerkstreaming configureren. Een eenvoudige en veilige manier zou zijn om SSH te gebruiken, zoiets als:
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/"

We ontdekten echter dat voor snellere harde schijven, met single-threaded SSH, de CPU een bottleneck wordt. Het instellen van netcat vereist een extra stap op de ontvanger om ervoor te zorgen dat netcat actief is, luistert en het verkeer omleidt naar de juiste software (xbstream).

  1. Stop MySQL op het ontvangerknooppunt

  2. Voer de Xtrabackup uit

  3. InnoDB-logboeken toepassen

  4. Kopieer de gegevens terug

  5. Start MySQL op het ontvangerknooppunt

Zoals je kunt zien, vereist Xtrabackup meer stappen.

Beveiligingsoverwegingen

Clone Plugin kan worden geconfigureerd om SSL te gebruiken voor gegevensoverdracht, ook al gebruikt het standaard platte tekst. Het klonen van de versleutelde tablespaces is mogelijk, maar er is geen optie om bijvoorbeeld de lokale kloon te versleutelen. De gebruiker zou dit apart moeten doen, nadat het kloonproces is voltooid.

Xtrabackup zelf biedt geen beveiliging. Beveiliging wordt bepaald door hoe u de gegevens streamt. Als u SSH gebruikt voor streaming, worden gegevens die onderweg zijn versleuteld. Als u besluit om netcat te gebruiken, wordt het als platte tekst verzonden. Als de gegevens versleuteld zijn in tablespaces, zijn ze natuurlijk al beveiligd, net als in het geval van de Clone Plugin. Xtrabackup kan ook worden gebruikt in combinatie met on-the-fly-codering om ervoor te zorgen dat uw gegevens ook in rust worden versleuteld.

Plugin-functies

Clone Plugin is een nieuw product, nog in de kinderschoenen. Zijn primaire taak is om manieren te bieden om knooppunten in InnoDB Cluster te voorzien en dat doet het prima. Voor andere taken, zoals back-ups of het leveren van replicatieslaves, kan het tot op zekere hoogte worden gebruikt, maar het heeft verschillende beperkingen. We hebben er een aantal behandeld in onze vorige blog, dus we zullen het hier niet herhalen, maar de meest serieuze, als we het hebben over voorzieningen en back-ups, is dat alleen InnoDB-tabellen worden gekloond. Als u toevallig een andere opslagengine gebruikt, kunt u de Clone-plug-in niet echt gebruiken. Aan de andere kant zal Xtrabackup graag back-ups maken en de meest gebruikte storage-engines overdragen:InnoDB, MyISAM (helaas wordt het nog steeds op veel plaatsen gebruikt) en CSV. Xtrabackup wordt ook geleverd met een set tools die bedoeld zijn om te helpen bij het streamen van de gegevens van node naar node of zelfs back-up naar S3-buckets te streamen.

Om het samen te vatten, als het gaat om het maken van back-ups van gegevens en het leveren van replicatieslaves, is xtrabackup de meest populaire keuze en zal dat hoogstwaarschijnlijk nog steeds zijn. Aan de andere kant zal Clone Plugin hoogstwaarschijnlijk verbeteren en evolueren. We zullen zien wat de toekomst in petto heeft en hoe de zaken er over een jaar uit zullen zien.

Laat het ons weten als je enige mening hebt over de Clone Plugin, we zijn erg benieuwd wat je mening is over deze nieuwe tool.


  1. Controleer/wijzig het compatibiliteitsniveau van een database in SQL Server (SSMS)

  2. Hoe u de huidige datum (zonder tijd) in T-SQL kunt krijgen

  3. tabelnaam doorgeven als plsql-parameter

  4. Reflectie in PLSQL?