Sommario
- introduzione
- Prerequisiti
- Passaggio 1: creare un utente di sistema non root
- Passaggio 2: controllare il motore di archiviazione
- Passaggio 3: creare un utente del database per il backup
- Passaggio 4: installare Percona XtraBackup
- Passaggio 5: creare directory di archiviazione di backup
- Passaggio 6: creare il primo backup completo
- Passaggio 7: creare i seguenti backup incrementali
- Passaggio 8: preparare i file di backup per il ripristino del database
- Passaggio 9: ripristinare il database
- Ulteriori passi
introduzione
Percona XtraBackup è un programma gratuito basato su MySQL utilizzato per eseguire backup a caldo. È anche di provenienza aperta. Con Percona XtraBackup, è possibile eseguire backup a caldo dei database MySQL, MariaDB o Percona Server senza interrompere il servizio di database o renderlo di sola lettura. Questa è una funzionalità fondamentale per molte aziende online.
Per i database che utilizzano i motori di archiviazione InnoDB, XtraDB e HailDB, Percona XtraBackup può eseguire backup senza blocco. Per i database che utilizzano i motori di archiviazione MyISAM, Merge e Archive, Percona XtraBackup può anche eseguire backup sospendendo brevemente le scritture al termine della procedura di backup.
In questo articolo, ti mostrerò come installare e utilizzare Percona XtraBackup per eseguire backup a caldo completi e incrementali su un server Vultr basato sull'applicazione WordPress One-Click. Eseguiremo un backup completo e due backup incrementali, quindi ripristineremo il database allo stato di ciascuno dei tre backup di conseguenza.
Prerequisiti
Suppongo che tu abbia distribuito da zero un'istanza del server WordPress Vultr con un clic e abbia effettuato l'accesso come root, usando SSH.
Passaggio 1: creare un utente di sistema non root
Per motivi di sicurezza, è consigliabile creare un altro account utente con autorizzazioni di root, quindi utilizzarlo per accedere ed eseguire le operazioni quotidiane sul sistema. È ancora possibile eseguire quasi tutti i comandi del superutente con il sudo
comando.
1) Crea un nuovo utente. Sostituisci sysuser
con il tuo nome utente.
useradd sysuser
2) Imposta la password per il tuo nuovo utente. Sostituisci sysuser
con il tuo nome utente.
passwd sysuser
3) Concedi i permessi di root al tuo nuovo utente.
visudo
Trova il paragrafo seguente.
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
Aggiungi una riga direttamente sotto questo paragrafo, sostituisci sysuser
con il tuo nome utente.
sysuser ALL=(ALL) ALL
Salva ed esci.
:wq
4) Passa al tuo nuovo account utente.
logout
Quindi, utilizzare le credenziali del nuovo utente per accedere dalla finestra del terminale.
Passaggio 2: controllare il motore di archiviazione
Per impostazione predefinita, l'accesso root di MySQL viene salvato sul VPS in /root/.my.cnf
. Visualizza la password nel tuo terminale con il seguente comando.
sudo cat /root/.my.cnf
Utilizzare le credenziali visualizzate sullo schermo per accedere alla console MySQL.
mysql -u root -p
Nella shell MySQL, eseguire quanto segue.
SHOW DATABASES;
Tutti i database MySQL saranno stati visualizzati sullo schermo. Il database denominato like wp5273512
è il database WordPress di cui vogliamo eseguire il backup. Nel seguente comando, sostituisci wp5273512
con il tuo:
USE wp5273512;
Controllare il motore di archiviazione per ogni tabella:
SHOW TABLE STATUS\G
Scoprirai che tutte le tabelle nel database MySQL di WordPress utilizzano il motore di archiviazione InnoDB, perfetto per eseguire backup a caldo con Percona XtraBackup.
Per qualsiasi altro database MySQL che utilizza il motore di archiviazione MyISAM, possiamo ancora eseguirne il backup con Percona XtraBackup mettendo brevemente in pausa le scritture.
Passaggio 3: creare un utente del database per il backup
Sempre nella shell MySQL, utilizzare i seguenti comandi per creare un utente del database dedicato per il backup. Ricorda di sostituire il nome utente del database xbuser
e la password xbpasswd
con i tuoi:
CREATE USER 'xbuser'@'localhost' IDENTIFIED BY 'xbpasswd';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS, SUPER, CREATE, INSERT, SELECT ON *.* TO 'xbuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
I privilegi concessi sopra sono necessari per la piena funzionalità di Percona XtraBackup. Puoi rimuoverne alcuni per meno funzionalità e migliore sicurezza. Per ulteriori dettagli, consultare il sito Web ufficiale di Percona XtraBackup .
Passaggio 4: installare Percona XtraBackup
Puoi installare Percona XtraBackup dal repository RPM di Percona abbastanza facilmente:
sudo yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
sudo yum install -y percona-xtrabackup
Passaggio 5: creare directory di archiviazione di backup
Innanzitutto, è necessario aggiungere l'utente sysuser
al mysql
gruppo. Sostituisci sysuser
con il tuo nome utente.
sudo gpasswd -a sysuser mysql
Creare una directory per archiviare i backup completi.
sudo mkdir -p /dbbackup/full/
Creare un'altra directory per archiviare i backup incrementali.
sudo mkdir -p /dbbackup/inc/
Cambia il proprietario di queste directory in utente sysuser
e gruppo sysuser
.
sudo chown -R sysuser:sysuser /dbbackup
Esci per rendere effettive queste modifiche.
logout
Quindi, accedi di sysuser
nuovo con .
Passaggio 6: creare il primo backup completo
XtraBackup consiste principalmente nel programma XtraBackup e nello innobackupex
script perl. Di solito, è possibile utilizzare lo innobackupex
script perl per eseguire varie procedure operative per comodità.
Immettere il comando seguente per creare il primo backup completo. Ricordarsi di sostituire il nome utente xbuser
del database, la password dell'utente del database xbpasswd
e la directory di backup completa /dbbackup/full/
con i propri.
sudo innobackupex --user=xbuser --password=xbpasswd /dbbackup/full/
Con questo comando eseguito correttamente, vedrai il messaggio di conferma "innobackupex: completato OK!" all'ultima riga dell'output.
Tutti i file appena creati di questo backup completo verranno archiviati in una directory timestamp in /dbbackup/full/
. Ad esempio /dbbackup/full/2015-05-22_05-45-54
,.
Passaggio 7: creare i seguenti backup incrementali
Immettere il comando seguente per creare il primo backup incrementale. Sostituire le variabili nel comando di conseguenza.
sudo innobackupex --user=xbuser --password=xbpasswd --incremental --incremental-basedir=/dbbackup/full/2015-05-22_05-45-54 /dbbackup/inc/
Di nuovo, vedrai "innobackupex: completato OK!" alla fine dell'output quando il comando viene eseguito correttamente. I file di backup verranno archiviati in una directory timestamp in /dbbackup/inc/
.
Immettere il comando seguente per creare il secondo backup incrementale. Sostituire le variabili nel comando di conseguenza.
sudo innobackupex --user=xbuser --password=xbpasswd --incremental --incremental-basedir=/dbbackup/inc/2015-05-22_05-48-12 /dbbackup/inc/
In caso di successo, vedrai il "innobackupex: completato OK!" messaggio di nuovo. Controlla di /dbbackup/inc/
nuovo la cartella per vedere i file di backup.
Passaggio 8: preparare i file di backup per il ripristino del database
Tutti i file di backup del database devono essere preparati prima di poter essere utilizzati per ripristinare il database.
Nota : prima di eseguire le procedure di preparazione e ripristino, è meglio conservare una copia dell'intera directory di backup (come /dbbackup/
) in un altro posto nel caso in cui eventuali danni al backup dei file siano causati da errori.
In ogni directory di backup è presente un file denominato xtrabackup_checkpoints
che contiene il tipo di backup e i numeri di sequenza del registro di inizio e fine ( from_lsn
e to_lsn
). È possibile utilizzare questi numeri per chiarire la strategia di ripristino del database. Guarda gli esempi seguenti.
Nel xtrabackup_checkpoints
file del primo backup completo, ho:
backup_type = full-backuped
from_lsn = 0
to_lsn = 2932478
Nel xtrabackup_checkpoints
file del primo backup incrementale, ho:
backup_type =incremental
from_lsn = 2932478
to_lsn = 2970177
Nel xtrabackup_checkpoints
file del secondo backup incrementale, ho:
backup_type = incremental
from_lsn = 2970177
to_lsn = 3004672
In breve, dovresti affrontare ogni backup con l'ordine crescente di lsn. Se la sequenza LSN è incompleta o disordinata, è possibile perdere dati.
Nota : i seguenti comandi riguardano tre directory, sostituirle con le proprie.
Per ripristinare il database allo stato del primo backup completo, è necessario preparare i file di backup con il comando seguente:
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Per ripristinare il database allo stato del primo backup incrementale, è necessario preparare i file di backup con i seguenti comandi:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Per ripristinare il database allo stato del secondo backup incrementale, è necessario preparare i file di backup con i seguenti comandi:
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54
sudo innobackupex --apply-log --redo-only /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-48-12
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54 --incremental-dir=/dbbackup/inc/2015-05-22_05-51-32
sudo innobackupex --apply-log /dbbackup/full/2015-05-22_05-45-54
Note :
Per i backup incrementali, è necessario utilizzare l' --redo-only
opzione su tutti tranne l'ultimo backup incrementale. Tuttavia, l'utilizzo di questa opzione sull'ultimo backup incrementale è ancora innocuo per la coerenza dei dati - causerà solo un certo ritardo a causa del rollback del database.
L'ultimo comando di ogni scenario incrementale è facoltativo ma consigliato, poiché accelererà il ripristino.
Dopo la preparazione, le modifiche registrate nei file di backup incrementali verranno aggiunte ai file di backup completi di base preparati, quindi è necessario utilizzare sempre i file di backup completi preparati per ripristinare il database, indipendentemente dal fatto che si scelga un backup completo o un backup incrementale.
Passaggio 9: ripristinare il database
Prima di poter ripristinare il database, è necessario arrestare il servizio di database.
sudo service mysqld stop
È inoltre necessario svuotare la directory del database. È possibile spostare i file del database corrente in un altro posto per precauzione.
sudo mkdir /currentdb
sudo mv /var/lib/mysql/* /currentdb
Ripristina il tuo database con i file di "backup completo" preparati.
sudo innobackupex --copy-back /dbbackup/full/2015-05-22_05-45-54
Poiché la procedura di ripristino modificherà il proprietario della directory del database, è necessario ripristinarlo mysql:mysql
per renderlo operativo.
sudo chown -R mysql:mysql /var/lib/mysql
Riavvia il servizio di database.
sudo service mysqld start
Questo è tutto. A questo punto, puoi visitare il tuo sito WordPress per verificare che il processo di ripristino abbia avuto esito positivo.