2010-09-23 11 views
18

C'è qualcosa di meglio (più veloce o più piccolo) rispetto alle pagine di testo in chiaro CREATE TABLE e INSERT per il dumping dei database MySql? Sembra terribilmente inefficiente per grandi quantità di dati.Esiste un formato di dump binario MySql? O qualcosa di meglio delle semplici istruzioni INSERT?

Mi rendo conto che i file di database sottostanti possono essere copiati, ma presumo che funzioneranno solo nella stessa versione di MySql da cui provengono.

C'è uno strumento che non conosco o un motivo per questa mancanza?

+0

Sono scioccato questo non è fornito da mysql. Una discarica binaria sarebbe molto più veloce. –

risposta

10

Non so se questo è quello che stai cercando, ma di solito canalizzo l'output di mysqldump direttamente su gzip o bzip2 (ecc.). Tende ad essere notevolmente più veloce del dumping su stdout o qualcosa del genere, e i file di output sono molto più piccoli grazie alla compressione.

mysqldump --all-databases (other options) | gzip > mysql_dump-2010-09-23.sql.gz 

E 'anche possibile scaricare in formato XML con l'opzione --xml se siete alla ricerca di "portabilità" a scapito di consumare (molto) più spazio su disco rispetto al SQL gzip ...

+1

Mi piace e comprimo anche i miei file .sql, ma mi chiedo perché MySql non possa esportare in un formato binario. –

+0

sì ... Non ho guardato molto attentamente questo progetto, ma forse ti interesserà: http://2ze.us/ym Sospetto che stia ancora usando il mysqldump regolare sotto il cofano. – codekoala

+0

Apparentemente se le tue tabelle sono tutte MyISAM, puoi usare mysqlhotcopy: http://2ze.us/hm – codekoala

1

E' vale la pena notare che MySQL ha una sintassi speciale per fare inserimenti di massa. Da the manual:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 

inserirebbe 3 file in una sola operazione. Quindi caricare in questo modo non è così inefficiente come potrebbe essere altrimenti con una dichiarazione per riga, e invece di 129 byte in 3 istruzioni INSERT, questo è 59 byte, e quel vantaggio aumenta solo più le file che hai.

5

Spiacente, nessun dump binario per MySQL. Tuttavia i log binari di MySQL sono specifici per scopi di replica di database e backup http://dev.mysql.com/doc/refman/5.5/en/binary-log.html. Non sono difficili da configurare. Vengono registrate solo modifiche come aggiornamento ed eliminazione, quindi ogni file di registro (creato automaticamente da MySQL) è anche un backup incrementale delle modifiche nel DB. In questo modo è possibile salvare di volta in volta un'intera istantanea del db (una volta al mese?), Quindi archiviare solo i file di registro e, in caso di arresto anomalo, ripristinare l'ultima istantanea ed eseguire i registri.

0

Non ho mai provato questo, ma non sono tabelle mysql solo file binari sul disco rigido? Non potresti semplicemente copiare i file del tavolo da soli? Presumibilmente è essenzialmente ciò che stai chiedendo.

Non so come punto che insieme, ma mi sembra una copia di/var/lib/mysql farebbe il trucco

Problemi correlati