Mysql
 sql >> Database >  >> RDS >> Mysql

Eseguire il backup dei database MySQL

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 con mysqldump 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ù veloce mysqlhotcopy .

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.

  1. Prima di iniziare, ti consigliamo di eseguire un LOCK TABLES sulle tabelle di cui intendi eseguire il backup, seguito da FLUSH 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 di LOCK TABLES ha il seguente aspetto:

    1
    
    LOCK TABLES tableName READ;

    Per eseguire un LOCK TABLES su order tabella del customer 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 nel customer database (il ; è richiesto per i comandi MySQL):

    1
    2
    3
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
  2. 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 del customer 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, il OUTFILE 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
    
  3. 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.

  1. 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/*
    
  2. 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
    
  3. 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 utente mysql con il gruppo mysql . Per modificare i permessi sulla directory dei dati emettere il seguente comando:

    chown -R mysql:mysql /var/lib/mysql
    
  4. 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 nuovo debian-sys-maint password dell'utente. Puoi visualizzare la vecchia password usando cat :

    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;
  5. 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.

  1. 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
    
  2. 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;
  3. 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]';
  4. Nel prossimo esempio creeremo un utente chiamato customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. Ora daremo customeradmin privilegi per accedere al customer 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]'
  6. Ai fini del seguente esempio, forniremo customeradmin pieno accesso al customer Banca dati. Immettere il seguente comando nel client MySQL:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. 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
    
  8. 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

  1. 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
    
  2. 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
    
  3. Per l'esempio seguente, ripristineremo l'order tabella nel customer esistente database da un file di backup SQL denominato customerOrderBackup.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

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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;
  5. 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 del customer Banca dati. Ci sono 2 campi in order tabella, custNum con tipo di dati INT e orderName con tipo di dati VARCHAR(20); la struttura della tua tabella sarà diversa:

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. 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]';
  7. Nel prossimo esempio creeremo un utente chiamato customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. Ora daremo customeradmin privilegi per accedere al customer 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 al customer Banca dati. Immettere il seguente comando nel client MySQL:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. 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 dopo INFILE , cerca quel file nella directory dei dati di MySQL. Se il nome del file customerOrderBackup.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 generates File not found errors.

  10. 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