Cos'è mysqldump e come si usa?

Sommario:

Cos'è mysqldump e come si usa?
Cos'è mysqldump e come si usa?
Anonim

Come uno dei principali database disponibili gratuitamente, MySQL è una scelta popolare per molte applicazioni web. Essendo esposta a Internet, la tua app è esposta ad attacchi dannosi. Se il tuo server è compromesso, nella migliore delle ipotesi, devi reinstallare l'applicazione; nel peggiore dei casi, potresti perdere i tuoi dati. Inoltre, potresti trovarti in una situazione in cui devi migrare un database da un server a un altro.

A cosa serve mysqldump?

Lo strumento mysqldump ti copre sia per la compromissione del server che per le situazioni di migrazione. La sua funzione di base è prendere un database MySQL e scaricarlo come file di testo. Ma non qualsiasi file di testo; il file è un insieme di istruzioni SQL. Queste istruzioni, una volta eseguite, ricostruiscono il database nello stato preciso in cui si trovava quando è stato eseguito il dump.

Usa mysqldump per creare esportazioni di un database come backup o per spostare il database su un nuovo host. In entrambi i casi, il file di testo verrà nuovamente importato in un server di database MySQL. Eseguirà tutte le istruzioni SQL nel file, che ricostruisce il database al suo stato originale. Questa parte non usa il comando mysqldump, ma non sarebbe nemmeno possibile senza questa utilità.

I documenti MySQL elencano altri metodi per eseguire i backup, ma questi hanno degli svantaggi:

  • Copiare a caldo un database da MySQL Enterprise è un ottimo modo per ottenere questi backup, se non ti dispiace il prezzo di Enterprise.
  • Copiare le directory dei dati del database può essere complicato quando ci si sposta tra i sistemi operativi, poiché le destinazioni saranno diverse.
  • L'esportazione in un file di testo delimitato ti darà il contenuto, ma dovrai ricreare la struttura.
  • Spesso puoi eseguire il backup dei database da programmi GUI come MySQL Workbench. Ma questo è un processo manuale; non qualcosa che puoi scrivere o includere in un lavoro batch.

Installa lo strumento mysqldump

Per Windows, controlla le nostre istruzioni per installare MySQL su Windows 7 (il processo di installazione è lo stesso per Windows 10). Su macOS, consulta le nostre istruzioni per installare MySQL su macOS 10.7 (di nuovo, precedente ma ancora applicabile). Gli utenti di sistemi Linux basati su Ubuntu possono utilizzare il seguente comando per installare il client e le utilità MySQL:

sudo apt install mysql-client

Estrai un dump MySQL

Una volta installato, usa mysqldump per ottenere un backup completo di un database.

mysqldump -h [nome o IP del tuo host DB] -u [nome utente DB] -p [nome database] > db_backup.sql

Ecco una descrizione dei flag usati in questo comando:

  • - h: Questo flag è l'host del database. Può essere un nome host completo (ad esempio, myhost.domain.com) o un indirizzo IP. Lascia vuoto questo campo se esegui il comando sullo stesso host del server MySQL.
  • - u: Il tuo nome utente.
  • - p: Se hai protetto correttamente l'installazione di MySQL, avrai bisogno di una password per connetterti. Questo flag senza argomenti richiede una password quando esegui il comando. A volte è utile fornire la password direttamente come argomento di questo flag, ad esempio, in uno script di backup. Ma al prompt, non dovresti, perché se qualcuno ha avuto accesso al tuo computer, potrebbe ottenere questa password nella cronologia dei comandi.
  • > db_backup.sql: Questa parte dice a mysqldump di indirizzare il suo output su un file. Normalmente, il comando invia tutto alla console, il che significa che vedrai diverse istruzioni SQL sullo schermo. Il simbolo > incanala l'output nel file di testo denominato. Se questo file non esiste, viene creato automaticamente.

Al termine, avrai un file. SQL. Questo è un file di testo contenente istruzioni SQL. Puoi aprirlo in qualsiasi editor di testo per ispezionare il contenuto. Ecco un'esportazione da un database di WordPress che mostra come vengono messi insieme questi file.

Image
Image

Il file è diviso in sezioni. La prima sezione imposta la tabella per i commenti di WordPress. La seconda sezione ricrea il contenuto di quelle tabelle (in questo esempio, i record di commento). Quando reimporti il dump di MySQL, il comando funziona attraverso il file, esegue le istruzioni e ricostruisce il database com'era.

Importa un file di dump MySQL

Prima di importare il file dump, avrai bisogno di un database già creato e del suo nome utente e password validi. Dovresti anche avere tutte le autorizzazioni per il database. Non è necessaria l'autorizzazione GRANT, ma è più facile concederle tutte.

Ulteriori informazioni sulle autorizzazioni del database prima di modificare i ruoli di sicurezza all'interno del database.

Per reimportare i tuoi dati, accedi al server MySQL con il comando mysql. Digitare use [nome database] al prompt e sostituire il nome del database. Inserisci source [filename] e sostituisci il nome del file dump che hai preso in precedenza.

Al termine, viene visualizzato un elenco di messaggi che indicano che le istruzioni SQL sono in esecuzione. Tieni d'occhio gli errori, ma se hai i permessi giusti, dovresti andare bene.

Image
Image

Al termine del processo, avrai un duplicato del database originale. Per verificare la somiglianza tra i database, eseguire un altro dump, quindi confrontare i due output. Usa un editor di testo o uno strumento diff dedicato per confrontare i due file.

Image
Image

Ci sono due differenze tra questi file, rappresentate dalle linee rosse nella parte superiore e inferiore della barra di scorrimento a destra. La prima è la riga che contiene il nome del database, ed è diversa perché i file hanno un nome diverso. Il secondo è il timestamp per il file dump. Questo è diverso perché il secondo database è stato ricreato dopo il primo. In caso contrario, i file sono esattamente gli stessi, il che significa che lo sono anche i database che li hanno generati.

Domande frequenti

    Come si risolve l'errore mysqldump: accesso negato quando si utilizzano tabelle di blocco?

    Chiedi al tuo amministratore del database di concederti il privilegio LOCK. Se ciò non risolve il problema, prova a eseguire lo stesso comando mysqldump aggiungendo il flag - -single-transaction, ad esempio [ $ mysqldump --single-transaction] [-u utente] [-p DBNAME] > backup.sql

    Puoi usare una clausola "where" con mysqldump?

    Utilizzare una clausola WHERE durante la creazione di un backup che includa solo le righe che soddisfano la condizione specificata. Ad esempio, per eseguire il dump dei dati solo dalle righe con la colonna id maggiore di 100, immettere "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".

Consigliato: