I mit tidligere blogindlæg, der handlede om at opgradere til den seneste version af Jira sammen med den seneste version af MariaDB, nævner jeg kort, at når man opgraderer til MariaDB Server 10.3, skal man se på, hvordan sikkerhedskopiering udføres. Med MariaDB Server 10.3 kommer MariaDB Backup, som understøtter de nyeste funktioner i MariaDB Server. Den er også tilgængelig på alle de samme platforme som MariaDB Server, og den distribueres sammen med serveren.
Hvis du har sikkerhedskopieret med XtraBackup og prøver at køre de samme kommandoer mod MariaDB Server 10.3, får du en fejlmeddelelse:
$ innobackupex ~/backup_to_dir --user=username --password=password
...
InnoDB: Unsupported redo log format. The redo log was created with MariaDB 10.3.9.
Den første sætning i den sidste besked er, hvad den handler om. XtraBackup forstår ikke filen/filerne i 10.3s redo-log. Bemærk, at vi brugte en gammel version af XtraBackup, og det er derfor, kommandoen stadig er innobackupex .
På grund af dette og nogle andre grunde nævnt nedenfor, kommer MariaDB Server nu med MariaDB Backup, der understøtter det nye redolog-format. Med MariaDB Backup har du den samme funktionalitet, som du er vant til med XtraBackup, men med understøttelse af det forbedrede redolog-format og understøttelse af MariaDBs data-at-rest-kryptering. Et andet meget efterspurgt aspekt er, at MariaDB Backup også er tilgængelig til Windows, hvilket XtraBackup ikke er. Hvis du er interesseret i at vide mere om ændringen af gentag-log, så læs dette.
I begyndelsen af dette indlæg nævner jeg, at vi for nylig opgraderede Jira til den nyeste version og MariaDB Server til 10.3. I det ældre miljø brugte vi XtraBackup. For at få sikkerhedskopier til MariaDB Server 10.3 var vi nødt til at opdatere vores backup-scripts for at bruge MariaDB Backup.
Efter skift til MariaDB Backup ser backupkommandoen sådan ud:
$ mariabackup --backup --target-dir /backup/to/dir --user=username --password=password --parallel=4
Vi var nødt til at ændre selve kommandoen fra at være innobackupex til mariabackup og vi tilføjede to muligheder; –sikkerhedskopi at fortælle mariabackup at vi vil have den til at oprette en sikkerhedskopi og –target-dir for at angive, at den givne mappe er der, hvor backupfilerne skal gå. Det skal bemærkes, at hvis vi ville have brugt en nyere version af XtraBackup, ville kommandolinjeindstillingerne have været fuldstændig kompatible med XtraBackup, så det eneste, der skulle ændres derefter, ville have været selve kommandoen fra xtrabackup til mariabackup .
For at være sikker på, at sikkerhedskopien virker, kopierer vi den til en anden server og prøver at gendanne den der. For at gendanne en sikkerhedskopi skal vi først forberede den:
$ mariabackup --prepare --target-dir full-2018-09-11_09-38-32
Bemærk, at jeg har en fuld sikkerhedskopi af en MariaDB Server-instans, som vil erstatte alt, hvad der ville eksistere i det tilfælde, hvor jeg gendanner til. Jeg vil derfor stoppe serveren og fjerne alle datafiler, den indeholder.
$ sudo service mariadb stop
$ sudo rm -rf /var/lib/mysql/*
Nu kan sikkerhedskopieringsfilerne lægges i databiblioteket for denne serverinstans. Det bør gøres med mariabackup for at få det gjort rigtigt. Det gør nogle ting, der er relateret til redolog-formatet forklaret ovenfor.
$ sudo mariabackup --copy-back --target-dir full-2018-09-11_09-38-32
Sørg for, at tilladelserne er korrekte. I mit tilfælde er normal bruger og gruppe i brug. Start derefter serveren.
$ sudo chown mysql:mysql /var/lib/mysql -R
$ sudo service mariadb start
Lad os derefter oprette forbindelse til serveren og kontrollere, at den har de data, den skal have. Jeg besluttede at forespørge efter det maksimale problemnummer i Jira.
# connect to mariadb
$ mysql -uusername -ppassword
# query the database
MariaDB [(none)]> USE jiradb
MariaDB [jiradb]> SELECT MAX(issuenum) FROM jiraissue;
Voila! Vi har nu sikkerhedskopier, der arbejder på MariaDB Server 10.3.