2010-09-23 11 views
18

¿Hay algo mejor (más rápido o más pequeño) que las páginas de texto sin formato CREATE TABLE y las instrucciones INSERT para eliminar las bases de datos MySql? Parece terriblemente ineficiente para grandes cantidades de datos.¿Hay un formato de volcado binario MySql? ¿O algo mejor que las declaraciones INSERT de texto sin formato?

Me doy cuenta de que los archivos de base de datos subyacentes se pueden copiar, pero supongo que solo funcionarán en la misma versión de MySql de la que provienen.

¿Hay alguna herramienta que desconozca o una razón para esta falta?

+0

Me ha impactado esto no es proporcionada por MySQL. Un volcado binario sería mucho más rápido. –

Respuesta

10

No estoy seguro de si esto es lo que está buscando, pero normalmente canalizo la salida de mysqldump directamente a gzip o bzip2 (etc.). Tiende a ser considerablemente más rápido que el dumping a stdout o algo así, y los archivos de salida son mucho más pequeños gracias a la compresión.

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

También es posible volcar a XML con la opción --xml si usted está en busca de "portabilidad" a expensas de consumir (mucho) más espacio en disco que la SQL gzipped ...

+1

Me gusta, y también comprime mis archivos .sql, pero me pregunto por qué MySql no puede exportar en formato binario. –

+0

sí ... No he mirado muy de cerca este proyecto, pero quizás sea de su interés: http://2ze.us/ym Sospecho que todavía está usando el mysqldump normal debajo del capó. – codekoala

+0

Aparentemente si sus tablas son todas MyISAM, puede usar mysqlhotcopy: http://2ze.us/hm – codekoala

1

Es Vale la pena señalar que MySQL tiene una sintaxis especial para hacer inserciones masivas. De the manual:

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

insertaría 3 filas en una sola operación. Por lo tanto, cargar de esta manera no es tan ineficiente como podría ser con una instrucción por fila, y en lugar de 129 bytes en 3 instrucciones INSERT, esto es de 59 bytes, y esa ventaja solo se vuelve más grande cuanto más filas tenga.

5

Lo sentimos, no hay volcado binario para MySQL. Sin embargo, los registros binarios de MySQL son específicamente para fines de copia de seguridad y replicación de bases de datos http://dev.mysql.com/doc/refman/5.5/en/binary-log.html. No son difíciles de configurar. Solo se registran los cambios, como la actualización y la eliminación, de modo que cada archivo de registro (creado automáticamente por MySQL) también es una copia de seguridad incremental de los cambios en el DB. De esta forma, puede guardar de vez en cuando una instantánea completa de la base de datos (una vez al mes), y luego almacenar solo los archivos de registro y, en caso de falla, restaurar la última instantánea y ejecutar los registros.

0

Nunca he intentado esto, pero no son tablas mysql solo archivos binarios en el disco duro? ¿No podrías copiar los archivos de la tabla ellos mismos? Presumiblemente eso es esencialmente lo que estás pidiendo.

No sé cómo puntada que, en conjunto, pero me parece una copia de/var/lib/mysql que hacer el truco

Cuestiones relacionadas