Tiempo atrás mencionaba en el 1er post de esta línea la imposibilidad de copiar/transportar los archivos correspondientes a una DB de una Pc a otra con el objeto no solo de resguardar la base en si sino además la posibilidad de poder seguir trabajando con ella en otra Pc.
El punto es que en el post en cuestión, mencioné la imposibilidad de "transportar" las tablas por ser del tipo MyISAM.
ERRORRR!!!!!! La imposibilidad de poder copiar los archivos se orientaba a las tablas ISAM no a las MyISAM. Si bien estas últimas heredaron ciertas propiedades, no mantuvieron esa imposibilidad de copiado a comparación de sus hermanas mayores. Es así entonces que reforzando el post de bitbow, rectifico el primer mensaje de esta línea:
Las tablas MyISAM poseen índices más pequeños que los de las ISAM sin embargo requieren más potencia de procesador para insertar un registro dentro de un índice mucho más comprimido.
En síntesis, estas son las opciones a la hora de copiar/volcar las tablas MyISAM:
1) BACKUP: crea una copia de los archivos de definición y de datos de la tabla MyISAM. Las instrucción RESTORE restaura los datos.
Ej: mysql> BACKUP TABLE sales to '/db_backups';
Esta función provoca un bloqueo automático de la tabla sin embargo, si nuestra necesidad fuera la de resguardar más de una tabla, el bloqueo debe ser asignado por uno mismo.
2) COPIADO DE ARCHIVOS EN FORMA DIRECTA: Aquí, el bloqueo de tablas no es automático a diferencia de la función BACKUP por lo cual, es uno el que debe ejecutar el bloqueo propiamente dicho, luego generar el vaciado, luego el copiado y por último el desbloqueo. El vaciado de las tablas es para asegurarse que todos los índices no escritos se escriben en disco.
Secuencia:
LOCK TABLES sales READ, sales-rep READ,customer READ;
FLUSH TABLES sales, sales-rep, customer;
c:\MySQL\data\firstdb>copy customer.* c:\db_backup
Luego de copiar los archivos, pueden desbloquearse las tablas:
UNLOCK TABLES;
3) MYSQLDUMP (el más recomendado creo)
Permite interactuar entre distintos sistemas !!!!
Aquí nace el famoso y tan conocido, archivo .sql
Ej.:
c:\mysql\bin>mysqldump firstdb customer> c:\db_bakcups\all.sql
Para restaurar la copia:
c:\MySQL\bin>mysql firstdb < c:\db_backups\all.sql
4) SELECT INTO: Parecido a la anterior. En este caso, se genera un archivo .dat y este puede ser creado solamente en el servidor MySQL.
Ej.: SELECT * from customer INTO OUTFILE '/db_backups/customer.dat'
Restauración:
LOAD DATA INFILE 'c:\\db_backups\\customer.dat' INTO TABLE customer
5)MYSQLIMPORT : Lo mismo que LOAD DATA pero desde la línea de comandos.
Bueno, cada uno de los items puede ser tranquilamente más expuesto (con más detalle) pero quería resarcirme del error cometido.
Saludos a todos y espero que este sencillo tutorial, sirva de algo.