sql >> Database >  >> RDS >> MariaDB

Databaseback-ups - MariaDB Mariabackup en Percona Xtrabackup vergelijken

Uw databaseserver slaat enkele van de meest waardevolle informatie van uw onderneming op. Het garanderen van betrouwbare databaseback-ups om gegevensverlies te voorkomen in het geval van een ongeval of hardwarestoring is een cruciaal selectievakje.

Of het nu een 24x7 zwaarbelaste server is of een omgeving met een laag transactievolume, u zult een naadloze procedure nodig hebben om back-ups te maken zonder de prestaties van de server in een productieomgeving te verstoren.

In deze blog bespreken we twee van de meest gebruikte tools om deze taak te volbrengen, namelijk Percona XtraBackup en Mariabackup. We zullen de overeenkomsten en verschillen tussen de twee bekijken, en ook hoe ze te gebruiken.

Wat is Percona XtraBackup?

Percona XtraBackup is een open source tool voor het maken van back-ups van MariaDB-, MySQL- en Percona Server-databases. Het voert online non-blocking uit (voor de ondersteunde engines), strak gecomprimeerde en beveiligde volledige back-ups op transactiesystemen, zodat applicaties volledig beschikbaar blijven gedurende de back-upperiode.

Door deze tool te gebruiken, kunt u:

  • Maak hot InnoDB-back-ups, die snel en betrouwbaar worden voltooid, zonder uw database te pauzeren of de server te belasten
  • Maak incrementele back-ups
  • Verplaats tabellen online tussen MySQL-servers
  • Maak eenvoudig nieuwe MySQL-replicatieslaves
  • Stream gecomprimeerde MySQL-back-ups naar een andere server
  • Bespaar op schijfruimte en netwerkbandbreedte

Wat is Mariabackup?

Mariabackup is een open source-tool van MariaDB voor het uitvoeren van fysieke online back-ups. Het is een vork van Percona XtraBackup die is ontworpen om te werken met versleutelde en gecomprimeerde tabellen, en is de aanbevolen back-upmethode voor MariaDB-databases.

MariaDB Server 10.1 introduceerde MariaDB Compression en Data-at-Rest Encryption, maar de bestaande back-upoplossingen ondersteunden geen volledige back-upmogelijkheden voor deze functies. Dus besloot MariaDB XtraBackup (versie 2.3.8) uit te breiden en noemde deze oplossing Mariabackup.

Verschillen tussen Percona XtraBackup en Mariabackup

Zoals we eerder opmerkten, is Mariabackup de aanbevolen back-uptool voor MariaDB, en het belangrijkste verschil met XtraBackup is dat het werkt met versleutelde en gecomprimeerde tabellen.

Hoe dan ook, als je om een ​​bepaalde reden XtraBackup wilt gebruiken voor je MariaDB-database, zijn er enkele punten waarmee je rekening moet houden, afhankelijk van de MariaDB-serverversie die je hebt:

  • MariaDB 10.1:Met niet-gecomprimeerde en niet-versleutelde MariaDB-gegevens kunt u XtraBackup gebruiken. Als codering of compressie wordt gebruikt, of wanneer innodb_page_size is ingesteld op een andere waarde dan 16K, zal het niet werken.
  • MariaDB 10.2:je zou ook kunnen proberen om XtraBackup te gebruiken, maar houd er rekening mee dat problemen waarschijnlijk te wijten zijn aan de incompatibiliteitsfout in MySQL 5.7 ongedaan maken van de log-indeling die is opgelost in MariaDB 10.2.2. Vanwege deze bug kunnen back-ups die zijn gemaakt met XtraBackup sommige transacties mogelijk niet herstellen. Alleen als je de server draait met de instelling innodb_undo_logs=1 zou dit geen probleem zijn.
  • MariaDB 10.3 en hoger:dit geval is eenvoudiger. XtraBackup is niet compatibel.

Er zijn ook enkele beperkingen waarmee u rekening moet houden bij het gebruik van Mariabackup:

  • MyRocks:vanaf MariaDB 10.2.16 en MariaDB 10.3.8 maakt Mariabackup een back-up van MyRocks Storage Engine-gegevens. Gedeeltelijke back-up van MyRocks-gegevens wordt momenteel niet ondersteund. Incrementele back-up slaat een volledige kopie van MyRocks-gegevens op.
  • Bestandsfunctionaliteit exporteren:Vóór MariaDB 10.2.9 ondersteunde Mariabackup de --export-functionaliteit niet (het creëert een exportbestand om gegevens uit de database te exporteren). U kunt deze beperking omzeilen door de back-up zoals gewoonlijk voor te bereiden (zonder de vlag --export), vervolgens de server te starten en FLUSH TABLES FOR EXPORT uit te voeren.
  • Logbestanden:Mariabackup-versies tot 10.2.8 maken geen lege logbestanden en zijn afhankelijk van de actie --copy-back die door de gebruiker wordt uitgevoerd (waarbij oude innodb-logbestanden worden verwijderd, indien aanwezig). Als de gebruiker --copy-back niet gebruikt of ervoor zorgt dat de gegevensmap leeg is voordat deze wordt hersteld, kunnen de back-ups die met deze versies zijn gemaakt, inconsistent/corrupt worden (vanwege de aanwezigheid van overgebleven InnoDB-logboeken).
  • Gcrypt:versleuteling op basis van back-uptools (gcrypt) wordt niet ondersteund op Mariabackup.
  • Innobackupex optie:Geen symbolische link naar innobackupex (gebruik in plaats daarvan de --innobackupex parameter). De innobackupex-tool patcht en biedt extra functies ten opzichte van de innobackup-tool voor het maken van back-ups van InnoDB- en MyISAM-tabellen.
  • Compacte optie:--compacte optie wordt niet ondersteund.
  • Optie voor indexen opnieuw opbouwen:optie --rebuild_indexes wordt niet ondersteund.
  • Tar voor back-upbestanden:ondersteuning voor --stream=tar is verwijderd in Mariabackup 10.1.24 (de optie --streams streamt back-upbestanden naar stdout).

Ten slotte kan Mariabackup op Windows worden geïnstalleerd.

Back-upproces Proces herstellen

Hoe - Percona XtraBackup en Mariabackup

Laten we eens kijken hoe we het kunnen installeren en gebruiken.

Installatie

U hebt verschillende methoden om zowel XtraBackup als Mariabackup te installeren. Laten we de installatie vanuit repositories proberen.

XtraBackup-installatie

Op Debian/Ubuntu
$ wget https://repo.percona.com/apt/percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo dpkg -i percona-release_0.1-6.$(lsb_release -sc)_all.deb
$ sudo apt-get update
$ sudo apt-get install percona-xtrabackup-24
Op RedHat/CentOS
$ sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm
$ sudo yum install percona-xtrabackup-24

Mariabackup-installatie

Op Debian / Ubuntu

Mariabackup maakt deel uit van MariaDB Server vanaf MariaDB 10.1.23.

$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.1/ubuntu bionic main'
$ sudo apt-get update
$ sudo apt-get install mariadb-server-10.1
Op CentOS / RedHat
$ sudo vi /etc/yum.repos.d/MariaDB.repo
[mariadb]
name=MariaDB
baseurl=http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
$ sudo yum install MariaDB-backup

Configuratie

Zowel Xtrabackup als Mariabackup lezen de secties [mysqld] en [xtrabackup] van elk MySQL-configuratiebestand, in die volgorde. Op deze manier kan het MySQL-parameters lezen, zoals datadir- of InnoDB-parameters.

We kunnen de parameters in de sectie [mysqld] wijzigen door hun waarde in [xtrabackup] te wijzigen, zoals we eerder vermeldden, ze worden in volgorde gelezen, dus het laatste dat we in [xtrabackup] hebben, heeft prioriteit.

[mysqld]
datadir=/data/datadir
[xtrabackup]
target_dir=/backups/

De gebruiker met de minimaal vereiste rechten voor volledige back-ups is HERLADEN, TABELLEN VERGRENDELEN, PROCES en REPLICATIECLIENT:

mysql> CREATE USER 'backupuser'@'localhost' IDENTIFIED BY 'Password';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'backupuser'@'localhost';

En dan kunt u deze gebruiker toevoegen aan de MySQL-configuratiebestanden:

[xtrabackup]
user=backupuser
password=Password

U kunt ook Xtrabackup of Mariabackup gebruiken om de State Snapshot Transfers uit te voeren wanneer u een Percona XtraDB Cluster of MariaDB Galera Cluster gebruikt. U moet de variabelen wsrep_sst_method en wsrep_sst_auth in de configuratiebestanden instellen:

[mysqld]
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=backupuser:Password

Of

[mysqld]
wsrep_sst_method=mariabackup
wsrep_sst_auth=backupuser:Password

Gebruik

Aangezien Mariabackup is gebaseerd op XtraBackup, kan het op dezelfde manier worden gebruikt.

Laten we nu een voorbeeld bekijken waarin beide methoden worden gebruikt om een ​​volledige back-up te maken, voor te bereiden en te herstellen.

Een back-up maken

Om een ​​nieuwe back-up te maken met XtraBackup of Mariabackup, moet u de opties --backup en --target-dir toevoegen aan de opdrachtregel:

$ xtrabackup --backup --target-dir=/backups/

Of

$ mariabackup --backup --target-dir=/backups/

De doelmap, waar de back-up wordt opgeslagen, kan worden opgegeven in de MySQL-configuratiebestanden. Het back-upproces zal bestaande bestanden niet overschrijven. Als het bestand bestaat, zal de back-up mislukken.

Transaction log of lsn (9755450) to (9755467) was copied.
181122 23:02:44 completed OK!

Als alles goed is gegaan, moet de laatste regel die u ziet "completed OK!" zijn. U kunt de back-up op elk moment annuleren, omdat de inhoud van de database hierdoor niet wordt gewijzigd.

[[email protected] ~]# ls -l /backups/
total 102448
-rw-r----- 1 root root       488 Nov 22 23:02 backup-my.cnf
-rw-r----- 1 root root       482 Nov 22 23:02 ib_buffer_pool
-rw-r----- 1 root root 104857600 Nov 22 23:02 ibdata1
drwxr-x--- 2 root root      4096 Nov 22 23:02 mysql
drwxr-x--- 2 root root      4096 Nov 22 23:02 performance_schema
drwxr-x--- 2 root root      4096 Nov 22 23:02 sakila
drwxr-x--- 2 root root     12288 Nov 22 23:02 sys
-rw-r----- 1 root root        64 Nov 22 23:02 xtrabackup_binlog_info
-rw-r----- 1 root root       113 Nov 22 23:02 xtrabackup_checkpoints
-rw-r----- 1 root root       533 Nov 22 23:02 xtrabackup_info
-rw-r----- 1 root root      2560 Nov 22 23:02 xtrabackup_logfile

Dit zou de inhoud van uw back-up moeten zijn. Het kan veranderen afhankelijk van uw databases.

Een back-up voorbereiden

Als u uw back-up hebt gemaakt met XtraBackup of Mariabackup, moet u deze voorbereiden om te worden hersteld. Gegevensbestanden zijn niet consistent totdat ze zijn voorbereid, omdat ze tijdens de duur van de back-up op verschillende tijdstippen zijn gekopieerd. Als u het probeert te herstellen en uw database start, zal het corruptie detecteren en zichzelf crashen om te voorkomen dat u op inconsistente gegevens draait.

Om de back-up voor te bereiden, moet u het commando xtrabackup of mariabackup met --prepare optie uitvoeren en de doelmap specificeren waar de back-up is opgeslagen.

$ xtrabackup --prepare --target-dir=/backups/

Of

$ mariabackup --prepare --target-dir=/backups/
InnoDB: Shutdown completed; log sequence number 9757224
181122 23:05:29 completed OK!

De laatste regel die u ziet, moet zijn "Afsluiten voltooid; logvolgnummer xxxxxxx" en "voltooid OK!" als alles goed zou gaan. Het wordt niet aanbevolen om het voorbereidingsproces te annuleren, omdat dit beschadiging van gegevensbestanden kan veroorzaken en de back-up onbruikbaar wordt.

Als u deze back-up later wilt gebruiken met een incrementele back-up, moet u de optie --apply-log-only gebruiken bij het voorbereiden, anders kunt u dit niet doen.

Een back-up herstellen

Na het voorbereiden van de back-up, kunt u de hersteloptie gebruiken met de parameters --copy-back of --move-back, om de back-up te kopiëren of te verplaatsen naar de datadir. Als u niet genoeg schijfruimte heeft, moet u waarschijnlijk de optie Verplaatsen gebruiken. We moeten ook de doelmap specificeren waar de back-up is opgeslagen. Houd er rekening mee dat de datadir leeg moet zijn en dat de databaseservice offline moet zijn voordat de back-up wordt hersteld.

$ xtrabackup --copy-back --target-dir=/backups/

Of

$ mariabackup --copy-back --target-dir=/backups/

Het zal eerst de MyISAM-tabellen en -indexen kopiëren/verplaatsen, vervolgens de InnoDB-tabellen en -indexen en uiteindelijk de logbestanden. Het behoudt de kenmerken van het bestand wanneer u ze kopieert. Mogelijk moet u het eigendom van de bestanden wijzigen in mysql voordat u de databaseserver start, aangezien ze eigendom zijn van de gebruiker die de back-up heeft gemaakt.

$ sudo chown -R mysql:mysql /var/lib/mysql

Er zijn verschillende parameters die kunnen worden gebruikt met Xtrabackup en Mariabackup. U kunt deze parameters hier controleren voor XtraBackup en hier voor Mariabackup.

ClusterControlSingle Console voor uw gehele database-infrastructuurOntdek wat er nog meer nieuw is in ClusterControlInstalleer ClusterControl GRATIS

Uw back-ups beheren op ClusterControl

Zoals we hierboven zagen, is het maken van een back-up geen rocket science. Het kan ook worden gepland met cron (maar pas op voor stille fouten!). Een script om regelmatig back-ups te maken is echter geen oplossing voor back-upbeheer. U hebt een manier nodig om te rapporteren over uw back-ups en om te waarschuwen voor fouten. Het configureren van back-ups in uw omgeving en zien dat de back-ups foutloos werken, betekent niet dat alles goed is. Je hebt misschien gehoord van de back-up van Schrödinger, waarin staat dat de staat van een back-up onbekend is totdat een herstelpoging wordt gedaan. Omdat het ergste dat kan gebeuren een ramp is en je je realiseert dat de back-ups om de een of andere reden verkeerd zijn. U probeert de bestanden te herstellen waarvan een back-up is gemaakt, en het herstelt niet wat u denkt te hebben geback-upt, of het herstelt helemaal niet! Dan zijn er zaken als het verplaatsen van back-upbestanden naar een andere locatie, b.v. naar externe cloudopslag, voor noodherstel. Versleuteling en verwerking van sleutels zijn belangrijk voor de veiligheid. Het bewaren van zowel lokale als externe/gearchiveerde back-ups moet ook worden beheerd.

Laten we eens kijken hoe ClusterControl kan helpen.

Als u de ClusterControl-back-upfunctie wilt gebruiken, gaat u naar ClusterControl -> Cluster selecteren -> Back-up, en daar kunt u uw huidige back-ups zien, een nieuwe maken of een nieuwe plannen.

ClusterControl-back-upsectie

Met behulp van de optie maken of plannen kunnen we beide kiezen, XtraBackup of Mariabackup-methode. In dezelfde sectie kunnen we de server kiezen waarvan de back-up wordt gemaakt, gedeeltelijke back-up inschakelen, kiezen waar u de back-up wilt opslaan en of u de back-up wilt uploaden naar de cloud (AWS, Azure of Google Cloud).

ClusterControl Back-up maken 1

Vervolgens kunnen we back-upparameters selecteren, zoals compressie, codering en retentie.

ClusterControl Back-up maken 2

En dit zouden de opdrachten moeten zijn die ClusterControl voor u zal uitvoeren:

[16:37:58]: 192.168.100.120: Launching ( LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/my.cnf --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - > /root/backups/BACKUP-13/backup-full-2018-11-14_193757.xbstream.gz ) 2>&1.

Of

[16:29:57]: 192.168.100.131: Launching ( LC_ALL=C /usr/bin/mariabackup --defaults-file=/etc/my.cnf --backup --galera-info --parallel 1 --stream=xbstream --no-timestamp | gzip -6 - > /root/backups/BACKUP-11/backup-full-2018-11-14_192957.xbstream.gz ) 2>&1.

Deze opdracht kan verschillen, afhankelijk van de gekozen parameters.

Zoals we konden zien, is ClusterControl een goede vriend als we XtraBackup of Mariabackup willen gebruiken. We kunnen op een gemakkelijke manier complexe back-upopdrachten uitvoeren door de opties in de ClusterControl-gebruikersinterface te selecteren.
ClusterControl ondersteunt zowel volledige als incrementele back-up, zodat we al onze back-upstrategieën kunnen configureren vanuit een gebruiksvriendelijke gebruikersinterface.

Conclusie

Bij het maken van een back-up van een MariaDB-server wordt aanbevolen om de Mariabackup-tool te gebruiken. Als u echter om wat voor reden dan ook liever XtraBackup gebruikt, dan kan dat nog steeds. Maar je moet wel rekening houden met de beperkingen die gelden, zoals we in deze blog hebben opgemerkt. En tot slot bespraken we hoe een script voor het maken van een back-up van een database niet hetzelfde is als een oplossing voor back-upbeheer, en we keken snel naar ClusterControl.

Laat het ons weten als we verschillen tussen de XtraBackup en MariaBackup hebben gemist.

De niet-blokkerende back-ups worden ondersteund voor InnoDB-, XtraDB- en HailDB-opslagengines. Van de volgende storage-engines kan een back-up worden gemaakt door het schrijven aan het einde van de back-up kort te pauzeren:MyISAM, Merge en Archive, inclusief gepartitioneerde tabellen, triggers en database-opties.


  1. Maak een nieuwe gebruiker in MySQL en geef deze volledige toegang tot één database

  2. bijwerken en comprimeren van sqlite-database in Android

  3. blob omzetten in clob

  4. 4 manieren om het gegevenstype van een kolom in MySQL te controleren