Percona XtraBackup è uno strumento per il backup a caldo dei database MySQL.
Durante la creazione del backup dei dati non ci sono blocchi delle tabelle, il tuo sistema continua a funzionare senza alcuna limitazione.
XtraBackup 2.4 può creare backup delle tabelle InnoDB, XtraDB e MyISAM su server MySQL 5.11, 5.5, 5.6 e 5.7, così come su server Percona per MySQL con XtraDB.
Per lavorare con MySQL 8.x dovresti utilizzare la versione XtraBackup 8.x. In questo articolo si parlerà solo di XtraBackup 2.4.
Il principale vantaggio XtraBackup sta nel fatto che questo strumento è adatto sia per creare backup ad alta intensità di carico server, sia per sistemi con un basso numero di transazioni.
Se la dimensione totale dei tuoi database MySQL è notevole (decine di gigabyte), lo strumento standard mysqldump non permetterà di creare rapidamente un backup, e il ripristino del dump richiederà molto tempo.
Installazione
Installazione XtraBackup dal repository apt Percona.
Esegui consecutivamente i seguenti comandi:
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
sudo apt-get update
sudo apt-get install percona-xtrabackup-242. Dopo l'installazione, esegui il comando xtrabackup -v. È importante assicurarsi che l'utility funzioni correttamente sul server. Di conseguenza, sullo schermo verrà visualizzato qualcosa di simile:
xtrabackup: argomenti del server riconosciuti: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0 xtrabackup versione 2.4.20 basata su MySQL server 5.7.26 Linux (x8664) (id revisione: c8b4056)

Permessi, autorizzazioni e privilegi
XtraBackup deve essere in grado di:
Collegarsi al tuo server MySQL.
Avere accesso alla directory datadir.
Durante la creazione del backup, avere i diritti di scrittura nella directory specificata tramite il parametro target-dir directory.
Cos'è la directory datadir?
datadir — è la directory in cui il server database MySQL memorizza i dati. Tutti i database e tutte le tabelle si trovano lì. Nella maggior parte delle distribuzioni Linux, per impostazione predefinita, questa directory è /var/lib/mysql.
Cos'è la directory target-dir?
target-dir — è la directory in cui verrà salvato il backup.
All'utente del database sono necessari i seguenti diritti di accesso alle tabelle e ai database da sottoporre a backup:
RELOAD e LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
CREARE
INSERT
SELECT
Configurazione
Configurazione XtraBackup viene eseguito utilizzando le opzioni che si comportano allo stesso modo delle opzioni standard di MySQL.
Cosa significa questo?
I parametri di configurazione possono essere specificati sia nella riga di comando che nel file di configurazione del DBMS, ad esempio in /etc/my.cnf.
L'utilità XtraBackup, dopo l'avvio, legge le sezioni [mysqld] e [xtrabackup] dai file di configurazione di MySQL. Questo viene fatto affinché l'utilità possa utilizzare le impostazioni del vostro DBMS senza dover specificare manualmente i parametri ad ogni backup.
Ad esempio, il valore datadir e alcuni parametri InnoDB XtraBackup si ottengono dalla configurazione del vostro DBMS.
Se per far funzionare XtraBackup desiderate sovrascrivere i parametri che si trovano nella sezione [mysqld], basta specificarli nel file di configurazione nella sezione [xtrabackup]. Poiché saranno letti successivamente, la loro priorità sarà più alta.
Non è necessario aggiungere alcun parametro in my.cnf. Tutti i parametri richiesti possono essere indicati nella riga di comando. Di solito, l'unica cosa che potrebbe essere conveniente posizionare nella sezione [xtrabackup] del vostro my.cnf è il parametro target_dir, che per impostazione predefinita definisce la cartella in cui saranno collocati i backup. Ma questo non è obbligatorio.
Esempio di specifica del percorso della cartella di backup in my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Script di creazione del backup
Per creare un backup, puoi utilizzare il seguente script:
#!/bin/bash
# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup
# Cоздаём бекап
xtrabackup --user=xtrabackup
--password=xxxx_SECRET_xxxx
--backup
--target-dir=/mysql/backup
# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup
# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backupCosa succede durante l'esecuzione dello script?
Per prima cosa, puliamo (eliminiamo) la directory in cui salveremo il backup:
rm -rf /mysql/backup.
Poi, tramite l'utilità XtraBackup creiamo il backup e lo salviamo in /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupIn precedenza, in MySQL abbiamo creato l'utente xtrabackup con i privilegi richiesti. Utilizzando il parametro target-dir indichiamo la directory in cui deve essere salvato il backup.
Un punto importante!
Fai attenzione alla riga dello script:
xtrabackup --prepare --target-dir=/mysql/backup
I dati nella directory /mysql/backup non sono coerenti fino a quando non vengono preparati.
Il fatto è che durante la copia dei file potrebbero esserci state delle modifiche. L'operazione xtrabackup --prepare --target-dir=/mysql/backup rende i dati del backup perfettamente sincronizzati nel tempo.
L'operazione di preparazione dei dati può essere eseguita su qualsiasi macchina. Non è necessario farlo sul server dove si trova il DBMS sorgente. Puoi copiare il backup sul server di destinazione e prepararlo lì.
L'ultima cosa che facciamo è creare un archivio in cui inseriamo il nostro backup:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backupRipristino del backup
Prima di procedere al ripristino del backup sul server di destinazione, i dati devono passare attraverso una fase di preparazione. Come farlo, vedere sopra.
Il processo di ripristino dei dati è molto semplice. Devi estrarre il backup dall'archivio e sostituire i dati in datadir.
Come sostituire i dati in datadir?
Consideriamo due opzioni.
Opzione 1
Utilizzare l'utility XtraBackup. È necessario specificare l'opzione —copy-back.
Il comando seguente trasferirà il backup nel datadir server di destinazione:
xtrabackup --copy-back --target-dir=/mysql/backupOpzione 2
In alternativa, è possibile procedere senza l'utility XtraBackup.
Tutto ciò che devi fare è copiare il backup in datadir. Puoi farlo utilizzando cp o rsync.
È importante capire che la procedura di ripristino del backup consiste semplicemente nella sostituzione del contenuto della directory datadir.
Prima di iniziare il ripristino del backup sul server di destinazione è necessario:
Arrestare il server MySQL.
Pulire la cartella datadir o spostare il suo contenuto in un'altra posizione. La directory datadir deve essere assolutamente vuota.
Dopo il completamento del trasferimento dei dati in datadir il server MySQL può essere avviato.
Materiali utilizzati
.
Fonte: habr.com
