Creazione di un backup MySQL utilizzando l'utilità XtraBackup

PerconaXtraBackup è un'utilità per i backup di database a caldo MySQL.

Quando si crea un backup dei dati, nessuna tabella viene bloccata e il sistema continua a funzionare senza alcuna restrizione.

Extra Backup 2.4 può creare copie di backup delle tabelle InnoDBXtraDB и Il mio ISAM sui server MySQL 5.11, 5.5, 5.6 e 5.7e anche sul server percona per MySQL с XtraDB.

Lavorare con MySQL 8.x dovrebbe essere utilizzata la versione XtraBackup 8.x. In questo articolo parleremo solo di XtraBackup 2.4.

Il vantaggio principale XtraBackup è che questa utility è adatta sia per creare backup di server molto caricati sia per sistemi con un basso numero di transazioni.

Se la dimensione totale dei tuoi database MySQL è significativa (decine di gigabyte), allora l'utilità standard mysqldump non ti consentirà di creare rapidamente una copia di backup e il ripristino del dump richiederà molto tempo.

Installazione

Installazione XtraBackup dal deposito adatto 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-24

2. Dopo l'installazione, esegui il comando xtrabackup -v. Pertanto, è importante assicurarsi che l'utilità funzioni correttamente sul server. Di conseguenza, sullo schermo verrà visualizzato qualcosa del genere:

xtrabackup: argomenti 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=0xtrabackup versione 2.4.20 basato sul server MySQL 5.7.26 Linux (x8664) (ID revisione: c8b4056)

Creazione di un backup MySQL utilizzando l'utilità XtraBackup

Diritti di accesso, autorizzazioni e privilegi 

XtraBackup dovrebbe essere in grado di:

  • Connettiti al tuo server MySQL.

  • Avere i diritti di accesso alla directory datadir

  • Quando si crea una copia di backup, disporre dei diritti di scrittura sul parametro specificato destinazione-dir Catalogare.

Cos'è Datadir?

datadir è la directory in cui si trova il server del database MySQL memorizza i dati. Tutti i database, tutte le tabelle sono lì. Sulla maggior parte delle distribuzioni Linux, la directory predefinita è /var/lib/mysql.

Cos'è la directory target-dir?

destinazione-dir - Questa è la directory in cui verrà salvato il backup.

L'utente del database necessita dei seguenti diritti di accesso alle tabelle e ai database di cui eseguire il backup:

  • RICARICA e BLOCCA LE TABELLE

  • CLIENTE DI REPLICA

  • CREA TABELLA

  • PROCESSO

  • SUPER

  • CREA

  • INSERT

  • SELEZIONA

Configurazione 

Configurazione XtraBackup fatto utilizzando opzioni che si comportano come le opzioni MySQL standard.

Che cosa significa?

I parametri di configurazione possono essere specificati sulla riga di comando o nel file di configurazione DBMS, ad esempio in /etc/mio.cnf.

L'utilità XtraBackup legge le partizioni dopo l'avvio [mysqld] и [xtrabackup] dai file di configurazione MySQL. Questo viene fatto in modo che l'utilità possa utilizzare le impostazioni del DBMS senza dover specificare manualmente i parametri durante ogni backup.

Ad esempio, il valore datadir e alcuni parametri InnoDB Otteniamo XtraBackup dalla configurazione del tuo DBMS.

Se affinché XtraBackup funzioni, desideri sovrascrivere i parametri presenti nella sezione [mysqld], quindi basta specificarli nel file di configurazione nella sezione [xtrabackup]. Poiché verranno letti più tardi, la loro priorità sarà più alta.

Non è necessario aggiungere alcun parametro a mio.cnf. Tutti i parametri richiesti possono essere specificati sulla riga di comando. Di solito l'unica cosa che può essere comodamente posizionata nella sezione [xtrabackup] la tua mio.cnf è un parametro destinazione_dir, che per impostazione predefinita specifica la directory in cui verranno posizionati i backup. Ma questo è facoltativo.

Un esempio di specifica del percorso della directory con una copia di backup in mio.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Script di backup

È possibile utilizzare il seguente script per creare un backup:

#!/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?

Innanzitutto puliamo (eliminiamo) la directory in cui salveremo la copia di backup:

rm -rf /mysql/backup.

Quindi, utilizzando l'utilità XtraBackup creare una copia di backup e salvarla in /mysql/backup/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

In precedenza, abbiamo creato un utente in MySQL xtrabackup con i privilegi richiesti. Utilizzando il parametro target-dir specifichiamo la directory in cui deve essere salvato il backup.

Un punto importante!

Nota la riga di script:

xtrabackup --prepare --target-dir=/mysql/backup

Dati del catalogo /mysql/backup non sono consistenti finché non sono cotti. 

Il fatto è che potrebbero verificarsi modifiche durante la copia dei file. Operazione xtrabackup --prepare --target-dir=/mysql/backup rende i dati di backup perfettamente coerenti nel tempo.

È possibile eseguire l'operazione di preparazione dei dati su qualsiasi macchina. Non è necessario eseguire questa operazione sul server in cui si trova il DBMS di origine. È possibile copiare il backup sul server di destinazione e prepararlo lì.

L'ultima cosa che facciamo è creare un archivio in cui posizioniamo il nostro backup:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

Ripristino di un backup 

Prima di poter ripristinare un backup sul server di destinazione, i dati devono passare attraverso una fase di preparazione. Vedi sopra per sapere come farlo.

Il processo di recupero dei dati è molto semplice. È necessario estrarre il backup dall'archivio e sostituire i dati datadir.

Come sostituire i dati nella directory dati?

Consideriamo due opzioni.

opzione 1

Utilizzare l'utilità XtraBackup. È necessario specificare un'opzione --copia-indietro

Il comando seguente trasferirà il backup in datadir server di destinazione:

xtrabackup --copy-back --target-dir=/mysql/backup

opzione 2

Puoi farlo diversamente, fare a meno dell'utilità XtraBackup.

Tutto quello che devi fare è copiare il backup su datadir. Puoi farlo con cp o rsync.

È importante capire che la procedura per ripristinare un backup si riduce semplicemente alla sostituzione del contenuto della directory datadir.

Prima di iniziare a ripristinare un backup sul server di destinazione, è necessario:

  • Arresta il server MySQL.

  • Cartella vuota datadir o spostarne il contenuto in un'altra posizione. Catalogare datadir deve essere vuoto.

Dopo aver completato il trasferimento dei dati a datadir È possibile avviare il server MySQL.

materiali impiegati

Documentazione ufficiale percona XtraBackup.

Fonte: habr.com

Aggiungi un commento