Backup MySQL · 4 min read · Dec 13, 2025

Esegui Backup Caldi di Database MySQL con Percona XtraBackup su Ubuntu 16.04

Percona XtraBackup è un’utilità di backup open source per MySQL. Supporta tutte le varianti di MySQL come Percona Server, MariaDB e (Oracle) MySQL. Percona Xtrabackup esegue un Backup Caldo per MySQL. Backup Caldo significa creare un backup di un server MySQL mentre è in esecuzione senza tempi di inattività.

In questo tutorial, ti mostrerò come creare un backup caldo di un database MySQL 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 di Root

Passo 1 - Installa Percona XtraBackup

Il primo passo è installare l’ultima versione del software Percona XtraBackup sul nostro server Ubuntu. Accedi al tuo server tramite SSH (o sulla console):

ssh [email protected]  
DIGITA LA TUA PASSWORD

Percona XtraBackup è disponibile nel repository di Ubuntu, ma vogliamo utilizzare l’ultima versione dal repository di Percona.

Aggiungi il repository di 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 Percona XtraBackup 2.4 (l’ultima versione al momento):

sudo apt-get update  
sudo apt-get install percona-xtrabackup-24

Percona XtraBackup è installato.

Passo 2 - Configura Utente e Directory di Backup

Per eseguire il backup caldo, dobbiamo creare un nuovo utente mysql con privilegi e permessi 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 qui sotto:

sudo apt-get install mariadb-server mariadb-client

Imposta una password sicura per l’utente root con questo comando:

mysql_secure_installation

Se MariaDB è installato, accedi alla shell di MariaDB/MySQL come utente root con il comando mysql client:

mysql -u root -p  
DIGITA LA PASSWORD DI MySQL

Crea un nuovo utente chiamato ‘ bekupuser ‘ con la password ‘ mypassword ‘ (scegli una password sicura per il tuo server!):

CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';

Concedi all’utente i seguenti privilegi: ‘RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT’.

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';  
FLUSH PRIVILEGES;  
exit

Successivamente, crea una nuova directory per memorizzare i file di backup di MySQL:

mkdir -p /data/backups/mysql/

Il nuovo utente di backup e una directory di backup sono stati creati.

Passo 3 - Esegui Backup con Innobackupex

Innobackupex è un wrapper di script Perl per il programma xtrabackup. È una versione patchata dello script innobackup fornito da Oracle, distribuito con lo strumento di Backup InnoDB. Innobackupex fornisce backup per un’intera istanza di database MySQL, utilizzando xtrabackup in combinazione con xbstream e xbcrypt.

In questo passo, creeremo e prepareremo un backup completo per l’istanza MySQL.

A. Crea un backup con Innobackupex

Nel passo 2, abbiamo creato una nuova directory per il backup e aggiunto un nuovo utente di backup mysql. Ora li utilizzeremo 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:

–user = utente con i privilegi di backup richiesti (passo-2).

–password = password dell’utente di backup.

–no-timestamp = disabilita la creazione di una nuova sottodirectory con timestamp nella directory principale 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.

Crea un backup con Percona XtraBackup

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 esiste la directory ‘ my_backup2 ‘, otterrai la tua directory basata sul formato ‘ timestamp ‘.

Risultati:

B. Prepara un Backup Completo con Innobackupex

Dopo aver creato un nuovo backup, i dati non sono pronti per un ripristino. C’è un ulteriore passo affinché i dati possano essere ripristinati. Abbiamo bisogno della ‘fase di preparazione’ affinché 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 completato senza errori prima di procedere.

Prepara il Backup Completo

Se hai abbastanza memoria e 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 ora pronti per essere ripristinati. Possiamo ripristinarli sullo stesso server o su un altro server che esegue MariaDB.

Passo 4 - Ripristina il Backup Completo con Innobackupex

In questo passo, ripristineremo l’istanza MySQL con innobackupex.

Prima di ripristinare l’istanza MySQL, dobbiamo fermare il processo MySQL con il comando systemctl (il processo MariaDB è chiamato mysql):

systemctl stop mysql

Fai un backup della vecchia directory dei dati MySQL:

mkdir ~/mysql_old/  
mv /var/lib/mysql/* ~/mysql_old/

Successivamente, ripristina l’istanza mysql dal backup completo con innobackupex:

innobackupex --copy-back /data/backups/my_backup

Quando vedi il risultato ‘ innobackupex: completato OK ‘, allora hai ripristinato con successo la tua istanza MySQL.

Ora cambia il proprietario della directory dei dati MySQL all’utente mysql e riavvia il servizio:

chown -R mysql:mysql /var/lib/mysql  
systemctl start mysql

ripristina il backup

L’istanza MySQL è stata ripristinata con successo con percona-xtrabackup.

Riferimento

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.