2010-03-25 12 views
6

So che un dump SQL è una serie di istruzioni SQL dell'inserto che riflettono tutti i record all'interno del database. Ma a cosa serve? Perché dovremmo scaricare i record del database? Ogni database supporta una funzione di dumping?A cosa serve sql-dump?

risposta

14

Abbastanza stranamente, questo è in realtà il solito modo di eseguire il backup di un database. La copia dei file stessi che contengono effettivamente i dati non è il solito metodo di backup, per vari motivi complicati.

Tutti i database funzionano in questo modo, o almeno non ne ho mai sentito uno che non li ha: tutti hanno la possibilità di esportare un gruppo di codice SQL che, una volta eseguito, ricreerà il database nello stesso stato era in quando la discarica era iniziata.

Tuttavia, questi vari formati sono generalmente incompatibili, a causa delle sottili differenze tra i vari dialetti di SQL utilizzati dai diversi sistemi di database. Ci sono programmi di utilità che possono essere convertiti tra alcuni di essi, ma non sono a conoscenza di alcuna 'Rosetta Stone' che gestisca ogni possibile caso.

Oltre a rappresentare il metodo principale di backup di un database, questa tecnica è utile anche quando si mettono in scena i dati delle app db tra server diversi, ad esempio dallo sviluppo al testing alla produzione.

2

mysqldump produce una rappresentazione SQL dei dati per una o più tabelle o database. Poiché il formato è SQL, verrà eseguito su qualsiasi altro server MySQL, indipendentemente dall'architettura o dalla versione principale/secondaria (ovviamente, le viste non funzioneranno su 4.x ecc., Ma è principalmente compatibile con i forwards).

C'è un altro strumento, mysqlhotcopy, ma poiché questo strumento produce file binari, sono collegati alla macchina su cui sono stati generati e non possono essere utilizzati altrove. SQL ha il vantaggio di funzionare su qualsiasi server MySQL e di essere indipendente dal meccanismo di archiviazione di file sottostante dei database.

I due principali casi di utilizzo per SQL scarico sono:

  • il backup dei dati del database. L'SQL può essere letto ("riprodotto") su un server di database vuoto e ricrea le tabelle e le popola con le righe.
  • Migrazione dei dati su un altro server. Supponiamo che tu stia aggiornando da MySQL 5.0 a 5.1. Hai due macchine. Si utilizza mysqldump per produrre un dump SQL sulla macchina 5.0 e lo si inserisce nella 5.1.

Ci sono alcuni usi meno comuni. Ad esempio, l'istantanea SQL del database dell'applicazione può essere utilizzata per il test dell'unità rispetto a uno stato noto. È anche possibile trasformare il codice SQL in un altro dialetto, ad es. PostgeSQL o SQLite, per trasferire i dati su un altro database.

Hai chiesto se altri database forniscono funzionalità di dump SQL. La risposta è sì in quasi tutti i casi. PostgreSQL fornisce pg_dump, SQLite ha un comando .dump, ecc.