Come configurare smartphone e PC. Portale informativo
  • casa
  • Televisori (Smart TV)
  • Eseguire il dump (backup) del database utilizzando l'utilità mysqldump. Scaricare il database MySQL ed esportare i dati nella console

Eseguire il dump (backup) del database utilizzando l'utilità mysqldump. Scaricare il database MySQL ed esportare i dati nella console

Questo articolo può essere utile se hai un sito web che utilizza un sistema di gestione dei contenuti (Joomla, WordPress, OpenCart, ecc.) e decidi di spostarlo su un altro server. Ciò richiede non solo il trasferimento dei file del sito, ma anche il loro trasferimento. Prima di procedere con il trasferimento del sito web, è necessario trovarne uno valido e ordinarlo per poter accedere al nuovo account di hosting. Ad esempio, offriamo standalone, Joomla e PrestaShop. Se desideri trasferire il tuo sito con un nuovo nome e ne hai bisogno, prenditi il ​​tuo tempo. Il nostro piano di hosting condiviso S4 ti darà anche un dominio gratuitamente. Se l'hosting virtuale non è sufficiente per il tuo sito, puoi sempre ordinare un VPS o.

Per trasferire un database, è necessario prima crearne il dump, ovvero inserire il contenuto in un file sql separato. Questo viene fatto nel menu phpMyAdmin sull'hosting da cui stai trasferendo il sito. Vai su phpMyAdmin, seleziona il database che desideri trasferire a sinistra e fai clic sul pulsante " Esportare»Nel menu in alto.

Si aprirà una finestra di dialogo, in cui assicurarsi di selezionare il tipo di database SQL, quindi fare clic sul pulsante ok... Attendi che il file del database venga scaricato sul tuo computer.

Ora questo file deve essere posizionato correttamente sul nostro hosting. Per fare ciò, devi prima creare un database MySQL nell'account cPanel, aggiungervi un utente e assegnargli i privilegi. Di seguito, in ordine, viene descritto come creare un database in MySQL.

Vai su cPanel e trova la sezione " Banca dati", Selezionare" ".

Verrà aperta una nuova finestra. Al passaggio 1, inserisci un nome per la base. Si prega di notare che il nome del database sarà sempre preceduto, la prima metà del nome conterrà il nome dell'account cPanel.

Dopo aver inserito il nome, fare clic sul pulsante " Passo successivo».

Al passaggio 2, è necessario creare un utente MySQL per il database e impostare una password per esso. Dopo aver inserito tutti i dati, premere il pulsante " Creare un utente».

Quando si configurano i privilegi dell'utente creato, selezionare il " TUTTI I DIRITTI”E vai al passaggio successivo.

Se tutto è stato eseguito correttamente nei passaggi precedenti, il Database Wizard ti avviserà del completamento con successo della creazione del database sull'hosting.

Ora puoi trovare il database creato nell'elenco dei database MySQL disponibili nel menu del pannello di controllo con lo stesso nome.

Ora, per ripristinare il database MySQL, importiamo nel database creato il contenuto del file salvato dal vecchio hosting con l'estensione .sql... Per fare ciò, nella pagina principale di cPanel, seleziona la voce di menu “ phpMyAdmin"Nella stessa sezione" Banca dati”. Nella finestra che si apre, nel menu di sinistra, seleziona il database appena creato e clicca sul pulsante " Importare»Nel menu in alto.

Clicca il " seleziona un file", Nella finestra di dialogo selezionare il file sql salvato in precedenza e caricarlo sull'hosting. Assicurati che il tipo di codifica sia utf-8. Dopo aver cliccato su OK, attendi il messaggio che il database è stato importato con successo.

Questo completa tutti i passaggi necessari per trasferire il database a un altro.

Il dump (backup) del database è molto importante. Quindi ho fatto alcuni commenti con esempi su una grande utility come mysqldump.

mysqldump: l'utility consente di scaricare il contenuto di un database o di un insieme di database per creare una copia di backup o trasferire i dati su 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 database_nome>

Con questo comando effettuiamo un backup del database sotto il nome name_database name per guidare C nel file mydb_backup_name_database.txt

Non devi creare il file, MySQL lo creerà da solo.

mysql-u root -p -f database_nome< 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 indica di continuare anche se viene ricevuto un errore SQL, ad es. ignorare gli errori. Ad esempio, se esiste già una riga identica nella tabella.

Per evitare di richiedere una password, è necessario scriverla subito dopo -p, cioè senza spazi. Se la password Pwd, quindi l'esempio è simile a questo:

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

Se usi spesso questo comando, è meglio creare un utente separato con i diritti necessari per far risplendere meno la password di root

Diamo un'occhiata alle impostazioni più fini di mysqldump:

--banche dati consente a mysqldump di includere i comandi CREATE DATABASE / *!33333 IF NOT EXISTS * / DBNAME e USE DBNAME nello script di ripristino. Questo ti permetterà di creare basi di lavoro "da zero". Cioè, senza usare --databases, si presume che l'utente stia ripristinando un database e specifichi esplicitamente dove mettere i dati ripristinati. Se il backup viene creato per eseguire una copia completamente funzionante dei dati, ad esempio su un altro server MySQL, è necessario utilizzare questa chiave;

--tutti-database ti permette di fare copie di tutti i database che esistono su un dato server MySQL. Se hai bisogno di fare copie solo di alcuni database, devi solo specificarli separati da uno spazio quando chiami mysqldump dalla riga di comando (vedi sopra);

Chiave --aiuto... Mysqldump ha molte versioni. Puoi vedere quali funzionalità sono supportate dalla tua versione specifica usando questa chiave;

--add-drop-tableè una chiave che farà sì che mysqldump aggiunga il comando drop table allo script finale prima di creare le tabelle. Ciò consentirà di evitare alcuni errori durante il ripristino del database da un backup. Ovviamente bisogna tenere in considerazione che le tabelle nella copia di lavoro (se nel backup esistono tabelle con lo stesso nome) verranno eliminate dal database principale e ricreate dal backup prima del ripristino dal backup;

--nessun dato... Con questa chiave è possibile eseguire 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 in questa tabella in una copia di backup;

--file-risultato = ...- questa opzione può essere utilizzata per reindirizzare l'output su un file. Puoi usare il solito reindirizzamento unix con il comando ">", oppure puoi usare questa chiave. A chi piace cosa;

Un altro suggerimento molto utile per l'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 occupare più di una certa quantità di memoria fisica (RAM, RAM). mysqldump per impostazione predefinita mette in memoria tutti i dati ricevuti dal server MySQL, quindi li scrive tutti su disco. Di conseguenza, se il provider ti consente di occupare, ad esempio, 30 MB di memoria e il database che copi con mysqldump richiede 50 MB, ovviamente si verificherà un errore: mysqldump non sarà in grado di funzionare correttamente e si chiuderà in modo anomalo, il che informarvi. Per "forzare" mysqldump a scrivere i dati direttamente su disco invece di archiviarli, anche temporaneamente, in memoria, utilizzare lo switch --Presto... Questo risolverà il problema.

Ecco un altro paio di esempi utili:

mysqldump -u root -p Pwd-f --default-character-set = cp1251 DBNAME| gzip -c> nomefile.txt .gz

puoi decomprimere un tale archivio con il comando:

gunzip nomefile.txt .gz

Per sapere per quale data è stato effettuato il backup, puoi scrivere il seguente comando:

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

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

impostato CARATTERE DB= utf8

impostato DBNAME= violazione

mysqldump -u root -p Pwd-f --default-character-set = $ CARATTERE DB $DBNAME| bzip2 -c> sql. $ DBNAME.`data "+% Y-% m-% d" `.bz2

Se vuoi automatizzare la rimozione di vecchi archivi, prova a usare cron e il comando find, che di solito si trova su unix. In esecuzione periodicamente

trovare~ / directory-with-archives -name "* .gz" -mtime +7 -exec rm -f () \;

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

Oggi voglio parlare di dump del database. La frase stessa una volta era spaventosa, anche se in generale non c'è niente di terribile in essa. Quindi la prima e principale domanda: cos'è un dump del database?? La risposta è inaspettatamente semplice: un dump del database è un file con il suo contenuto, che consente di ripristinare il database da zero. Quelli. è solo una copia di esso. Allora perché un dump del database non è chiamato "copia del database"? La linea di fondo è che il dump stesso non è un database, ti consente solo di ricrearlo. Il fatto è che il database può essere archiviato in file diversi a seconda della versione della sbm, del tipo di sistema operativo e di altri fattori. Quelli. è molto difficile trovare tutti i file di un database nel sistema e trasferirli su un altro sistema. Per facilitare questa attività, viene utilizzato un dump del database.

E perché hai effettivamente bisogno di trasferire il database?

Innanzitutto, per creare backup o ripristinare punti prima di apportare modifiche importanti alla struttura, per poter eseguire il rollback in caso di problemi. Ad esempio, hai installato un componente di terze parti e, di conseguenza, il sito si è rivelato inutilizzabile ed è necessario ripristinare rapidamente il suo lavoro. È qui che sorge la necessità di utilizzare un dump del database.

In secondo luogo, quando si crea un sito Web, di norma, viene prima eseguito su una macchina locale sotto un server Web virtuale e solo successivamente trasferito all'hosting. E se tutto è più o meno chiaro con il trasferimento dei file, allora il trasferimento di un database è un problema non così ovviamente risolvibile. Anche qui non puoi fare a meno di un dump del database.

Quindi, abbiamo capito cos'è un dump del database. La domanda rimane come usarlo. Considera un'attività di programmazione web comune: il trasferimento di un sito creato su una macchina locale su un web hosting. Non descriverò in dettaglio il trasferimento di file, mi concentrerò sui database. Quindi, abbiamo un database MySql e il compito di trasferirlo al web hosting. Per non reinventare la ruota, utilizzeremo la diffusa utility phpMyAdmin, che, di norma, viene sempre installata dal tuo provider ed è inclusa anche in Denver. Alla fine, l'utilità è anche gratuita e disponibile per il download sul sito Web ufficiale. Funziona su un server web ed è scritto in php, che ti consente di usarlo direttamente nel browser. Quelli. non dovrebbero esserci problemi, se si presentano, scrivi nei commenti - lo scopriremo.

Iniziamo a creare un dump del database. Apri phpMyAdmin, seleziona il database di cui abbiamo bisogno e fai clic su " Esportare". Dovresti finire con qualcosa del genere:

Qui è necessario selezionare tutte le tabelle (beh, o quelle in cui è necessario ripristinare le modifiche) e inserire il pulsante di opzione nel valore SQL. Nella sezione Struttura è possibile contrassegnare il primo campo "Aggiungi DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT" in modo da eliminare le tabelle corrispondenti nel database di destinazione prima di importare il dump, se viene trasferito per la prima volta, il flag può essere lasciato deselezionato. Nella stessa finestra sottostante vediamo la sezione "Salva come file":

In realtà contrassegna "Salva come file" e scrivi il nome del file desiderato. Il dump del database può essere archiviato, ma di solito non è abbastanza grande da rendere utile la compressione del file. Premi il pulsante "GO" e otteniamo una finestra standard per salvare un file nel browser:
... Il file salvato è il dump del database. Se lo apri nello stesso blocco note, vedrai all'inizio della riga il seguente modulo

PhpMyAdmin SQL dump
- versione 3.2.3
- http://www.phpmyadmin.net

Il file stesso è costituito da query per creare e inserire valori in una tabella scritta in SQL. Non c'è assolutamente alcuno sciamanesimo, tutto è molto ovvio. Ora il prossimo compito è importare il dump. Anche con lei niente di complicato. Vai al pannello di controllo dell'hosting, trova phpMyAdmin lì, avvialo. Potrebbe essere necessario specificare un nome utente/password, a seconda delle impostazioni del provider di hosting. Bene, allora le azioni sono simili: seleziona il database desiderato, fai clic sulla scheda "Importa", vediamo una finestra del genere:

Nella sezione "File da importare", utilizzando il pulsante "Sfoglia", specifica il file di dump del database, di seguito impostiamo la codifica - in joomla, per impostazione predefinita, è utf-8. Di seguito la sezione "Importazione parziale" e il campo "Numero di record (query) da saltare da asterisco" dove è possibile inserire un valore numerico - il numero di righe elaborate in un passaggio, nel caso in cui l'intero database non possa essere importato durante il durata della sceneggiatura. Il valore predefinito "0" corrisponde all'importazione dell'intero database in un'unica esecuzione di script. Nella mia pratica, non ho dovuto fare i conti con il fatto che la base non ha il tempo di riempirsi in un passaggio, anche se ciò non significa che tali casi non si verifichino. Non è necessario modificare i valori degli altri campi, basta premere il pulsante "GO". Ecco fatto, il dump del database è stato importato.

E infine, alcune precisazioni.

1) Perché ho descritto il modo di importare/esportare tutte le tabelle e non l'intero database? Il fatto è che molto spesso devi occuparti della procedura di importazione / esportazione quando trasferisci dati da un server web a una macchina locale e viceversa. Ma molto spesso sul computer locale l'accesso viene utilizzato con l'account "root" senza password. Non possiamo permettercelo sull'hosting. E il database contiene non solo dati, ma anche "privilegi": i diritti di accesso per determinati utenti. Per non dover aggiungere/eliminare utenti ogni volta e assegnare loro diritti di accesso, viene utilizzato un approccio in cui solo la struttura delle tabelle e dei dati in essa contenuti viene scritta nel dump del database. Se viene creato un semplice backup per lo stesso server, è possibile eseguire un dump dell'intero database.

2) Perché phpMyAdmin? Il punto qui non è affatto che non ci sia alternativa ad esso: ce ne sono solo molti, ci sono cose più funzionali e più semplici. È solo che phpMyAdmin è incluso nel set standard per la maggior parte degli hosting condivisi, ad es. non devi fare assolutamente nulla per installarlo. Quelli. lo apriamo e scarichiamo il database. E, naturalmente, l'utilizzo di phpMyAdmin può essere utile per molte attività, ad esempio testare le query, visualizzare la struttura delle tabelle, i dati in esse contenuti.

Bene, questo è tutto ciò che volevo dire in questo articolo. I commenti sono graditi come sempre.

Questa utility consente di ottenere un dump ("snapshot" ") del contenuto di un database o di un insieme di database per creare una copia di backup o trasferire i dati su 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.

Se la copia di backup viene creata sul server, al posto dell'utilità descritta dovresti usare mysqlhotcopy. Vedi sezione 4.8.6 mysqlhotcopy, copia di database e tabelle MySQL.

Shell> database mysqldump o mysqldump --databases DB1 o mysqldump --all-databases

Se non si specificano i nomi delle tabelle o non si utilizzano i parametri --databases o --all-databases, verrà ottenuto un dump del database nel suo insieme (rispettivamente di tutti i database).

Per un elenco di opzioni supportate dalla tua versione specifica dell'utility mysqldump, esegui mysqldump --help.

Si noti che l'utilità mysqldump, utilizzata senza le opzioni --quick o --opt, caricherà l'intero risultato in memoria prima di scaricare il risultato del recupero. Ciò può creare problemi durante il dump di un database di grandi dimensioni.

Nota che non dovresti usare le opzioni --opt o -e se intendi usare una nuova copia di mysqldump per scaricare il dump e poi riprodurlo su un server MySQL molto vecchio.

L'utilità mysqldump supporta le seguenti opzioni:

Add-locks Aggiungi LOCK TABLES prima dell'esecuzione e UNLOCK TABLE dopo ogni dump di tabella (per velocizzare l'accesso a MySQL). --add-drop-table Aggiunge un comando DROP TABLE prima di ogni comando CREATE TABLE. -A, --all-databases Scarica tutti i database. Allo stesso modo l'opzione --databases, che specifica tutti i database. -a, --all Abilita tutte le opzioni di creazione di oggetti specifici di MySQL. --allow-keywords Consente la creazione di nomi di colonne che corrispondono a parole chiave. L'assenza di conflitti è garantita anteponendo il nome della tabella al nome di ciascuna colonna. -c, --complete-insert Usa i comandi INSERT completi (con i nomi delle colonne). -C, --compress Comprime tutte le informazioni tra client e server se entrambi supportano la compressione. -B, --databases Scarica più database. Notare la differenza di utilizzo: in questo caso le tabelle non sono specificate. Tutti i nomi degli argomenti vengono trattati come nomi di database. Istruzione USE nome_db; incluso nell'output prima di ogni nuovo database. --delayed Utilizzare il comando INSERT DELAYED durante l'inserimento di righe. -e, --extended-insert Usa il comando INSERT con una nuova sintassi multilinea (rende le istruzioni di input più compatte e reattive). - #, --debug [= stringa_opzione] Tiene traccia dell'avanzamento del programma (per il debug). --help Stampa le informazioni di aiuto ed esce dal programma. --fields-terminated-by = ... --fields-enclosed-by = ... --fields-opzionalmente-enclosed-by = ... --fields-escaped-by = ... --lines- terminato-by = ... Queste opzioni sono usate insieme all'opzione -T e hanno lo stesso significato delle istruzioni corrispondenti per LOAD DATA INFILE. Vedi sezione 6.4.9 Sintassi dell'istruzione LOAD DATA INFILE ... -F, --flush-logs Elimina i dati syslog dal buffer del server MySQL prima di avviare il dump. -f, --force, Continua anche se ricevi un errore SQL durante il dump della tabella. -h, --host = .. Scarica i dati del server MySQL sull'host specificato. Il valore host predefinito è localhost. -l, --lock-tables. Blocca tutte le tabelle prima di avviare il dump. Le tabelle sono bloccate con un'istruzione READ LOCAL per consentire scritture simultanee per le tabelle MyISAM. Si noti che durante il dump di una raccolta di database, l'opzione --lock-tables blocca le tabelle di ogni database singolarmente. Pertanto, l'utilizzo di questo parametro non garantisce che le tabelle siano logicamente coerenti tra questi database. Le tabelle possono trovarsi in stati completamente diversi durante il dump in database diversi. -K, --disable-keys Aggiunge l'espressione / *! 40000 ALTER TABLE tb_name DISABLE KEYS * /; e / *! 40000 ALTER TABLE tb_name ENABLE KEYS * /; nell'output del risultato. Ciò velocizzerà il caricamento dei dati sul server MySQL 4.0 poiché gli indici vengono creati dopo che tutti i dati sono stati inseriti. -n, --no-create-db Nell'output, l'espressione CREATE DATABASE / *! 32312 IF NOT EXISTS * / db_name; sarà assente. Questa riga verrà aggiunta comunque quando si utilizzano le opzioni --databases o --all-databases. -t, --no-create-info Non scrive le informazioni sulla creazione della tabella (comando CREATE TABLE). -d, --no-data Non scrive informazioni dalle righe della tabella. Questo è molto utile per scaricare la struttura di una tabella! --opt Uguale a --quick --add-drop-table --add-locks --extended-insert --lock-tables. Dovrebbe fornire il dump leggibile più veloce sul server MySQL. -pyour_pass, --password [= your_pass] Password utilizzata durante la connessione al server. Se non viene immesso argomento = your_pass, mysqldump richiederà una password. -P port_num, --port = port_num Il numero di porta TCP / IP utilizzato per connettersi all'host (utilizzato quando ci si connette a host diversi da localhost, che utilizza socket Unix). -q, --quick Stampa dump direttamente su stdout senza bufferizzare la richiesta. La funzione mysql_use_result() viene utilizzata per questo. -Q, --quote-names Quota nomi di tabelle e colonne senza caratteri `` ". -R, --result-file = ... Output diretto del file specificato. Questa opzione dovrebbe essere utilizzata in MS DOS, poiché impedisce converte il carattere di nuova riga "\ n" nella sequenza "\ n \ r" (nuova riga + ritorno a capo). --single-transaction Questa opzione emette un comando SQL BEGIN prima di scaricare i dati dal server. Viene utilizzato più spesso con le tabelle InnoDB e il livello di isolamento della transazione READ_COMMITTED, poiché è in questa modalità che è possibile ottenere un dump coerente del database dopo aver eseguito il comando BEGIN senza bloccare alcuna applicazione. Quando si utilizza questa opzione, ricordare che solo le tabelle transazionali saranno in uno stato coerente durante il dump. alcune tabelle MyISAM o HEAP possono ancora cambiare stato quando viene utilizzata questa opzione. L'opzione --single-transaction è stata aggiunta nella versione 4.0.2. Si esclude a vicenda con l'opzione --lock-tables perché il comando LOCK TABLES interrompe la transazione precedente. -S / percorso / a / socket, --socket = / percorso / a / socket File socket per connettersi a localhost (valore host predefinito). --tables Sostituisce l'opzione --databases (-B). -T, --tab = percorso-di-qualche-directory Per ogni tabella, creare un file `table_name.sql" contenente i comandi SQL CREATE per creare la tabella e un file `table_name.txt" con i dati della tabella. Il file `.txt 'è formattato secondo le opzioni --fields-xxx e --lines - xxx. Nota Nota: questa opzione funziona solo se l'utilità mysqldump è in esecuzione sullo stesso computer del demone mysqld e l'utente/gruppo che ha avviato questo thread mysqld (di solito l'utente mysql e il gruppo mysql) deve avere il diritto di creare/scrivere il file all'indirizzo specificato. -u nome_utente, --user = nome_utente Nome utente del server MySQL utilizzato durante la connessione al server. L'impostazione predefinita è il nome utente Unix. -O var = opzione, --set-variable var = opzione Imposta i valori delle variabili. Le variabili disponibili per l'uso sono elencate di seguito. -v, --verbose Modalità di output estesa. Visualizza informazioni più dettagliate sul funzionamento del programma. -V, --version Stampa le informazioni sulla versione ed esce dal programma. -w, --where = "condizione dove" Scarica solo i record selezionati. Si prega di notare che le citazioni sono obbligatorie. "--where = user =" jimf "" "-wuserid> 1" "-wuserid -X, --xml Scarica il database come XML. -x, --first-slave Blocca tutte le tabelle in tutti i database. -O net_buffer_length = #, dove # Molto spesso, l'utilità mysqldump viene utilizzata per eseguire il backup di tutti i database.Vedere la sezione 4.4.1 Backup dei database... mysqldump --opt database> backup-file.sql

Database MySQL

Mysql -e database "source /patch-to-backup/backup-file.sql"

Questa utility viene spesso utilizzata per trasferire informazioni da un database a un altro server MySQL:

Mysqldump --opt database | mysql --host = database host remoto -C

È abbastanza possibile scaricare più database con un singolo comando:

Mysqldump --databases database1> my_databases.sql

Se hai bisogno di scaricare tutti i database, puoi usare:

Mysqldump --all-databases> all_databases.sql

Principali articoli correlati