Percona XtraBackup è un'utilità per il backup a caldo dei database MySQL.
Durante la creazione del backup dei dati non avviene il blocco delle tabelle, il sistema continua a funzionare senza alcuna restrizione.
XtraBackup 2.4 può creare backup delle tabelle InnoDB, XtraDB e MyISAM su server MySQL 5.11, 5.5, 5.6 e 5.7, e anche su server Percona per MySQL con XtraDB.
Per lavorare con MySQL 8.x si consiglia di utilizzare la versione XtraBackup 8.x. In questo articolo si parlerà solo di XtraBackup 2.4.
Il principale vantaggio XtraBackup sta nel fatto che questa utilità è adatta sia per creare backup in sistemi con carico pesante server, sia per sistemi con un basso numero di transazioni.
Se la dimensione totale dei tuoi database MySQL è significativa (decine di gigabyte), l'utilità standard mysqldump non consentirà di creare rapidamente un backup, e il ripristino del dump richiederà molto tempo.
Installazione
Installazione XtraBackup dal repository apt Percona.
Esegui i seguenti comandi in sequenza:
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'utilità funzioni correttamente sul server. Di conseguenza, sullo schermo verrà visualizzato qualcosa di simile a:
xtrabackup: recognized server arguments: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup version 2.4.20 based on MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

Permessi, autorizzazioni e privilegi
XtraBackup deve avere la possibilità di:
Connettersi al tuo server MySQL.
Avere i permessi di accesso alla cartella datadir.
Durante la creazione del backup avere diritti di scrittura sulla directory specificata con il parametro target-dir directory.
Cos'è datadir?
datadir è la directory in cui il server di database MySQL memorizza i dati. Tutti i database, tutte le tabelle si trovano lì. Nella maggior parte delle distribuzioni Linux di default questa directory è /var/lib/mysql.
Cos'è la directory target-dir?
target-dir è la directory in cui verrà salvato il backup.
L'utente del database ha bisogno dei seguenti diritti di accesso alle tabelle e ai database da sottoporre a backup:
RELOAD e LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
CREATE
INSERISCI
SELECT
Configurazione
Configurazione XtraBackup viene eseguita utilizzando opzioni che funzionano come i parametri standard di MySQL.
Cosa significa?
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'utility XtraBackup, dopo l'avvio, legge le sezioni [mysqld] e [xtrabackup] dai file di configurazione di MySQL. Questo viene fatto affinché l'utility possa utilizzare le impostazioni del tuo DBMS senza la necessità di specificare i parametri manualmente ad ogni backup.
Ad esempio, il valore datadir e alcuni parametri InnoDB XtraBackup li otteniamo dalla configurazione del tuo DBMS.
Se per far funzionare XtraBackup desideri sovrascrivere i parametri che si trovano nella sezione [mysqld], basta specificarli nel file di configurazione nella sezione [xtrabackup]. Poiché verranno letti successivamente, avranno una priorità maggiore.
Non è necessario aggiungere alcun parametro in my.cnf. Tutti i parametri richiesti possono essere specificati nella riga di comando. Di solito, l'unica cosa che può essere conveniente posizionare nella sezione [xtrabackup] del tuo my.cnf è il parametro target_dir, che per impostazione predefinita definisce la directory in cui verranno archiviati i backup. Ma non è obbligatorio.
Esempio di specifica del percorso alla directory del backup in my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Script per la creazione del backup
Per creare un backup, puoi usare 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, con l'utility XtraBackup creiamo il backup e lo salviamo in /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupIn precedenza, in MySQL avevamo creato un utente xtrabackup con le necessarie autorizzazioni. Con il parametro target-dir indichiamo la directory in cui il backup deve essere salvato.
Un punto importante!
Fai attenzione alla riga dello script:
xtrabackup --prepare --target-dir=/mysql/backup
I dati nella directory /mysql/backup non sono coerenti finché non vengono preparati.
Il fatto è che durante la copia dei file potrebbero essersi verificati cambiamenti. L'operazione xtrabackup --prepare --target-dir=/mysql/backup rendere i dati del backup perfettamente sincronizzati nel tempo.
È possibile eseguire l'operazione di preparazione dei dati su qualsiasi macchina. Non è necessario farlo sul server in cui si trova il DBMS originale. Puoi copiare il backup sul server di destinazione e prepararlo lì.
L'ultima cosa che facciamo è creare un archivio, in cui mettiamo 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 fare, 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 qui sotto trasferirà il backup in datadir del server di destinazione:
xtrabackup --copy-back --target-dir=/mysql/backupOpzione 2
Si può procedere altrimenti, senza utilizzare l'utility XtraBackup.
Tutto ciò che devi fare è copiare il backup in datadir. Puoi farlo con 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:
fermare il server MySQL.
Pulire la cartella datadir o spostare il suo contenuto in un'altra posizione. La directory datadir deve essere completamente vuota.
Dopo aver completato il trasferimento dei dati in datadir puoi avviare il server MySQL.
Materiali utilizzati
.
Fonte: habr.com
