Percona XtraBackup è un'utilità di backup open source per MySQL. Supporta tutte le versioni di MySQL come Percona Server, MariaDB e (Oracle) MySQL. Percona Xtrabackup esegue un backup a caldo per MySQL. Hot Backup significa creare un backup di un server MySQL mentre è in esecuzione senza tempi di inattività.
In questo tutorial, ti mostrerò come creare un backup di database MySQL a caldo con lo strumento OpenSource Percona XtraBackup su Ubuntu 16.04 (Xenial Xerus). Userò MariaDB come server di database per eseguire il backup, ma la stessa configurazione funzionerà anche per i server MySQL.
Prerequisito
- Server Ubuntu 16.04 - (Xenial Xerus)
- Server MySQL o MariaDB
- privilegi radice
Passaggio 1:installazione di Percona XtraBackup
Il primo passo è installare l'ultimo software Percona XtraBackup sul nostro server Ubuntu. Accedi al tuo server tramite SSH (o sulla console):
ssh [email protected]
TYPE YOUR PASSWORD
Percona XtraBackup è disponibile nel repository di Ubuntu, ma vogliamo utilizzare l'ultima versione del repository Percona.
Aggiungi il repository Percona scaricando il pacchetto deb dal web e installalo con il comando dpkg:
wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb
Successivamente, aggiorna il repository e installa Ppercona XtraBackup 2.4 (l'ultima versione al momento):
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
Percona XtraBackup è installato.
Passaggio 2:configurazione della directory utente e backup
Per eseguire il backup a caldo, dobbiamo creare un nuovo utente mysql con privilegi e autorizzazioni speciali. In questo tutorial, userò MariaDB 10.0 come server di database. Se non hai ancora installato un database compatibile con MySQL, puoi installarlo con il comando seguente:
sudo apt-get install mariadb-server mariadb-client
Imposta una password sicura per l'utente root con questo comando:
mysql_secure_installation
Se è installato MariaDB, accedi alla shell MariaDB/MySQL come utente root con il comando mysql client:
mysql -u root -p
TYPE MySQL PASSWORD
Crea un nuovo utente chiamato 'bekupuser ' con la password 'miapassword ' (scegli una password sicura per il tuo server!):
CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';
Concedi all'utente i seguenti privilegi:'RICARICA, ELABORA, BLOCCA TABELLE, REPLICA CLIENT'.
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exit
Quindi, crea una nuova directory per archiviare i file di backup di MySQL:
mkdir -p /data/backups/mysql/
Il nuovo utente di backup e una directory di backup sono stati creati.
Fase 3:esegui il backup con Innobackupex
Innobackupex è un wrapper di script Perl per il programma xtrabackup. È una versione modificata dello script innobackup fornito da Oracle, distribuito con lo strumento InnoDB Backup. Innobackupex fornisce il backup di un'intera istanza del database MySQL, utilizzando xtrabackup in combinazione con xbstream e xbcrypt.
In questo passaggio creeremo e prepareremo un backup completo per l'istanza MySQL.
A. Crea un backup con Innobackupex
Nel passaggio 2, abbiamo creato una nuova directory per il backup e aggiunto un nuovo utente di backup mysql. Li useremo ora per creare un backup con il comando innobackupex.
Crea un backup MySQL con innobackupex nella nuova directory '/data/backups/my_backup':
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backup
Nota:
--utente =utente con privilegi di backup richiesti (passaggio 2).
--password =password dell'utente di backup.
--nessun timestamp =disabilita la creazione di una nuova sottodirectory con timestamp nella directory root di backup.
/data/backups/my_backup =directory per il backup, verrà creata automaticamente durante il processo di backup. Se la directory esiste, riceverai un messaggio di errore.
Un'altra opzione:
mkdir -p /data/backups/my_backup2
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2
or
innobackupex --user=bekupuser --password=mypassword /data/backups/
Nota:
Se non è presente alcuna directory 'my_backup2 ', otterrai la tua directory in base a 'timestamp ' formato.
Risultati:
Dopo aver creato un nuovo backup, i dati non sono pronti per un ripristino. C'è un altro passaggio in modo che i dati siano pronti per essere ripristinati. Abbiamo bisogno della "fase di preparazione" in modo che i dati possano essere ripristinati.
Prepara il backup utilizzando innobackupex con l'opzione --apply-log nella directory di backup '/data/backups/my_backup ':
innobackupex --apply-log /data/backups/my_backup
Assicurati che il processo sia completo senza errori prima di procedere.
Se disponi di memoria sufficiente e di un database di grandi dimensioni, puoi utilizzare l'opzione --use-memory=memorynumber per dire a innobackupex quanta memoria può utilizzare:
innobackupex --apply-log --use-memory=4G /data/backups/my_backup
I dati sono pronti per essere ripristinati ora. Possiamo ripristinarlo sullo stesso server o su un altro server che esegue MariaDB.
Passaggio 4:ripristino del backup completo con Innobackupex
In questo passaggio, ripristineremo l'istanza MySQL con innobackupex.
Prima di ripristinare l'istanza MySQL, è necessario interrompere il processo MySQL con il comando systemctl (il processo MariaDB si chiama mysql):
systemctl stop mysql
Fai un backup della vecchia directory dei dati di MySQL:
mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/
Quindi, ripristina l'istanza mysql dal backup completo con innobackupex:
innobackupex --copy-back /data/backups/my_backup
Quando vedi il risultato "innobackupex:completato OK ', quindi hai ripristinato correttamente la tua istanza MySQL.
Ora cambia il proprietario della directory dei dati MySQL nell'utente mysql e riavvia il servizio:
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
L'istanza MySQL è stata ripristinata con successo con percona-xtrabackup.