Nel mio precedente post sul blog che riguardava l'aggiornamento all'ultima versione di Jira insieme all'ultima versione di MariaDB, menziono brevemente che durante l'aggiornamento a MariaDB Server 10.3 si dovrebbe guardare come vengono eseguiti i backup. Con MariaDB Server 10.3 arriva MariaDB Backup, che supporta le più recenti funzionalità di MariaDB Server. È inoltre disponibile su tutte le stesse piattaforme di MariaDB Server ed è distribuito insieme al server.
Se hai eseguito il backup con XtraBackup e hai provato a eseguire gli stessi comandi su MariaDB Server 10.3, riceverai un messaggio di errore:
$ innobackupex ~/backup_to_dir --user=username --password=password
...
InnoDB: Unsupported redo log format. The redo log was created with MariaDB 10.3.9.
La prima frase nell'ultimo messaggio è di cosa si tratta. XtraBackup non comprende i file nel registro di ripristino di 10.3. Nota che abbiamo utilizzato una vecchia versione di XtraBackup ed è per questo che il comando è ancora innobackupex .
A causa di questo e di altri motivi menzionati di seguito, MariaDB Server ora viene fornito con MariaDB Backup che supporta il nuovo formato del registro di ripristino. Con MariaDB Backup hai le stesse funzionalità a cui sei abituato con XtraBackup, ma con il supporto per il formato del registro di ripristino migliorato e il supporto per la crittografia dei dati inattivi di MariaDB. Un altro aspetto molto richiesto è che MariaDB Backup è disponibile anche per Windows, cosa che XtraBackup non lo è. Se sei interessato a saperne di più sulla modifica del log di ripristino, leggi questo.
All'inizio di questo post dico che abbiamo recentemente aggiornato Jira alla versione più recente e MariaDB Server alla 10.3. In quell'ambiente precedente abbiamo usato XtraBackup. Per ottenere backup per MariaDB Server 10.3 abbiamo dovuto aggiornare i nostri script di backup per utilizzare MariaDB Backup.
Dopo essere passati a MariaDB Backup, il comando di backup è simile al seguente:
$ mariabackup --backup --target-dir /backup/to/dir --user=username --password=password --parallel=4
Abbiamo dovuto cambiare il comando stesso da innobackupex a mariabackup e abbiamo aggiunto due opzioni; – backup per dire a mariabackup che vogliamo che crei un backup e –target-dir per specificare che la directory data è dove dovrebbero andare i file di backup. Va notato che se avessimo utilizzato una versione più recente di XtraBackup le opzioni della riga di comando sarebbero state completamente compatibili con XtraBackup, quindi l'unica cosa da modificare sarebbe stato il comando stesso da xtrabackup a mariabackup .
Per essere sicuri che il backup funzioni, lo copieremo su un altro server e proveremo a ripristinarlo lì. Per ripristinare un backup dobbiamo prima prepararlo:
$ mariabackup --prepare --target-dir full-2018-09-11_09-38-32
Si noti che ho un backup completo di un'istanza del server MariaDB che sostituirà tutto ciò che esisterebbe nell'istanza in cui sto eseguendo il ripristino. Pertanto, fermerò il server e rimuoverò tutti i file di dati in esso contenuti.
$ sudo service mariadb stop
$ sudo rm -rf /var/lib/mysql/*
Ora i file di backup possono essere inseriti nella directory dei dati di questa istanza del server. Dovrebbe essere fatto con mariabackup per farlo bene. Fa alcune cose relative al formato del registro di ripristino spiegato sopra.
$ sudo mariabackup --copy-back --target-dir full-2018-09-11_09-38-32
Assicurati che le autorizzazioni siano corrette. Nel mio caso sono in uso utenti e gruppi normali. Quindi avvia il server.
$ sudo chown mysql:mysql /var/lib/mysql -R
$ sudo service mariadb start
Connettiamoci quindi al server e verifichiamo che abbia i dati che dovrebbe avere. Ho deciso di richiedere il numero massimo di emissioni in Jira.
# connect to mariadb
$ mysql -uusername -ppassword
# query the database
MariaDB [(none)]> USE jiradb
MariaDB [jiradb]> SELECT MAX(issuenum) FROM jiraissue;
Ecco! Ora abbiamo backup funzionanti su MariaDB Server 10.3.