MySQL è un sistema di gestione di database relazionali (DBMS) open source che viene spesso distribuito in un vasto assortimento di contesti. Più frequentemente viene distribuito come parte dello Stack LAMP. Il sistema di database è anche facile da usare e altamente portabile ed è, nel contesto di molte applicazioni, estremamente efficiente. Poiché MySQL è spesso un archivio dati centralizzato per grandi quantità di dati mission-critical, eseguire backup regolari del database MySQL è una delle attività di ripristino di emergenza più importanti che un amministratore di sistema può eseguire. Questa guida tratta una serie di metodi distinti per la creazione di backup del database e il ripristino dei database dai backup.
Prima di iniziare il processo di installazione, presumiamo che tu abbia seguito i passaggi descritti nella nostra Configurazione e protezione di un'istanza di calcolo. Inoltre, dovrai installare il database MySQL. Tutta la configurazione verrà eseguita in una sessione terminale; assicurati di aver effettuato l'accesso al tuo Linode come root tramite SSH. Se non conosci l'amministrazione dei server Linux, potresti essere interessato alla nostra guida introduttiva ai concetti di Linux, alla guida per principianti e alle nozioni di base sull'amministrazione.
Metodologia di backup
La maggior parte dei backup dei database MySQL in questa guida vengono eseguiti utilizzando mysqldump
strumento, che viene distribuito con l'installazione predefinita del server MySQL. Ti consigliamo di utilizzare mysqldump
quando possibile perché è spesso il modo più semplice ed efficiente per eseguire i backup del database. Altri metodi descritti in dettaglio in questa guida sono forniti per le situazioni in cui non hai accesso a mysqldump
strumento, come in un ambiente di ripristino come Finnix o in situazioni in cui l'istanza locale del server MySQL non si avvia.
Tuttavia, questa guida fornisce una semplice panoramica di mysqldump
strumento, poiché ci sono molte opzioni e usi di mysqldump
che esulano dallo scopo del presente documento. Ti invitiamo a familiarizzare con tutte le procedure trattate in questo documento e a continuare la tua esplorazione di mysqldump
al di là dei casi qui descritti. Assicurati di notare quanto segue:
- Il
*.sql
file creati conmysqldump
può essere ripristinato in qualsiasi momento. Puoi persino modificare il database.sql
file manualmente (con grande cura!) utilizzando il tuo editor di testo preferito. - Se i tuoi database utilizzano solo il motore di archiviazione MyISAM, puoi sostituire
mysqldump
comando con il più velocemysqlhotcopy
.
Creazione di backup dell'intero sistema di gestione dei database (DBMS)
Spesso è necessario eseguire un backup (o "dump") di un intero sistema di gestione del database insieme a tutti i database e le tabelle, inclusi i database di sistema che contengono utenti, autorizzazioni e password.
Opzione 1:crea backup di un intero sistema di gestione del database utilizzando l'utilità mysqldump
Il metodo più semplice per creare un unico backup coerente dell'intero sistema di gestione del database MySQL utilizza mysqldump
utilità dalla riga di comando. La sintassi per la creazione di un dump del database con un timestamp corrente è la seguente:
mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p
Questo comando ti chiederà una password prima di iniziare il backup del database nella directory corrente. Questo processo può richiedere da pochi secondi ad alcune ore a seconda delle dimensioni dei tuoi database.
Automatizza questo processo aggiungendo una riga a crontab
:
0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD
Per l'esempio sopra, usa which mysqldump
per confermare il percorso corretto del comando e sostituire root
con l'utente mysql si desidera eseguire i backup come e PASSWORD
con la password corretta per quell'utente.
Nota Nell'esempio crontab, assicurati che non ci sia spazio tra il flag -P e la tua password.
Opzione 2:crea backup di un intero DBMS usando copie della directory dei dati MySQL
Mentre il mysqldump
strumento è il metodo di backup preferito, ci sono un paio di casi che richiedono un approccio diverso. mysqldump
funziona solo quando il server di database è accessibile e in esecuzione. Se il database non può essere avviato o il sistema host è inaccessibile, possiamo copiare direttamente il database di MySQL. Questo metodo è spesso necessario in situazioni in cui hai accesso solo a un ambiente di ripristino come Finnix con i dischi del tuo sistema montati in quel file system. Se stai provando questo metodo sul tuo sistema stesso, assicurati che il database non sia in esecuzione. Emetti un comando simile al seguente:
/etc/init.d/mysqld stop
Sulla maggior parte delle versioni di distribuzione di MySQL, la directory dei dati si trova in /var/lib/mysql/
directory. Se questa directory non esiste, esamina /etc/mysql/my.cnf
file per un percorso alla directory dei dati. In alternativa, puoi cercare nel tuo file system la directory dei dati eseguendo il comando seguente:
find / -name mysql
Una volta individuata la directory dei dati MySQL, è possibile copiarla in una posizione di backup. L'esempio seguente presuppone che la directory dei dati MySQL si trovi in /var/lib/mysql/
:
cp -R /var/lib/mysql/* /opt/database/backup-1266871069/
In questo caso, abbiamo copiato ricorsivamente il contenuto della directory dei dati (es. /var/lib/mysql/
) in una directory all'interno di /opt/
gerarchia (ad es. /opt/database/backup-1266871069/
). Questa directory deve esistere prima di avviare l'operazione di copia. Considera la seguente sequenza di operazioni:
/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/
Questi comandi iniziano arrestando il demone del server MySQL, quindi creando una directory denominata /opt/database/backup-1266872202/
e eseguendo una copia ricorsiva della directory dei dati. Tieni presente che abbiamo scelto di utilizzare il backup-[time_t]
convenzione di denominazione per i nostri esempi. Sostituisci i percorsi sopra con l'organizzazione e lo schema di denominazione preferiti. Il cp
il comando non produce output e può richiedere del tempo per il completamento a seconda delle dimensioni del database. Non allarmarti se ci vuole del tempo per completare. Al termine dell'operazione di copia, è possibile archiviare la directory dei dati in un archivio "tar" per semplificare la gestione e lo spostamento tra le macchine. Immettere i seguenti comandi per creare l'archivio:
cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz
Una volta creato il tarball, puoi facilmente trasferire il file nel modo che ti è più comodo. Non dimenticare di riavviare il demone del server MySQL se necessario:
/etc/init.d/mysql start
Creazione di backup di un singolo database
In molti casi, non è richiesta la creazione di un backup dell'intero server di database. In alcuni casi, come l'aggiornamento di un'applicazione Web, il programma di installazione può consigliare di eseguire un backup del database nel caso in cui l'aggiornamento influisca negativamente sul database. Allo stesso modo, se desideri creare un "dump" di un database specifico per spostarlo su un server diverso, potresti prendere in considerazione il metodo seguente.
Quando possibile, usa mysqldump
strumento per esportare un "dump" di un singolo database. Questo comando sarà simile al seguente:
mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql
L'esempio sopra è come l'esempio nella sezione precedente, tranne per l'uso di --all-databases
opzione, questo esempio specifica un nome di database particolare. In questo caso creiamo un backup dei danceLeaders
Banca dati. La forma di questo comando, in una notazione più semplice, è la seguente:
mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql
Per un ulteriore esempio, eseguiremo il backup del database denominato customer
utilizzando l'account del database radice eseguendo il comando seguente:
mysqldump -u root -p -h localhost customer > customerBackup.sql
Ti verrà richiesta una password prima di mysqldump
inizia il processo di backup. Come sempre il file di backup, in questo caso customerBackup.sql
, viene creato nella directory in cui si emette questo comando. Il mysqldump
il comando può essere completato in pochi secondi o poche ore a seconda delle dimensioni del database e del carico sull'host durante l'esecuzione del backup.
Creazione di backup di una singola tabella
Opzione 1:crea backup di una singola tabella utilizzando l'utilità mysqldump
Questa operazione, come i precedenti usi di mysqldump
utilità in questo documento, consente di creare un backup di una singola tabella del database. Continuando i nostri esempi precedenti, l'esempio seguente consente di eseguire il backup della tabella usernameRecords
nei danceLeaders
banca dati.
mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql
L'esempio sopra è come l'esempio nella sezione precedente, tranne per il fatto che abbiamo aggiunto una specifica del nome di tabella al comando per specificare il nome della tabella di cui vogliamo eseguire il backup. La forma di questo comando in una notazione più semplice è la seguente:
mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql
Per un ulteriore esempio, eseguiremo il backup della tabella denominata "order" dal database denominato customer
utilizzando l'account del database radice eseguendo il comando seguente:
mysqldump -u root -p -h localhost customer order > customerBackup-order.sql
Ti verrà richiesta una password prima di mysqldump
inizia il suo processo di backup. Come sempre, il file di backup (in questo caso customerBackup.sql
) viene creato nella directory in cui si esegue questo comando. Il mysqldump
il comando può essere completato in pochi secondi o poche ore a seconda delle dimensioni del database e del carico sull'host durante l'esecuzione del backup.
Opzione 2:creare backup di una singola tabella utilizzando il client MySQL e un'istruzione OUTFILE
Il client MySQL stesso ha alcune capacità di backup. È utile quando sei già loggato e non vuoi uscire dalla sessione corrente. Se stai utilizzando un sistema live e non puoi permetterti tempi di inattività, dovresti considerare di bloccare temporaneamente il tavolo di cui stai eseguendo il backup.
Tieni presente che quando esegui il backup di una singola tabella utilizzando il client MySQL, la struttura di quella tabella non viene mantenuta nel backup. Solo i dati stessi vengono salvati quando si utilizza questo metodo.
-
Prima di iniziare, ti consigliamo di eseguire un
LOCK TABLES
sulle tabelle di cui intendi eseguire il backup, seguito daFLUSH TABLES
per garantire che il database si trovi in uno spazio coerente durante l'operazione di backup. Hai solo bisogno di un blocco di lettura. Ciò consente ad altri client di continuare a interrogare le tabelle mentre si esegue una copia dei file nella directory dei dati di MySQL. Per un blocco di "lettura", la sintassi diLOCK TABLES
ha il seguente aspetto:1
LOCK TABLES tableName READ;
Per eseguire un
LOCK TABLES
suorder
tabella delcustomer
database, immetti il seguente comando:mysql -u root -p -h localhost
Ti verrà quindi richiesta la password di root. Dopo aver inserito le credenziali del database, arriverai al prompt del client mysql. Emetti il seguente comando per bloccare l'
order
tabella nelcustomer
database (il;
è richiesto per i comandi MySQL):1 2 3
USE customer; LOCK TABLES order READ; FLUSH TABLES;
-
Ora possiamo iniziare l'operazione di backup. Per creare un backup di una singola tabella utilizzando il client MySQL, dovrai accedere al tuo DBMS MySQL. Se non sei attualmente connesso, puoi accedere con il seguente comando:
mysql -u root -p -h localhost
Ti verrà richiesta una password. Una volta che hai inserito la password corretta e sei al prompt del client MySQL, puoi usare un
SELECT * INTO OUTFILE
dichiarazione. La sintassi di questa affermazione è simile alla seguente:1
SELECT * INTO OUTFILE 'file_name' FROM tbl_name;
In questo esempio, creeremo un backup dei dati dall'
order
tabella delcustomer
Banca dati. Immettere il comando seguente per avviare la procedura di backup (il;
finale è richiesto per i comandi MySQL):1 2 3 4 5
USE customer; LOCK TABLES order READ; FLUSH TABLES; SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order; UNLOCK TABLES;
Il
customerOrderBackup.sql
il file verrà creato nella sottodirectory dei dati appropriata all'interno della directory dei dati di MySQL. La directory dei dati MySQL è comunemente/var/lib/mysql/
. In questo esempio, ilOUTFILE
sarà/var/lib/mysql/customer/customerOrderBackup.sql
. La posizione di questa directory e file può, tuttavia, variare tra le distribuzioni Linux. Se non riesci a trovare il tuo file di backup, puoi cercarlo con il seguente comando:find / -name customerOrderBackup.sql
-
Una volta completata l'operazione di backup, vorrai sbloccare le tabelle utilizzando il seguente comando nel client MySQL. Ciò riporterà il database al suo normale funzionamento. Accedi al client MySQL con il primo comando se non sei attualmente connesso e quindi invia il secondo comando:
mysql -uroot -p -h localhost
1
UNLOCK TABLES;
Da questo momento puoi continuare a utilizzare il tuo database normalmente.
Considerazioni per una strategia di backup efficace
La creazione di backup del database MySQL dovrebbe essere un'attività regolare e pianificata. Potresti prendere in considerazione la pianificazione di backup periodici utilizzando cron
, mysqldump
e/o mail
. Considera la nostra documentazione per ulteriori informazioni sucron. L'implementazione di una soluzione di backup automatizzata può aiutare a ridurre al minimo i tempi di inattività in una situazione di ripristino di emergenza.
Non è necessario accedere come root durante il backup dei database. Un utente MySQL con lettura (ad es. SELECT
) l'autorizzazione è in grado di utilizzare sia il mysqldump
e mysql
(ad es. il client MySQL) per eseguire i backup, come descritto di seguito. Come pratica comune, ti consigliamo di non utilizzare MySQL root
utente quando possibile per ridurre al minimo i rischi per la sicurezza.
Potresti prendere in considerazione i backup incrementali come parte di un piano di backup del database a lungo termine. Anche se questo processo non è trattato qui, ti consigliamo di prendere in considerazione la risorsa Metodi di backup del database MySQL per ulteriori informazioni.
Ripristino di un intero DBMS dal backup
Un backup che non può essere ripristinato ha un valore minimo. Ti consigliamo di testare regolarmente i tuoi backup per assicurarti che possano essere ripristinati nel caso in cui potresti dover eseguire il ripristino dai backup. Quando utilizzi il ripristino dei backup del tuo database MySQL, il metodo che utilizzi dipende dal metodo che hai utilizzato per creare il backup in questione.
Opzione 1:ripristino di un intero DBMS utilizzando il client MySQL e backup creati da mysqldump
Prima di iniziare il processo di ripristino, questa sezione presuppone che il tuo sistema stia eseguendo una versione di MySQL appena installata senza database o tabelle esistenti. Se hai già database e tabelle nel tuo DBMS MySQL, esegui un backup prima di procedere poiché questo processo sovrascriverà i dati MySQL correnti.
Puoi facilmente ripristinare l'intero DBMS usando mysql
comando. La sintassi per questo sarà simile alla seguente:
mysql -u [username] -p [password] < backupFile.sql
In questo caso stiamo semplicemente ripristinando l'intero DBMS. Il comando sarà simile al seguente:
mysql -u root -p < 1266861650-backup-all.sql
Ti verrà richiesta la password dell'utente MySQL root. Una volta fornite le credenziali corrette, inizierà il processo di ripristino. Poiché questo processo ripristina un intero DBMS, può richiedere da pochi secondi a molte ore.
Opzione 2:ripristino di un intero DBMS utilizzando file di dati MySQL copiati direttamente da Directory dei dati di MySQL
Prima di iniziare il processo di ripristino, questa sezione presuppone che il tuo sistema stia eseguendo una versione di MySQL appena installata senza database o tabelle esistenti. Se hai già database e tabelle nel tuo DBMS MySQL, esegui un backup prima di procedere poiché questo processo sovrascriverà i dati MySQL correnti.
-
Se si dispone di un backup completo della directory dei dati MySQL (comunemente
/var/lib/mysql
), puoi ripristinarlo dalla riga di comando. Per garantire un ripristino corretto, devi prima arrestare il demone del server MySQL ed eliminare i dati correnti nella directory dei dati MySQL./etc/init.d/mysql stop rm -R /var/lib/mysql/*
-
Nell'esempio seguente, il backup della directory dei dati MySQL si trova in
/opt/database/backup-1266872202
directory. Se hai creato un tarball della directory dei dati quando hai eseguito il backup della directory dei dati DBMS, dovrai estrarre i file dal tarball prima di copiarli con i seguenti comandi:cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/ cd /var/lib/mysql tar xzvf mysqlBackup-1266872202.tar.gz
-
Prima di poter riavviare il processo del database MySQL, dobbiamo assicurarci che i permessi siano impostati correttamente su
/var/lib/mysql/
directory. Per questo esempio, assumiamo che il demone del server MySQL venga eseguito come utentemysql
con il gruppomysql
. Per modificare i permessi sulla directory dei dati emettere il seguente comando:chown -R mysql:mysql /var/lib/mysql
-
Modifica
mysql:mysql
parte di questo comando se l'istanza MySQL viene eseguita con autorizzazioni utente e di gruppo diverse. La forma di questo argomento è[user]:[group]
. Infine possiamo avviare il demone del server MySQL con il seguente comando:/etc/init.d/mysql start
Se ricevi un errore simile al seguente:
/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Dovrai trovare il vecchio
debian-sys-maint
la password dell'utente in/etc/mysql/debian.cnf
e poi cambia il nuovodebian-sys-maint
password dell'utente. Puoi visualizzare la vecchia password usandocat
:cat /etc/mysql/debian.cnf | grep password
Copia (o ricorda) la password. Quindi dovrai cambiare il nuovo
debian-sys-maint
password dell'utente. Puoi farlo accedendo come utente root di MySQL ed emettendo il seguente comando (doveè la password del vecchio debian-sys-maint
utente):1
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
-
Dovrai quindi riavviare MySQL con il seguente comando:
/etc/init.d/mysql restart
Dopo che il server MySQL è stato avviato con successo, ti consigliamo di testare il tuo DBMS MySQL e assicurarti che tutti i database e le tabelle siano stati ripristinati correttamente. Ti consigliamo inoltre di controllare i tuoi log per potenziali errori. In alcuni casi MySQL può avviarsi correttamente nonostante gli errori del database.
Ripristino di un singolo database dal backup
Nei casi in cui hai creato un backup solo per un database o devi ripristinare solo un database singolo, il processo di ripristino è leggermente diverso.
Prima di iniziare il processo di ripristino, questa sezione presuppone che il tuo sistema stia eseguendo una versione di MySQL appena installata senza database o tabelle esistenti. Se hai già database e tabelle nel tuo DBMS MySQL, esegui un backup prima di procedere poiché questo processo sovrascriverà i dati MySQL correnti.
-
Per ripristinare un singolo database utilizzando
mysql
comando, preparare prima il database di destinazione. Accedi al tuo (nuovo) server di database MySQL utilizzando il client MySQL:mysql -u root -p -h localhost
-
Ti verrà richiesta la password dell'utente MySQL root. Dopo aver fornito le credenziali corrette, è necessario creare il database di destinazione. In questo caso, il
customer
il database verrà ripristinato:1
CREATE DATABASE customer;
-
Come con tutte le istruzioni MySQL, non omettere il punto e virgola finale (ad es.
;
) alla conclusione di ogni comando. A seconda della distribuzione, potrebbe essere necessario creare un nuovo utente MySQL o ricreare un utente precedente con accesso al database appena creato. Il comando per creare un nuovo utente MySQL assume la forma seguente:1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
Nel prossimo esempio creeremo un utente chiamato
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Ora daremo
customeradmin
privilegi per accedere alcustomer
Banca dati. Il comando per concedere privilegi a un database per un utente specifico assume la forma seguente:1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
-
Ai fini del seguente esempio, forniremo
customeradmin
pieno accesso alcustomer
Banca dati. Immettere il seguente comando nel client MySQL:1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Potrebbe essere necessario specificare autorizzazioni di accesso diverse a seconda delle esigenze della distribuzione. Consulta la documentazione ufficiale per la dichiarazione GRANT di MySQL. Dopo aver creato il database di destinazione e l'utente MySQL, è possibile chiudere il client MySQL con il seguente comando:
quit
-
Ora puoi usare
mysql
comando per ripristinare il tuo file SQL. La forma di questo comando è simile alla seguente:mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
Nell'esempio seguente ripristineremo il customer
database da un file di backup SQL denominato customerBackup.sql
(prestare particolare attenzione al <
simbolo in questo comando):
mysql -u root -p -h localhost customer < customerBackup.sql
Ti verrà richiesta la password dell'utente MySQL root. Una volta fornite le credenziali corrette, inizierà il processo di ripristino. La durata di questa operazione dipende dal carico del sistema e dalla dimensione del database che si sta ripristinando. Potrebbe essere completato in pochi secondi o potrebbero essere necessarie molte ore.
Ripristino di una singola tabella dal backup
Opzione 1:ripristino di una singola tabella utilizzando MySQL e i backup creati da mysqldump
-
Prima di iniziare il processo di ripristino, assumiamo che la tua istanza MySQL abbia già un database esistente che può ricevere la tabella che desideri ripristinare. Se la tua istanza MySQL non ha il database richiesto, dovremo crearlo prima di procedere. Innanzitutto, accedi alla tua istanza MySQL con il seguente comando:
mysql -u root -p -h localhost
-
Ti verrà richiesta la password dell'utente MySQL root. Dopo aver fornito le credenziali corrette, è necessario creare il database di destinazione. Ai fini di questo esempio creeremo il
customer
banca dati.1
CREATE DATABASE customer;
Quindi esci da
mysql
richiesta:quit
Se hai già il database richiesto, puoi tranquillamente saltare il passaggio precedente. Per continuare con il ripristino della tabella, emettere un comando nel seguente formato:
mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
-
Per l'esempio seguente, ripristineremo l'
order
tabella nelcustomer
esistente database da un file di backup SQL denominatocustomerOrderBackup.sql
. Fai molta attenzione a usare il<
operatore nel comando seguente:mysql -u root -p -h localhost customer < customerOrderBackup.sql
Ti verrà richiesta la password dell'utente MySQL root. Una volta fornite le credenziali corrette, inizierà il processo di ripristino. La durata di questa operazione dipende dal carico del sistema e dalle dimensioni della tabella che si sta ripristinando. Potrebbe essere completato in pochi secondi o potrebbero essere necessarie molte ore.
Opzione 2:ripristino di una singola tabella utilizzando il client MySQL e un'istruzione INFILE per i backup creati con OUTFILE
-
Prima di iniziare il processo di ripristino, assumiamo che la tua istanza MySQL abbia già un database esistente che può ricevere la tabella che desideri ripristinare. Se la tua istanza MySQL non ha il database richiesto, dovremo crearlo prima di procedere. Innanzitutto, accedi alla tua istanza MySQL con il seguente comando:
mysql -u root -p -h localhost
-
Ti verrà richiesta la password dell'utente MySQL root. Dopo aver fornito le credenziali corrette, è necessario creare il database di destinazione. Ai fini di questo esempio creeremo il
customer
banca dati.1
CREATE DATABASE customer;
Quindi esci da
mysql
richiesta:quit
-
Il backup dei dati utilizzato in questo caso è stato creato utilizzando il
SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName
comando. Questo tipo di backup conserva solo i dati stessi, quindi la struttura della tabella deve essere ricreata. Per ripristinare una singola tabella dall'interno del client MySQL, devi prima preparare il database e la tabella di destinazione. Accedi alla tua (nuova) istanza MySQL utilizzando il client MySQL:mysql -u root -p -h localhost
-
Ti verrà richiesta la password dell'utente MySQL root. Una volta fornite le credenziali corrette, è necessario creare il database di destinazione. In questo caso creeremo il
customer
Banca dati. Rilascia la seguente dichiarazione:1
CREATE DATABASE customer;
-
Ricorda che i punti e virgola (es.
;
) dopo ogni affermazione. Ora devi creare la tabella di destinazione con la struttura corretta. I tipi di dati dei campi della tabella devono rispecchiare quelli della tabella da cui ha avuto origine il backup. In questo esempio, ripristineremo l'order
tabella delcustomer
Banca dati. Ci sono 2 campi inorder
tabella,custNum
con tipo di datiINT
eorderName
con tipo di datiVARCHAR(20)
; la struttura della tua tabella sarà diversa:1 2
USE customer; CREATE TABLE order (custNum INT, orderName VARCHAR(20));
-
A seconda della distribuzione, potrebbe essere necessario creare un nuovo utente MySQL o ricreare un utente precedente con accesso al database appena creato. Il comando per creare un nuovo utente MySQL assume la forma seguente:
1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
Nel prossimo esempio creeremo un utente chiamato
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Ora daremo
customeradmin
privilegi per accedere alcustomer
Banca dati. Il comando per concedere privilegi a un database per un utente specifico assume la forma seguente:1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
Ai fini del seguente esempio, forniremo
customeradmin
pieno accesso alcustomer
Banca dati. Immettere il seguente comando nel client MySQL:1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Potrebbe essere necessario specificare autorizzazioni di accesso diverse a seconda delle esigenze della distribuzione. Consulta la documentazione ufficiale per la dichiarazione GRANT di MySQL. Una volta che la tabella e l'utente sono stati creati, possiamo importare i dati di backup dal file di backup utilizzando il
LOAD DATA
comando. La sintassi è simile alla seguente:1
LOAD DATA INFILE '[filename]' INTO TABLE [tableName];
Nell'esempio seguente, ripristineremo i dati da una tabella da un file denominato
customerOrderBackup.sql
. Quando al client MySQL viene fornito il percorso e il nome del file dopoINFILE
, cerca quel file nella directory dei dati di MySQL. Se il nome del filecustomerOrderBackup.sql
è stato fornito, il percorso sarebbe/var/lib/mysql/customerOrderBackup.sql
. Ensure that the file you are trying to restore from exists, especially if MySQL generatesFile not found
errors. -
To import the data from the
customerOrderBackup.sql
file located in/var/lib/mysql/
, issue the following command:1
LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;
This process can take anywhere from a few seconds to many hours depending on the size of your table. The duration of this operation depends on your system’s load and the size of the table that you are restoring. It may complete in a few seconds, or it may take many hours. After you have verified that your data was imported successfully, you can log out:
quit
Maggiori informazioni
Si consiglia di consultare le seguenti risorse per ulteriori informazioni su questo argomento. Sebbene questi siano forniti nella speranza che possano essere utili, tieni presente che non possiamo garantire l'accuratezza o la tempestività dei materiali ospitati esternamente.
- The Official MySQL Web Site
- Pagina dei metodi di backup del database MySQL
- mysqldump Manual Page
- Schedule Tasks With Cron
- MySQL’s Grant Statement, Official Documentation