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 InnoDB, XtraDB и 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)
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
Fonte: habr.com