Ricerca…


Sintassi

  • mysqldump -u [nome utente] -p [password] [altre opzioni] nome_db> dumpFileName.sql /// Per eseguire il backup di un singolo database
  • mysqldump -u [nome utente] -p [password] [altre opzioni] nome_db [nome_tbl tbl_nome2 nome_tbl2 ...]> dumpFileName.sql /// Per eseguire il backup di una o più tabelle
  • mysqldump -u [nome utente] -p [password] [altre opzioni] - database db_name1 db_name2 nome_db3> dumpFileName.sql /// Per eseguire il backup di uno o più database completi
  • mysqldump -u [nome utente] -p [password] [altre opzioni] --all-databases> dumpFileName.sql /// Per eseguire il backup dell'intero server MySQL

Parametri

Opzione Effetto
- # Opzioni di accesso al server
-h ( --host ) Host (indirizzo IP o nome host) a cui connettersi. L'impostazione predefinita è localhost ( 127.0.0.1 ) Esempio: -h localhost
-u ( --user ) Utente MySQL
-p ( --password ) Password MySQL. Importante : quando si utilizza -p , non deve esserci uno spazio tra l'opzione e la password. Esempio: -pMyPassword
- # Opzioni di scarico
--add-drop-database Aggiungi un'istruzione DROP DATABASE prima di ogni istruzione CREATE DATABASE . Utile se si desidera sostituire i database nel server.
--add-drop-table Aggiungi un'istruzione DROP TABLE prima di ogni istruzione CREATE TABLE . Utile se si desidera sostituire le tabelle nel server.
--no-create-db Sopprimere le istruzioni CREATE DATABASE nel dump. Ciò è utile quando sei sicuro che il (i) database (i) che stai scaricando esiste già (s) nel server in cui caricerai il dump.
-t ( --no-create-info ) Elimina tutte le istruzioni CREATE TABLE nel dump. Ciò è utile quando si desidera scaricare solo i dati dalle tabelle e utilizzerà il file di dump per popolare tabelle identiche in un altro database / server.
-d ( --no-data ) Non scrivere informazioni sulla tabella. Questo scaricherà solo le istruzioni CREATE TABLE . Utile per creare database "modello"
-R ( --routines ) Includere stored procedure / funzioni nel dump.
-K ( --disable-keys ) Disabilitare le chiavi per ogni tabella prima di inserire i dati e abilitare le chiavi dopo aver inserito i dati. Ciò accelera gli inserimenti solo nelle tabelle MyISAM con indici non univoci.

Osservazioni

L'output di un'operazione mysqldump è un file leggermente commentato contenente istruzioni SQL sequenziali compatibili con la versione delle utilità MySQL utilizzate per generarlo (con attenzione alla compatibilità con le versioni precedenti, ma nessuna garanzia per quelle future). Pertanto, il ripristino di un database mysqldump ed include l'esecuzione di tali istruzioni. Generalmente, questo file

  • DROP s la prima tabella o vista specificata
  • CREATE s quella tabella o vista
  • Per le tabelle scaricate con dati (cioè senza l'opzione --no-data )
    • LOCK il tavolo
    • INSERT tutte le righe della tabella originale in un'unica istruzione
  • UNLOCK TABLES
  • Ripete il precedente per tutte le altre tabelle e viste
  • DROP s la prima routine inclusa
  • CREATE questa routine
  • Ripete lo stesso per tutte le altre routine

La presenza del DROP prima di CREATE per ogni tabella indica che se lo schema è presente, indipendentemente dal fatto che sia vuoto o meno, l'utilizzo di un file mysqldump per il suo ripristino compila o sovrascrive i dati in esso contenuti.

Creazione di un backup di un database o una tabella

Crea un'istantanea di un intero database:

mysqldump [options] db_name > filename.sql

Creare uno snapshot di più database:

mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql

Crea uno snapshot di una o più tabelle:

mysqldump [options] db_name table_name... > filename.sql

Crea uno snapshot escludendo una o più tabelle:

mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql

L'estensione del file .sql è completamente una questione di stile. Qualsiasi estensione funzionerebbe.

Specifica nome utente e password

> mysqldump -u username -p [other options]
Enter password:

Se è necessario specificare la password sulla riga di comando (ad esempio in uno script), è possibile aggiungerla dopo l'opzione -p senza spazio:

> mysqldump -u username -ppassword [other options]

Se la password contiene spazi o caratteri speciali, ricorda di usare l'escape a seconda della shell / sistema.

Opzionalmente la forma estesa è:

> mysqldump --user=username --password=password [other options]

(L'esplicita specificazione della password sulla riga di comando non è consigliata a causa di problemi di sicurezza.)

Ripristino di un backup di un database o di una tabella

mysql [options] db_name < filename.sql

Nota che:

  • db_name deve essere un database esistente;
  • il tuo utente autenticato ha privilegi sufficienti per eseguire tutti i comandi all'interno del tuo filename.sql ;
  • L'estensione del file .sql è completamente una questione di stile. Qualsiasi estensione funzionerebbe.
  • Non è possibile specificare un nome tabella da caricare in anche se è possibile specificarne uno da cui eseguire il dump. Questo deve essere fatto all'interno di filename.sql .

In alternativa, quando lo strumento riga di comando MySQL , è possibile ripristinare (o eseguire qualsiasi altro script) utilizzando il comando di origine:

source filename.sql

o

\. filename.sql

mysqldump da un server remoto con compressione

Per utilizzare la compressione sul filo per un trasferimento più veloce, passare l'opzione --compress a mysqldump . Esempio:

mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql

Importante: se non si desidera bloccare il db di origine , è necessario includere anche --lock-tables=false . Ma potresti non ottenere un'immagine db coerente internamente in questo modo.

Per salvare anche il file compresso, puoi inviare pipe a gzip .

mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz

ripristinare un file mysqldump gzip senza decomprimere

gunzip -c dbname.sql.gz | mysql dbname -u username -p

Nota: -c significa scrivere output su stdout.

Backup diretto su Amazon S3 con compressione

Se si desidera eseguire un backup completo di una grande installazione MySql e non si dispone di una memoria locale sufficiente, è possibile scaricarla e comprimerla direttamente su un bucket Amazon S3. È anche una buona pratica farlo senza avere la password del DB come parte del comando:

mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
        --verbose --hex-blob --routines --triggers --all-databases |
    gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz

Viene richiesta la password, dopodiché viene avviato il backup.

Trasferimento dei dati da un server MySQL a un altro

Se hai bisogno di copiare un database da un server a un altro, hai due opzioni:

Opzione 1:

  1. Memorizza il file di dump nel server di origine
  2. Copia il file dump sul tuo server di destinazione
  3. Carica il file di dump nel tuo server di destinazione

Sul server di origine:

mysqldump [options] > dump.sql

Sul server di destinazione, copiare il file di dump ed eseguire:

mysql [options] < dump.sql

Opzione 2:

Se il server di destinazione può connettersi al server host, è possibile utilizzare una pipeline per copiare il database da un server all'altro:

Sul server di destinazione

mysqldump [options to connect to the source server] | mysql [options]

Allo stesso modo, lo script potrebbe essere eseguito sul server di origine, spingendo verso la destinazione. In entrambi i casi, è probabile che sia significativamente più veloce dell'opzione 1.

Database di backup con stored procedure e funzioni

Per impostazione predefinita, stored procedure e funzioni o non generate da mysqldump , è necessario aggiungere il parametro --routines (o -R ):

mysqldump -u username -p -R db_name > dump.sql

Quando si utilizza --routines la creazione e la modifica dei timestamp non vengono mantenute, si dovrebbe invece scaricare e ricaricare il contenuto di mysql.proc .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow