Come configurare smartphone e PC. Portale informativo
  • casa
  • Errori
  • Scarichiamo il database MySQL ed esportiamo i dati sulla console. Ripristino di un dump effettuato da mysqldump

Scarichiamo il database MySQL ed esportiamo i dati sulla console. Ripristino di un dump effettuato da mysqldump

Scarica e ripristina il database Dati MySQLÈ abbastanza semplice e conveniente farlo da remoto tramite SSH o direttamente tramite la console del server. In remoto, questo può essere fatto utilizzando i programmi Putty/Kitty. Puoi anche eseguire gli esempi seguenti su Windows eseguendo la riga di comando " cmq‘. Di seguito sono riportati esempi su come creare dump del database MySQL e quindi ripristinarli se necessario, ad esempio per il tuo sito web, negozio online o qualche altro progetto.

Creazione di un dump del database MySQL

Per eseguire questi comandi, connettiti da remoto al tuo server tramite SSH utilizzando uno dei programmi sopra elencati. Dopo esserti connesso e autorizzato al server/hosting, puoi inserire i comandi seguenti.

# Eseguire il backup di un database nel file dump_file.sql mysqldump -uroot -p your_base > dump_file.sql # On discarica di WindowsÈ meglio creare un comando leggermente diverso che impedisca # la sovrascrittura accidentale delle righe di dump dovuta alla conversione dei caratteri di nuova riga "\r\n" in "\n" mysqldump -uroot -p your_base -r dump_file_utf8.sql # Se è necessario un backup solo di singole tabelle e non dell'intero database # (specificare i nomi delle tabelle separati da uno spazio dopo il nome del database) mysqldump -uroot -p your_base TABLE1 TABLE2 TABLE3 > dump_file.sql # Se è necessario creare un backup solo del database struttura senza i dati stessi mysqldump -uroot -p -- no-data your_base > dump_file.sql # Effettua il backup di tutti i database nel file current_date.gz mysqldump -uroot -p --all_databases | gzip -c > "date "+%Y-%m-%d"".gz # Backup, dove viene creato un INSERT separato per ogni voce # e con indicazione esplicita codifica database UTF-8 mysqldump -uroot -p --default-character-set=utf8 your_base --extended-insert=FALSE | gzip -c > "data "+%Y-%m-%d"".gz

# Eseguire il backup di un database su dump_file.sql

mysqldump -uroot -p tua_base > dump_file . mq

# Su Windows è meglio creare un dump con un comando leggermente diverso che previene

# sovrascrittura casuale delle righe di dump a causa della conversione dei caratteri di nuova riga "\r\n" in "\n"

mysqldump -uroot -p tua_base -r dump_file_utf8 . mq

# Se è necessario il backup solo di singole tabelle e non dell'intero database

# (indicare i nomi delle tabelle separati da uno spazio dopo il nome del database)

mysqldump -uroot -p tua_base TABELLA1 TABELLA2 TABELLA3 > dump_file . mq

# Se è necessario eseguire il backup solo della struttura del database senza i dati stessi

mysqldump -uroot -p --no-data your_base > dump_file . mq

# Effettua il backup di tutti i database nel file current_date.gz

mysqldump -uroot -p --all_databases | gzip - c > "data "+%Y-%m-%d"" . gz

# Backup, in cui viene creato un INSERT separato per ciascuna voce

# e specificando esplicitamente la codifica del database UTF-8

mysqldump -uroot -p -- default - set di caratteri = utf8 tua_base -- Extended - insert = FALSE | gzip - c > "data "+%Y-%m-%d"" . gz

Nell'esempio sopra, l'utilità viene utilizzata per creare un backup mysqldump, che è incluso in mysql. Di seguito i parametri per la creazione del backup del database, che esamineremo più nel dettaglio:

  • -u– il parametro specifica il login che verrà utilizzato per connettersi al database. Nell'esempio utilizziamo il login root, che deve essere specificato in questo parametro senza spazi! Di conseguenza, assomiglia a -uroot
  • -P– il parametro indica che è necessario inserire una password per l'accesso specificato. Lo abbiamo lasciato vuoto, per cui la password dovrà essere inserita dopo aver premuto "Invio" durante l'esecuzione del comando. Tuttavia, puoi specificare la password proprio qui, come nel parametro login, senza uno spazio dopo -p, tuttavia, questo metodo non è sicuro, poiché la console salva i tuoi comandi in un file di registro e se non lo cancelli regolarmente, potrebbe essere visualizzato da un utente malintenzionato.
  • tua_base– invece di questa riga nell'esempio, è necessario specificare vero nome Il tuo database per il quale stai creando un backup.
  • > – un operatore che mostra la direzione dell'azione, ovvero come se indicasse che stai per scrivere dal database in un file.
  • dump_file.sql– questo è il nome del tuo file .slq in cui devi salvare il tuo database. È indicato con uno spazio dopo l'operatore ">". È possibile specificare qualsiasi altro nome. Ad esempio, in modo che nel nome il sistema inserisca automaticamente ora attuale, basta specificare una riga come:

    "data "+%Y-%m-%d""

    "data "+%Y-%m-%d""


    dopo questa riga nell'esempio è indicata l'estensione del file ' .gz‘. Di conseguenza, un file come " 2014-11-15.gz‘.

    Attenzione! Se specifichi solo il nome del file, questo verrà salvato nella stessa directory in relazione alla quale stai eseguendo questo comando. Quelli. se vedi qualcosa di simile al prompt dei comandi # , Dove root@dvs questo è il login e il nome del server, il file verrà creato nella directory /casa. Per modificare il salvataggio del file in un percorso diverso, specificare il percorso completo per salvare il file anziché il nome, ad esempio: /var/www/backup/dump_file.sql.

  • Nel secondo esempio, invece dell'operatore ' > Viene utilizzato l'operatore | ‘, che indica la necessità di eseguire comando aggiuntivo gzip con parametro ' -C' che ti consente di comprimere immediatamente il dump in un archivio e solo successivamente salvarlo in un file come ' 2014-11-15.gz‘, come riportato dall’operatore ‘ > ‘.
  • Parametro -nessun dato ti consente di scaricare solo la struttura del database senza i dati stessi. Molto utile in alcuni casi quando i dati non sono necessari.
  • Opzioni –set-di-caratteri-default=utf8 E –insert-esteso=FALSO. Il primo permette di specificare esplicitamente la codifica utilizzata da questo database, evitando così di salvare il database con la codifica errata. Invece di utf8, è possibile specificare qualsiasi altra codifica, ad esempio cp1251. Il secondo parametro consente di specificare che durante l'esportazione deve essere creato un comando INSERT separato per ciascun record. In alcuni casi, ciò potrebbe essere necessario durante il ripristino parziale dei dati da un dump.
  • Ripristino di un database da un file di dump MySQL

    Ora diamo un'occhiata al processo inverso di ripristino di un database da un file di dump. Questa azione eseguito utilizzando il programma mysql. Vediamo subito un esempio.

./mysql -u -P H < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

Quando creiamo un file dump con mysqldump, contiene un grande script SQL per ricreare il contenuto del database. Pertanto, lo ripristiniamo eseguendo il client riga di comando MySQL:

Mysql -uroot -p

(dove root è il nostro nome utente amministratore per MySQL) e dopo esserci collegati al database abbiamo bisogno dei comandi per creare il database e leggere il file:

Crea database nuovo_db; usa new_db; \. dumpfile.sql

I dettagli cambieranno a seconda delle opzioni utilizzate durante la creazione del file dump.

2018-12-18T00:00Z

Devi solo eseguire questo:

mysql -p -u< db_backup.dump

Se il dump contiene più database, dovresti omettere il nome del database:

mysql -p -u< db_backup.dump

Per eseguire questi comandi, aprire un prompt dei comandi (su Windows) e accedere alla directory in cui si trova mysql.exe file eseguibile mysql.exe (potresti doverci pensare un po', dipenderà da come hai installato mysql, cioè standalone o come parte di un pacchetto come WAMP). Quando ti trovi in ​​questa directory, dovresti semplicemente inserire il comando.

25-12-2018T00:00Z

Dovrebbe essere semplice come eseguire questo:

MySQL -u -P< db_backup.dump

Se il dump ha un singolo database, potrebbe essere necessario aggiungere una riga all'inizio del file:

UTILIZZO ;

Se si tratta di un dump di molti database, le istruzioni use sono già presenti.

Per eseguire questi comandi, apri un prompt dei comandi (su Windows) e inserisci la directory in cui mysql.exe contiene l'eseguibile mysql.exe (potresti doverci pensare un po', dipenderà da come hai installato mysql, cioè standalone o come parte di un pacchetto come WAMP). Una volta che sei in quella directory, puoi semplicemente digitare il comando come ho fatto sopra.

2019-01-01T00:00Z

Comando di una riga per ripristinare l'SQL generato da mysqldump

MySQL -u -P E"fonte

2019-01-08T00:00Z

Utilizzando un file dump da 200 MB creato su Linux per ripristinarlo su Windows con mysql 5.5, ho avuto più successo Con

File sorgente.sql

strategia di squadra stringhe mysql che usare

mysql< file.sql

approccio da riga di comando che causa alcuni errori del 2006 "il server è uscito" (su Windows)

Stranamente, il servizio creato durante l'installazione (mysql) fa riferimento a un file my.ini che non era presente. Ho copiato nel mio.ini il file di esempio "grande", che avevo già modificato con l'incremento consigliato.

I miei valori

Pacchetto_max_consentito = 64M timeout_interattivo = 250 timeout_attesa = 250

2019-01-15T00:00Z

COME esempio concreto risposta precedente:

Avevo bisogno di ripristinare il backup in modo da poterlo importare/trasferire su server SQL. Ho installato solo MySql ma non l'ho registrato come servizio né l'ho aggiunto al mio percorso poiché non ho bisogno di eseguirlo.

ero solito Windows Explorer per inserire il mio file dump in C:\code\dump.sql. Quindi apri MySql dalla voce del menu Start. Creato il DB, quindi eseguito il comando source con il percorso completo in questo modo:

Mysql> crea database temp mysql> usa temp mysql> sorgente c:\code\dump.sql

È strano, ma è abbastanza difficile trovare queste informazioni su Internet. Un mucchio di tutti i tipi di raccomandazioni di sinistra. Ma in realtà, tutto è semplice. Puoi ripristinare il dump con il comando:

# mysql-su< mysql_dump.sql.

Sostituisci invece il nome utente, il ripristino da root lo faccio personalmente. E in mysql_dump, sql, in realtà, viene creato il dump mysqldump utilità. L'opzione -p indica l'autorizzazione con password; dopo aver premuto invio ti verrà richiesta la password. Questo è tutto, in realtà. Puoi fare un dump con il comando:

# mysqldump-u root -p -f nome_database > file_con_dump.sql

Qui il parametro -f database_name specifica il nome del database che stiamo salvando. Se ti serve tutto, lo sostituiamo con --tutti-database. Questa opzione indicherà il salvataggio di tutti i database sul server. Per non inserire ogni volta la password, è possibile specificarla direttamente nel comando (questo è necessario se si sta eseguendo un cron dump da uno script), tuttavia, dal punto di vista della sicurezza, qui sorgono delle domande, soprattutto se la password è root per il muscolo. Ora, se solo il muscolo capisse almeno le password md5... Comunque non è il fatto che non capisca, forse non lo so :)

Autore

Alex Razgibalov

Un pazzo, di età indefinibile, che gode di un delirio di persecuzione. Patologicamente diffidente, egoista, autoritario. Diagnosi secondarie: programmatore e assistente. Possiede lingua inglese a un livello di conversazione schifosa. Conoscenza anche di alcune altre lingue. È interessato a tutto e a tutti, per cui la sua conoscenza in qualsiasi campo è superficiale e superficiale. Il personaggio è incontrollabile. Forza: 55 gradi.

Dall'autore: Sono venuto a trovare un amico e sua moglie era isterica, il pappagallo urlava: "Mai-es-qu-el-dump". L'amico stesso giace con mal di testa e un desiderio maniacale di scoprire cosa sta succedendo Ripristino di MySQL da discarica. Per salvare la testa del resto degli “ignoranti”, i nervi delle loro mogli e le corde vocali dei pappagalli, consideriamo questo argomento più in dettaglio.

Pericolo "Tutto compreso"

Il mio amico, come molti neofiti, usa pacchetti software"Tutto incluso". Il più comune in RuNet è il set da gentiluomo "Denver". E con la sua “complessità” (include server locale, una shell per lavorare con un DBMS, Server MySQL) spinge questi stessi "gentiluomini" fino alla follia.

L'elenco di Denver ne include solo alcuni utilità standard per lavorare con MySQL. E poiché tutti noi persone moderne, quindi per le informazioni mancanti (per comprendere l'essenza di qualcosa) andiamo su Internet. Ma i materiali pubblicati su Internet non dicono che per eseguire determinati insiemi di comandi sia necessaria la presenza di pacchetto standard MySQL utenze specializzate. Ad esempio, per creare un dump di un database MySQL, è necessario il programma MySQLDump.

Pertanto, se utilizzi Denwer anche per addestrare e testare il tuo codice e le query descritte in questo materiale non verranno eseguite sulla riga di comando, vai a: D:\Webserver\usr\local\mysql-5.5\bin

E guarda quali utilità per lavorare con il server DBMS sono disponibili “a bordo” macchina cliente. Lo ripeto ancora una volta, oggi abbiamo bisogno del programma MySQLDump.

Lavorare con MySQLDump

Questa utility è un normale file "eseguibile", che dopo il download deve essere inserito nella cartella bin (il percorso è indicato nella prima sezione del materiale). Questo piccola applicazione ti consente di risolvere problemi "globali": ripristinare da un dump in MySQL, creare backup e configurare i parametri di backup.

L'utilità non ha propria interfaccia, quindi puoi lavorarci tramite il CMD standard incluso in insieme standard Programmi Windows(avviare tramite il menu Start). E ora passo dopo passo:

Per prima cosa andiamo sul disco virtuale (creato dopo il lancio di Apache, che fa parte di Denver).

Se non usi un set da "gentiluomo", non significa che non sei un gentiluomo. Devi solo saltare questo passaggio delle istruzioni.

Quindi, utilizzando il comando cd (cambia directory), specificare il percorso della cartella in cui è installato MySQL. A Denver questa directory si trova qui: Z:\usr\local\mysql-5.5\bin

Quando si installa separatamente il sistema di gestione del database, questa cartella si trova: C:\Programmi…

Dato che siamo già sul disco (virtuale) desiderato, dobbiamo solo specificare una parte del percorso dopo il comando cd:

Controlliamo la funzionalità dell'applicazione e creiamo Dump MySQL database, che si trova sul nostro server. Ad esempio, il database “wordpress”. Per fare ciò, utilizzeremo il comando mysqldump con lo stesso nome dell'utilità. Ecco la sua sintassi:

mysqldump -u nome utente -p password nome_database > backup- database.sql

mysqldump -u nomeutente -p password nome_database > backup -database . mq

Esempio di utilizzo del comando:

mysqldump -uroot wordpress>Z:\home\localhost\dump\wp_copy.sql

mysqldump - uroot wordpress > Z:\home\localhost\dump\wp_copy. mq

Di conseguenza, abbiamo ricevuto un dump del database del sito WordPress:

Cos'è una discarica?

Se non sai nulla di un dump del database MySQL e hai difficoltà a indovinare di cosa si tratta, allora questa sezione per te. Un dump è un tipo di backup del database. Più precisamente, i file di copia del database (a seconda della tipologia e dello strumento di creazione) possono contenere righe di dati certo tipo e includono anche query SQL per ricostruire le informazioni perse, la loro struttura e i valori dei parametri.

Per non risultare infondati, apriamo la copia di wp_copy che abbiamo creato utilizzando il Blocco note standard. Dopo un breve studio del suo contenuto, vedremo che è composto quasi interamente da query con le quali è possibile ricreare la struttura delle tabelle del database e il loro contenuto.

Testare il recupero

Se ti prudono le mani e il sapone non aiuta, effettueremo un "test di prova" dell'utilità. Innanzitutto tramite phpMyAdmin (per renderlo più veloce) creeremo un database “Auto” di prova con due tabelle. Chiamiamo una "macchina" e l'altra "colore". Aggiungi alcune righe di dati a ciascuno per chiarezza.

Ora creiamo un dump MySQL del database che ci interessa. Salveremo la copia di backup in stesso luogo. Codice richiesto:

mysqldump -uroot auto>Z:\home\localhost\dump\auto_copy.sql

mysqldump - uroot auto > Z:\home\localhost\dump\auto_copy. mq

Andando alla cartella dump, vediamo che l'utility ha creato una copia “auto_copy”.

Effettuare un dump del database (backup) è molto importante. Quindi ho fatto alcuni commenti con esempi per questo ottima utilità come mysqldump.

mysqldump - un'utilità che consente di scaricare il contenuto di un database o di un insieme di database da creare copia di backup o inviare dati a un altro server di database SQL (non necessariamente un server MySQL). Il dump conterrà una serie di comandi SQL per creare e/o popolare tabelle.

mysqldump-u root -p -f nome_database >

Con questo comando effettuiamo un backup del database con il nome nome_database sul disco C nel file mydb_backup_name_database.txt

Non è necessario creare il file; MySQL lo creerà da solo.

mysql-u root -p -f nome_database< C:\mydb_backup_name_database.txt

Con questo comando importiamo i dati di backup dal file C:\mydb_backup_name_database.txt

Nota: -f, --force è un'opzione che specifica di continuare anche se viene ricevuto un errore SQL, ad es. ignorare gli errori. Ad esempio, se nella tabella esiste già una riga identica.

Per evitare che venga richiesta la password è necessario scriverla subito dopo -p, cioè senza spazi. Se la password Pwd, l'esempio sarebbe simile a questo:

mysqldump-u radice -p Pwd-f nome_database > C:\miodb_backup_nome_database.txt

Se usi spesso questo comando, è meglio creare un utente separato con i diritti necessari per ridurre la visibilità della password di root

Consideriamo di più impostazioni raffinate mysqldump:

--banche dati consente a mysqldump di includere i comandi CREATE DATABASE /*!33333 IF NOT EXISTS*/ DBNAME e USE DBNAME nello script di ripristino. Ciò ti consentirà di creare database funzionanti da zero. Cioè, senza utilizzare --databases, si presuppone che l'utente stia ripristinando un singolo database e specificando esplicitamente dove posizionare i dati ripristinati. Se viene creato un backup con l'obiettivo di creare una copia completamente funzionante dei dati, ad esempio su un altro server MySQL, è necessario utilizzare questa chiave;

--tutti-database ti consente di creare copie di tutti i database esistenti su un determinato server MySQL. Se hai bisogno di fare copie solo di alcuni database, basta specificarli separati da uno spazio quando chiami mysqldump dalla riga di comando (vedi sopra);

Chiave --aiuto. Il programma mysqldump ha molte versioni. Puoi vedere quali funzionalità sono supportate specificamente dalla tua versione utilizzando questa chiave;

--add-drop-tabella- un'opzione che forzerà mysqldump ad aggiungere un comando drop table allo script risultante prima di creare le tabelle. Ciò consentirà di evitare alcuni errori durante il ripristino di un database da un backup. Naturalmente è necessario tenere presente che le tabelle presenti nella copia di lavoro (se nel backup esistono tabelle con lo stesso nome) verranno eliminate dal database principale e ricreate dal backup prima di essere ripristinate dal backup;

--nessun dato. Utilizzando questa chiave, puoi creare rapidamente una copia della struttura della tabella/database senza i dati stessi. Ad esempio, hai creato una tabella complessa e vorresti salvarne la struttura per il futuro, ma non hai bisogno dei dati stessi presenti in questa tabella in una copia di backup;

--file-risultato=...- questa opzione può essere utilizzata per reindirizzare l'output su un file. È possibile utilizzare il normale reindirizzamento Unix con il comando ">" oppure è possibile utilizzare questa chiave. A chi piace cosa;

Un altro molto consiglio utile sull'utilizzo di mysqldump in un ambiente di hosting. Di norma, quando si utilizza l'hosting, all'utente vengono imposte alcune restrizioni. Ad esempio, non puoi prendere in prestito più di un certo importo memoria fisica(RAM, RAM). mysqldump per impostazione predefinita mette in memoria tutti i dati ricevuti dal server MySQL e quindi li scrive tutti su disco. Di conseguenza, se il provider ti consente di prendere in prestito, ad esempio, 30 MB di memoria e il database che stai copiando utilizzando mysqldump occupa 50 MB, ovviamente qui si verificherà un errore: mysqldump non sarà in grado di funzionare correttamente e si bloccherà, cosa di cui ti informerà. Per "forzare" mysqldump a scrivere i dati direttamente su disco, anziché archiviarli, anche temporaneamente, in memoria, utilizzare la chiave --presto. Questo risolverà il problema.

Ecco un altro paio di esempi utili:

mysqldump -u root -p Pwd-f --set-di-caratteri-predefiniti=cp1251 DBNOME| gzip -c > nomefile.txt .gz

Puoi decomprimere un archivio di questo tipo con il comando:

nomefile gunzip.txt.gz

Per sapere in quale data è stato effettuato il backup è possibile scrivere il seguente comando:

mysqldump -uLOGIN -PPORT -hHOST -pPASS NOMEDB | gzip -c > `data "+%Y-%m-%d"`.gz

e se devi creare dump con codifiche diverse, allora è conveniente usare le variabili:

impostato DBCARATTERE=utf8

impostato DBNOME= violazione

mysqldump -u root -p Pwd-f --set-di-caratteri-predefiniti=$ DBCARATTERE $DBNOME| bzip2 -c > sql. $NOMEDB.`data "+%Y-%m-%d"`.bz2

Se vuoi automatizzare la rimozione dei vecchi archivi, prova a utilizzare cron e il comando find, che di solito si trova in Unix. In esecuzione periodicamente

Trovare~/directory-con-archivi -name "*.gz" -mtime +7 -exec rm -f () \;

Pertanto, eliminerai gli archivi "più vecchi" di sette giorni.

I migliori articoli sull'argomento