MariaDB Enterprise Backup er en backup-løsning fra MariaDB Corporation med en række funktioner, såsom ikke-blokerende sikkerhedskopier, fuld backup, inkrementel backup, delvis backup og Point in Time Recovery.
Vi får ofte spørgsmål om forskellene mellem MariaDB Backup og ClusterControls funktioner til sikkerhedskopiering. Så det er hvad denne blog handler om.
Oprettelse af sikkerhedskopier i forhold til at administrere dem
MariaDB Backup er en forgrening af Percona XtraBackup og er et værktøj til at tage fysiske sikkerhedskopier af MariaDB-serveren. Det giver dig mulighed for at gøre ting som fuld, trinvis, delvis sikkerhedskopiering. Man kan også udføre punkt-i-tidsgendannelse ved hjælp af binære logfiler. Ifølge dokumentationen giver 'Enterprise'-versionen af MariaDB backup "DDL-sætningssporing, som reducerer låsetiden under sikkerhedskopiering".
ClusterControl understøtter MariaDB Backup som en backupmetode til MariaDB. Det giver en grafisk brugergrænseflade til at planlægge fuld sikkerhedskopiering, trinvise sikkerhedskopier og delvise sikkerhedskopier, og udføre gendannelse af backup-filer eller også automatisere punkt-in-tidsgendannelse. Derudover tilbyder ClusterControl funktioner som kryptering, komprimering, upload til skylageret (Azure, AWS, Google Cloud) og automatisk verifikation af sikkerhedskopier for at sikre, at de kan gendannes.
Fuld sikkerhedskopiering og gendannelse
For at udføre fuld sikkerhedskopiering ved hjælp af MariaDB Enterprise Backup, kan du bruge mariabackup kommandoværktøjer. Der er 4 parameterinput efter mariabackup-kommandoen. Parameteren er:
- Sikkerhedskopi - dette bruges til backup af databasen ved hjælp af mariabackup-værktøjer.
- Forbered - for at lave en ensartet sikkerhedskopiering på tidspunktet, skal du forberede sikkerhedskopien, efter at den rå backup blev udført.
- Tilbagekopiering - bruges til at gendanne den udpakkede sikkerhedskopi til standarddatamappen for mysql. Den kopierer sikkerhedskopien til mysql-mappen uden at fjerne den originale sikkerhedskopi.
- Flyt tilbage - bruges til at gendanne den udpakkede sikkerhedskopi til mysql-databiblioteket ved at flytte alle backup-mapper.
Hvis du vil sikkerhedskopiere og gendanne, skal du blot sende den obligatoriske parameter efter mariabackup-kommandoen. For en fuld backup-kommando er der et eksempel på et script, der bruger MariaDB Backup.
mariabackup --backup --target-dir=/backup/full/ --user=bkpuser --password=p4sswordb4ckup
Der er nogle muligheder, du skal definere, f.eks. --target-dir, som er målplaceringen for sikkerhedskopieringsfiler, --user, der bruges til legitimationsbrugere til sikkerhedskopiering og --adgangskode for adgangskoden til sikkerhedskopiering af legitimationsoplysninger.
For at få sikkerhedskopien til at blive konsistent på tidspunktet for tiden, skal du køre forberedelsen efter den fulde sikkerhedskopiering er færdig. Datafilerne er ikke konsistente, før du kører forberedelsen, det skyldes, at når du kører sikkerhedskopien, blev datafilerne kopieret på forskellige tidspunkter under sikkerhedskopieringen.
For at køre forberede sikkerhedskopiering:
mariabackup --prepare --target-dir=/backup/full
Når du har kørt forberedelse, vil det gøre sikkerhedskopien klar til at blive gendannet. Du vil se meddelelsen på den sidste linje som nedenfor, når forberedelsen var vellykket.
InnoDB: Shutdown completed; log sequence number 9553231
Du kan køre gendannelseskommandoen ved at bruge copy-back. Her er eksempelscriptet til at gendanne sikkerhedskopien:
mariabackup --copy-back --target-dir=/backup/full
Du kan placere ovenstående script i en shell-script-kommando og give eksekverbar tilladelse, konfigurere det på operativsystemplanlæggeren.
Sikkerhedskopiering og gendannelse ved hjælp af ClusterControl Backup Management er meget nem at bruge. ClusterControl understøtter logisk backup og fysisk backup. Til logisk backup bruger ClusterControl mysqldump og til fysisk backup bruger mariabackup fuld backup og inkrementel.
Der er to muligheder for, hvordan du vil sikkerhedskopiere; du kan oprette sikkerhedskopien direkte, eller du kan planlægge sikkerhedskopieringen.
Du kan også aktivere nogle muligheder såsom kryptering, komprimering, parallel kopi-tråd som vist nedenfor :
Gendannelse af sikkerhedskopien er lige så let, som sikkerhedskopien blev oprettet. Du skal blot vælge den fulde backupfil, som du vil gendanne.
Der er to muligheder for, hvordan du vil gendanne sikkerhedskopien; du kan gendanne sikkerhedskopien til de noder, hvor sikkerhedskopien blev taget, eller du kan gendanne sikkerhedskopien til en dedikeret selvstændig vært.
Inkrementel sikkerhedskopiering og gendannelse
At tage en fuld backup af en meget stor database vil være tidskrævende og ressourcekrævende. Inkrementel backup bruges til at udføre backup af ændringerne efter den sidste fulde backup blev taget.
Når trinvis backup kører, vil MariaDB Enterprise Backup sammenligne tidligere fuld backup eller trinvis backup for at finde de sidste ændringer.
mariabackup --backup --incremental-basedir=/backup/full --target-dir=/backup/incr --user=bkpuser --password=p4sswordb4ackup
Før du udfører den trinvise sikkerhedskopiering, skal du sikre dig, at fuld sikkerhedskopiering er forberedt. Derefter kan du køre den trinvise sikkerhedskopiering, der gælder for den sidste fulde sikkerhedskopi.
mariabackup --prepare --target-dir=/backup/full --incremental-dir=/backup/incr
Efter den trinvise sikkerhedskopiering er blevet anvendt til den fulde backup, vil den fulde backup-mappe nu have alle backupdata forberedt.
Gendannelse af den forberedte fulde sikkerhedskopi med alle de trinvise ændringer kan udføres via:
mariabackup --copy-back --target-dir=/backup/full
For at udføre trinvis backup i ClusterControl kan du vælge mariabackup trinvis. Du skal have den fulde forberedte backup, før du laver den trinvise backup.
ClusterControl finder automatisk den nærmeste fulde sikkerhedskopi, når du kører den trinvise sikkerhedskopiering. Og for at gendanne sikkerhedskopien kan du vælge den fulde forberedte sikkerhedskopi og gendannelse. Det vil bede dig om, hvordan du vil gendanne sikkerhedskopien, enten på noden eller selvstændig vært. Det vil gendanne sikkerhedskopien inklusive trinvise ændringer.
Delvis sikkerhedskopiering og gendannelse
Delvis backup angiver hvilken database eller tabel du vil sikkerhedskopiere. Du kan enten vælge en liste over databaser og tabeller til sikkerhedskopiering, eller du kan udelukke nogle af databaser og tabeller fra sikkerhedskopien. Valgmulighederne omfatter:--databases, --databases-exclude, --tables, --tables-exclude
Nedenfor er et eksempel på et script til at lave den delvise sikkerhedskopiering til card_data-tabellen.
mariabackup --backup --target-dir=/backup/partial --user=bkpuser --password=p4sswordb4ckup --tables=card_data
Du skal stadig forberede den fulde delvise sikkerhedskopiering for at gøre sikkerhedskopieringen konsistent på tidspunktet ved at køre nedenstående kommando:
mariabackup --prepare --export --target-dir=/backup/partial
At udføre delvis gendannelse er meget anderledes sammenlignet med at gendanne fuld sikkerhedskopiering og trinvis sikkerhedskopiering. Du skal forberede tabellerne og databasen i den kørende MariaDB-server og derefter manuelt kopiere datafilerne til mysql-datamappe.
Du vil f.eks. lave en delvis gendannelse for card_data-tabellen (ikke-partitioneret tabel).
- Opret den tomme tabel med card_data med samme struktur i måldatabasen
- Kør DISCARD tablespace på tabellen card_data.
ALTER TABLE carddb.card_data DISCARD TABLESPACE;
- Kopiér datafilerne til mysql-databiblioteket
cp /backup/partial/carddb/card_data.* /var/lib/mysql/carddb
- Skift ejeren af filer til mysql
chown mysql:mysql /var/lib/mysql/carddb/card_data.*
- Sidste ting, importer tablespacet:
ALTER TABLE carddb.card_data IMPORT TABLESPACE;
Delvis sikkerhedskopiering i ClusterControl er virkelig ligetil, du skal bare aktivere muligheden Delvis sikkerhedskopiering. Det vil give dig mulighed for at inkludere eller ekskludere database og tabeller som vist nedenfor :
Den næste del ligner fuld sikkerhedskopiering og trinvis sikkerhedskopiering, du kan vælg indstillinger som kryptering og komprimering.
Gendannelse af den delvise sikkerhedskopi er nøjagtig det samme, som når vi gendanner fuld sikkerhedskopiering. Du skal blot vælge den delvise backup, og resten vil blive håndteret af ClusterControl.
Point in Time Recovery
Gendannelse af den fulde sikkerhedskopi eller trinvis sikkerhedskopiering giver dig en sikkerhedskopi fra det tidspunkt, hvor sikkerhedskopien blev taget, men den giver dig ingen data, der kom efter sikkerhedskopieringen blev taget. Disse ændringer vil være i den binære log. Når du udfører den forberedte sikkerhedskopiering med binlog aktiveret, vil der være en fil kaldet xtrabackup_binlog_info. Filen indeholder en binær logfil og positionen for det sidste sekvensnummer.
Du kan udføre tidspunktet for gendannelse ved at udtrække ændringerne til SQL, f.eks. efter gendannelsen er udført. Du kan køre mysqlbinlog for at udtrække den specifikke tid i kildedatabasenoden og anvende SQL'en i mål/gendannet databasenod.
Point in Time Recovery (PITR) i ClusterControl kan aktiveres som vist nedenfor:
Du skal definere, indtil hvilket tidspunkt du vil gendanne, der er to muligheder, der understøttes som er tidsbaserede eller positionsbaserede. For tidsbaseret skal du blot udfylde det nøjagtige tidspunkt, hvor dataene vil blive gendannet. For den positionsbaserede skal du udfylde binlognavnet og positionen. Resten af gendannelsen ligner.
Konklusion
Det er det for nu. Som vi har set ovenfor, er MariaDB Backup et godt værktøj med mange muligheder. ClusterControl giver en brugervenlig GUI til at udføre sikkerhedskopieringsprocedurerne. Den tilføjer også en række funktioner som kryptering, komprimering, planlægning, opbevaringsstyring og automatisk sikkerhedskopiering.