Sv Community El Salvador

Soporte y Tecnología => Programación => Base de Datos => Mensaje iniciado por: spawnri en noviembre 15, 2006, 09:09:45 am

Título: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 09:09:45 am
Amigos, necesito su ayuda urgentemente con MySQL. Mi problema es el siguiente:

He instalado MySQL en mi computador y he configurado en la instalación que las bases de datos se alojaran en mi unidad D:

Y en efecto he importado de otro motor de base de datos, una data que pesa mas de dos gigas, pero ahora tengo la siguiente interrogante.

¿Si formateo mi equipo e instalo nuevamente MySQL como le hago para atachar esa base de datos que tengo en mi unidad D:? Porque fui a revidar a archivos de programas y resulta ser que las estructuras de mi DATA estan en la unidad C: con extension .frm.. Entonces tengo ahora la confusion de como funciona en esta parte especifica el MySQL. Porque lo unico que tengo en mi unidad D: es un archivo llamada ibdata

Podrian ustedes orientarme?


Título: Re: MySQL 5 y Bases de Datos
Publicado por: rdoggsv en noviembre 15, 2006, 09:18:12 am
Hace un mysql dump de la base de datos y despues importala en otra maquina con mysql , revisala extensivamente si todos los datos han sido importados satisfactoriamente.

Por si acaso siempre respalda el foder de mysql en archivos de programas y la carpeta en donde le pusistes que guardara las bases de datos.

Si el sql que te genero mysqldump funciono en la otra maquina podes instalar el nuevo mysql y luego importar la base de datos.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 09:22:55 am
Mira, la mejor manera de hacer bakcups de mysql es utilizando la herramienta mysqldump.

El uso es bastante sencillo.. abres una consola en windows y escribes:

Código: [Seleccionar]
mysqldump --user=root --password=pass -A > backup-completo.sql

Si queres únicamente una base de datos:

Código: [Seleccionar]
mysqldump --user=root --password=pass nombrebasedatos > backup-nombrebasedatos.sql

Luego para restaurar la BD es más facil... siempre en la consola.

Código: [Seleccionar]
mysql --user=root --password=pass < backup-completo.sql

O si es una sola bd

Código: [Seleccionar]
mysql --user=root --password=pass nombrebasedatos < backup-nombrebasedatos.sql

Nota: Tenes que tener el directorio de ejecutables de MySQL en el PATH, sino no vasa poder correr los programas. Si no lo tenes vas a tener que agregarlo.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 09:26:08 am
gracias... en realidad no se micho de esto pero quien lee aqui conmigo lo agradece y se que entendera.... muy amables de su parte amigos
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 09:27:40 am
Ahh otra cosa, asegurate de que el mysql a donde vas a importar la base de datos sea igual o superior al que tenes instalado actualmente...

Por ejemplo, si tenes el 5.0.1 no te da problemas en importar al 5.0.2 o al 5.1, pero si queres importar a un 4.x o a un 5.0.0 es muy probable que te tire errores.

También revisa el soporte de los motores que tiene, en el 4 sobre todo a veces uno activa el motor de InnoDB para la integridad referencial, y al migrar a otro mysql4 se le olvida activar el motor en la config, y pues obviamente el bakcup intentara crear las tablas como InnoDB y la base de datos destino no posee soporte para ese motor.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 09:29:50 am
entiendo.. solo una preguntita mas...

entonces el MySQL, guarda la data en la unidad que se le indica pero... las estructuras de la misma siempre las guarda en la unidad c?.... y la unica forma de atachar una base de datos en la misma PC o en otra es haciendo previamente un respaldo a la misma?.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: rdoggsv en noviembre 15, 2006, 09:34:00 am
se supone que en donde vos le especificas, pero yo creo que vos lo que nos estas diciendo es que le pusistes el drive D cuando te pregunta de unas cosas de las tablas InnoDB , mysql crea una carpeta para cada base de datos y contiene 3 achivos por cada tabla , esos frm de los que nos hablabas antes por ejemplo.

Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 09:39:10 am
entiendo.. solo una preguntita mas...

entonces el MySQL, guarda la data en la unidad que se le indica pero... las estructuras de la misma siempre las guarda en la unidad c?.... y la unica forma de atachar una base de datos en la misma PC o en otra es haciendo previamente un respaldo a la misma?.


Depende del tipo de tabla, por ejemplo las tablas MyISAM se pueden copiar directamente de los archivos .frm que es donde se guardan los datos. Para las tablas InnoDB no queda de otra que hacer el bakcup de la forma en que te especifique arriba.

Sea como sea, en teoría no tendrías que copiar los archivos .frm a menos que algo muy malo haya pasado, por ejemplo que se haya arruinado el disco y tu unico bakcup sean los archivos de datos de MySQL.

Como dije arriba, la mejor forma (y la más segura) de hacer backups es utilizando mysqldump.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 09:41:19 am
claro Rdogg... cuando se instalo el MySQL, hace una pregunta donde se alojaran las bases de datos y se indico que en la unidad D:.. pero cuando se hizo una migracion de bases de datos, que por cierto fue exitosa porque podemos verla desde my sql.. lo extraño es que en la unidad D: en la carpeta que el mismo Mysql creo.. solo hay un archivo llamado ibdata1.. y en la unidad C:  donde esta instalado el MySql en la carpeta DATAS, alli esta la carpeta correspondiente a la base de datos con los nombres de todas mis tablas con extension .frm pero no logran pesar ni  64kb... eso me hace pensar que la estructura se guardo en C: pero el contenido de los datos en D:... ahora bien he alli la confusion porque se esperaba que dicha estructura tambien estuviese en la unidad D:.. eso no es posible?
Título: Re: MySQL 5 y Bases de Datos
Publicado por: rdoggsv en noviembre 15, 2006, 09:44:24 am
pues en linux si especificas que carpeta va a usar para los datos y ahi guarda todo, pero en mysql no te debes de complicar y tratar de hacer las cosas con pegar unos archivos encima de otros, para eso estan las herramientas de migracion que te van a exportar tanto datos como estructura, y debes de rebuscarte reemplazando archivos solo si la migracion no fue exitosa y ya no tenes de otra.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 09:46:01 am
Entendido... lo unico que no me queda claro es si MySQL trabaja asi, con informacion parcial en unidades distintas.. porque insisto en que se esperaba que todo fuera guardado en la unidad D:.. pero no fue asi
Título: Re: MySQL 5 y Bases de Datos
Publicado por: rdoggsv en noviembre 15, 2006, 09:50:49 am
Citar
The .frm files only store information about the structure of tables. These files don't store any data at all. The .frm files are present regardless of whether you use MyISAM or InnoDB.

All data and indexes for InnoDB tables are stored together in a "tablespace" file, which is by default located in the datadir and it is called "ibdata1".

There are of course quite a few options available to control the name, location, and size of the tablespace file (see [dev.mysql.com]), add supplementary tablespace files (see [dev.mysql.com]), and also options to store data for InnoDB tables in a file per table (see [dev.mysql.com]).

But the default setup is to store all InnoDB tables for all databases under the current MySQL instance in this single shared file.

Te dejo esto para que te ilustre mas  :drinks:
Título: Re: MySQL 5 y Bases de Datos
Publicado por: NoeL en noviembre 15, 2006, 09:53:58 am
No viejo no te compliques la vida, te explico como esta el asunto

MySql trabaja con tres tipos de archivos como ya te explicaron: (*.frm, *.MYD, y *.MYI)

si lo que quieres hacer es respaldar tu data de Mysql lo unico que debes hacer es respaldar esos archivos, o en todo caso mysql crea una carpeta por cada base de datos que se llama justamente como la base de datos por ejemplo: dtbejemplo, solo copia esa carpeta y eso es todo no pierdes datos, eso si esta forma de respaldo solo se recomienda si no se están haciendo transacciones de información en la base de datos
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 09:54:42 am
ok. Gracias a todos  :drinks:
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 09:59:08 am
No viejo no te compliques la vida, te explico como esta el asunto

MySql trabaja con tres tipos de archivos como ya te explicaron: (*.frm, *.MYD, y *.MYI)

si lo que quieres hacer es respaldar tu data de Mysql lo unico que debes hacer es respaldar esos archivos, o en todo caso mysql crea una carpeta por cada base de datos que se llama justamente como la base de datos por ejemplo: dtbejemplo, solo copia esa carpeta y eso es todo no pierdes datos, eso si esta forma de respaldo solo se recomienda si no se están haciendo transacciones de información en la base de datos

Noel... lastimosamente no se recomienda.... El problema es sobre todo con los motores... imaginate que de la versión 5.0.1 a la versión 5.0.2 hubo un pequeño cambio en el motor InnoDB que hace que el formato de los frm cambie un poquito nada mas. El problema va a ser que a la hora de que mysql trate de cargar los datos se va a encontrar con un formato binario diferente, aunque la diferencia sea bastante leve corres siempre el riesgo de perder datos.

Si las versiones de MySQL son las mismas no hay problema, podes copiar los archivos para hacer backup, pero si son diferentes, lo más recomendable es usar el mysqldump.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: NoeL en noviembre 15, 2006, 10:03:37 am
No viejo no te compliques la vida, te explico como esta el asunto

MySql trabaja con tres tipos de archivos como ya te explicaron: (*.frm, *.MYD, y *.MYI)

si lo que quieres hacer es respaldar tu data de Mysql lo unico que debes hacer es respaldar esos archivos, o en todo caso mysql crea una carpeta por cada base de datos que se llama justamente como la base de datos por ejemplo: dtbejemplo, solo copia esa carpeta y eso es todo no pierdes datos, eso si esta forma de respaldo solo se recomienda si no se están haciendo transacciones de información en la base de datos

Noel... lastimosamente no se recomienda.... El problema es sobre todo con los motores... imaginate que de la versión 5.0.1 a la versión 5.0.2 hubo un pequeño cambio en el motor InnoDB que hace que el formato de los frm cambie un poquito nada mas. El problema va a ser que a la hora de que mysql trate de cargar los datos se va a encontrar con un formato binario diferente, aunque la diferencia sea bastante leve corres siempre el riesgo de perder datos.

Si las versiones de MySQL son las mismas no hay problema, podes copiar los archivos para hacer backup, pero si son diferentes, lo más recomendable es usar el mysqldump.

Pero no veo en ninguna parte donde el amigo diga que va a cambiar la version de su mysql, simplemente esta hablando de resguardar su informacion, por otro lado puedo a apostar con vos acerca de ese cambio del que hablas y se que no habria ningun problema lo digo por que yo lo he hecho sin ningun inconveniente

Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 10:08:43 am
Pero no veo en ninguna parte donde el amigo diga que va a cambiar la version de su mysql, simplemente esta hablando de resguardar su informacion, por otro lado puedo a apostar con vos acerca de ese cambio del que hablas y se que no habria ningun problema lo digo por que yo lo he hecho sin ningun inconveniente

No he dicho que no se pueda, simplemente no es recomendable sobre todo entre diferentes versiones, por ejemplo de mysql4 a mysql5.

Con el mysqldump y el archivo SQL te aseguras de que la base de datos de backup sea recreada según defina el motor de almacenamiento de la base de datos destino a la cual estas copiando.

Haciendo el backup de ficheros no garantizas la integridad del formato entre versiones. Y la verdad, es que tampoco dice si las versiones de mysql que va a usar son diferentes, lo cual podría ser un problema copiando unicamente los datos binarios, así que bueno jejeje es mejor prevenir que lamentar :P
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 10:11:15 am
vean en realidad lo que pensaba hacer es lo siguiente y aunque coninsido con NOEL en cuanto a esa practica.. pensaba tomar en cuenta las opiniones de mx y rdog. Pero vean mi situacion es la siguiente.

tengo istalada la version 5 de my sql, le dije que la base de datos la guardara en D:.. sin embargo la carpeta de las bases de datos estan en C: pero pesan poquito por eso intuyo que mis datos si estan en D:... ahora lo que necesito es formatear mi maquina y volver a instalar todo.. y cuando me vuelva a preguntar donde quiero guardar mi base de datos pensaba vol ver a decirle que en D: y asi asunto arreglado volveria a ver mi base de datos nuevamente pero me entra la duda porque veo que los nombres de las tablas estan en C y no en d:... ahora diganme algo... donde diablos se guardan en realidad los datos en los FRM? o en donde?
Título: Re: MySQL 5 y Bases de Datos
Publicado por: rdoggsv en noviembre 15, 2006, 10:14:19 am
ya arriba te puse la explicacion la leistes o te saltastes esa respuesta ??

yo te recomendaria al igual que mx hacer el mysqldump , si ya te dan una herramienta para hacer la migracion no hay porque complicarse la vida y esperar que mysql sea suficiente flexible como para entender que le sobrrescribis los datos y los reconozca de un solo.

La manera segura es mysqldump y no te va a fallar , la manera de prueba y error es copiar las carpetas, que preferis seguro o flexible ?  :roll:
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 10:20:05 am
vean en realidad lo que pensaba hacer es lo siguiente y aunque coninsido con NOEL en cuanto a esa practica.. pensaba tomar en cuenta las opiniones de mx y rdog. Pero vean mi situacion es la siguiente.

tengo istalada la version 5 de my sql, le dije que la base de datos la guardara en D:.. sin embargo la carpeta de las bases de datos estan en C: pero pesan poquito por eso intuyo que mis datos si estan en D:... ahora lo que necesito es formatear mi maquina y volver a instalar todo.. y cuando me vuelva a preguntar donde quiero guardar mi base de datos pensaba vol ver a decirle que en D: y asi asunto arreglado volveria a ver mi base de datos nuevamente pero me entra la duda porque veo que los nombres de las tablas estan en C y no en d:... ahora diganme algo... donde diablos se guardan en realidad los datos en los FRM? o en donde?

Fijate que se puede hacer como tu dices, solo asegurate de instalar la misma versión de MySQL, solo necesitas copiar el datadir.

Pero ojo, antes de hacerlo saca un backup con mysqldump... así si algo sale mal siempre vas a poder restaurar los datos.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 10:20:59 am
no me mal entiendan, en realidad mi problema no es hacer la practica menos recomendable o no.. mi dilema es.. "como diablos guarda los datos my sql... " si los guarda donde estan las carpetas con el nombre de cada base de datos o donde.. porque yo tengo unas bases de datos que se le facilitaron a NOEL que pesan mas de 2gigas y en la carpeta que por cierto se llama DATAS.. tengo consulta1.frm que pesa 64kb tengo consulta2.frm que pesa 38kb y esas dos tablas corresponden a 3 millones y pico de personas... es decir.. donde en realidad estan mis datos ese es mi dilema porque yo puedo ver y consultar desde my sql y funciona pero no tengo conciencia real en donde en realidad estan mis datos y lo unico que quiero entender es como funciona MySQL encuanto al alojamiento de la data. partiendo de que me da aelegir donde quiero yo almacenar pero donde dije que queria almacenar solo hay un archivo extraño y la estructura de mi base esta en C: pero veo que pesa poquito
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 10:23:13 am
no me mal entiendan, en realidad mi problema no es hacer la practica menos recomendable o no.. mi dilema es.. "como diablos guarda los datos my sql... " si los guarda donde estan las carpetas con el nombre de cada base de datos o donde.. porque yo tengo unas bases de datos que se le facilitaron a NOEL que pesan mas de 2gigas y en la carpeta que por cierto se llama DATAS.. tengo consulta1.frm que pesa 64kb tengo consulta2.frm que pesa 38kb y esas dos tablas corresponden a 3 millones y pico de personas... es decir.. donde en realidad estan mis datos ese es mi dilema porque yo puedo ver y consultar desde my sql y funciona pero no tengo conciencia real en donde en realidad estan mis datos y lo unico que quiero entender es como funciona MySQL encuanto al alojamiento de la data. partiendo de que me da aelegir donde quiero yo almacenar pero donde dije que queria almacenar solo hay un archivo extraño y la estructura de mi base esta en C: pero veo que pesa poquito

¿Que tipo de tabla es?

Fijate que al menos las tablas InnoDB se les puede especificar en el my.cnf en donde guardar los datos.

Tenes el archivo de configuración por ahí talvez ahi podemos encontrar la respuesta.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 10:26:20 am
a que te referis con que tipo de tabla es??
Título: Re: MySQL 5 y Bases de Datos
Publicado por: NoeL en noviembre 15, 2006, 10:29:08 am
vean en realidad lo que pensaba hacer es lo siguiente y aunque coninsido con NOEL en cuanto a esa practica.. pensaba tomar en cuenta las opiniones de mx y rdog. Pero vean mi situacion es la siguiente.

tengo istalada la version 5 de my sql, le dije que la base de datos la guardara en D:.. sin embargo la carpeta de las bases de datos estan en C: pero pesan poquito por eso intuyo que mis datos si estan en D:... ahora lo que necesito es formatear mi maquina y volver a instalar todo.. y cuando me vuelva a preguntar donde quiero guardar mi base de datos pensaba vol ver a decirle que en D: y asi asunto arreglado volveria a ver mi base de datos nuevamente pero me entra la duda porque veo que los nombres de las tablas estan en C y no en d:... ahora diganme algo... donde diablos se guardan en realidad los datos en los FRM? o en donde?

Los FRM son las estructuras o sea la definicion de formatos, los MYD guardan los datos fisicos, y los MYI los Indices

Pero no veo en ninguna parte donde el amigo diga que va a cambiar la version de su mysql, simplemente esta hablando de resguardar su informacion, por otro lado puedo a apostar con vos acerca de ese cambio del que hablas y se que no habria ningun problema lo digo por que yo lo he hecho sin ningun inconveniente

No he dicho que no se pueda, simplemente no es recomendable sobre todo entre diferentes versiones, por ejemplo de mysql4 a mysql5.

Con el mysqldump y el archivo SQL te aseguras de que la base de datos de backup sea recreada según defina el motor de almacenamiento de la base de datos destino a la cual estas copiando.

Haciendo el backup de ficheros no garantizas la integridad del formato entre versiones. Y la verdad, es que tampoco dice si las versiones de mysql que va a usar son diferentes, lo cual podría ser un problema copiando unicamente los datos binarios, así que bueno jejeje es mejor prevenir que lamentar :P

El motor InnoDB es bastante problematico aunque te dire que ademas del mysqldump existe otro metodo que se llama mysqlhotcopy que utiliza exaxtamente el metodo de copiado de los archivos
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 10:31:34 am
a que te referis con que tipo de tabla es??

Las tablas pueden ser creadas por diferentes "motores", el motor es como el plugin de la base de datos que se encarga de manejar toda la información de la misma.

En MySQL podes configurar el comportamiento de cada motor de manera individual, de tal manera que aunque el directorio de datos por defecto sea por ejemplo D:\Data, para las tablas que sean de tipo InnoDB el almacenamiento estara en C:\Data.

Buscate el archivo my.cnf y revisate las opciones de configuración, muy seguramente ahi esta especificado el directorio donde se estan guardando los datos, y puede que alguna configuracion este apuntando a otro lado y es por esa razon por la cual no encontras toda la información en el directorio de datos.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 10:35:41 am
que mal... no pude encontrar ese archivo
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 10:37:11 am
que mal... no pude encontrar ese archivo

Buscalo entonces por my.ini
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 10:42:32 am
que mal... no pude encontrar ese archivo

Buscalo entonces por my.ini

tampoco lo encuentro
Título: Re: MySQL 5 y Bases de Datos
Publicado por: mxgxw en noviembre 15, 2006, 11:01:24 am
que mal... no pude encontrar ese archivo

Buscalo entonces por my.ini

tampoco lo encuentro

Y como instalaste el MySQL, a mano o con el asistente de configuración.

Si fué con el asistente de configuración las tablas por defecto son InnoDB, y si no encontras el archivo my.ini, seguramente MySQL esta utilizando las opciones por defecto y estas guardan los datos en el mismo directorio de instalación de MySQL. Revisate dentro del directorio a ver si encontras los datos.
Título: Re: MySQL 5 y Bases de Datos
Publicado por: spawnri en noviembre 15, 2006, 11:11:55 am
lo hice con el asistente... pero hare lo que me decis