Creazione di un backup MySQL utilizzando l'utilità XtraBackup.

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 InnoDBXtraDB 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-24

2. 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)

Creazione di un backup MySQL utilizzando l'utilità XtraBackup.

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/backup

Cosa 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/backup

In 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/backup

Ripristino 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/backup

Opzione 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

Documentazione ufficiale Percona XtraBackup.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster