Publicado en Guías, Manuales y Tutoriales, Software, Testeo, Trabajo

Diferentes versiones de Mysql en un mismo equipo

mysql

Normalmente cuando se requiere un servidor de base de datos gratuito y de uso extendido pensamos en MySQL, pero ¿que pasa cuando una aplicación por cuestiones de compatibilidad no puede ejecutarse en las versiones más nuevas?

Eso es lo que ocurrió en un proyecto que se esta llevando a cabo, primero intentamos hacer correr la aplicación en realidad montar la BD (de una versión 4.0.12) en la versión 5.0.5 de Mysql pero debido a la gran cantidad de cambios no fue posible, de hecho se cambio la contraseña para adecuarla a la versión 4.0.12 pero solamente hasta ahí llegamos.

En ese punto me pone a pensar en el poco compromiso que tienen algunas compañías en ofrecer un producto cada vez mejor, es decir, el soporte de la versión 4 de Mysql ya acabo y lo de menos sería entender que están utilizando la versión 4.1 en el programa pero no es una versión más anterior. Pero ni hablar que acá se buscan soluciones y no culpables =P

Para hacer trabajar 2 versiones de Mysql solo necesitamos leer un poco en la documentación y listo, a continuación solo les proporcionare la forma en que se implemento en el proyecto pero existen variantes interesantes que pueden ser de más utilidad.

Enlaces utilizados

2.3 Instalar Mysql en Windows, pasando por todos los temas y subtemas.

No es indispensable la lectura de todo pero ayuda a comprender el funcionamiento.

5.11 Ejecutar más de un servidor MySQL en la misma máquina, pasando por todos los temas y subtemas.

Recomendación:

No se debería agregar el directorio bin de MySQL al PATH de Windows si se están ejecutando múltiples servidores MySQL en el mismo ordenador. Para comprobar esto consulte el enlace al tema 2.3.12. En caso de omitir este paso y el directorio bin de mysql se encuentra en el path el segundo mysql no trabajará.

Ya que los programas cliente y utilidades de Mysql no pueden localizar el archivo my.ini (configuración) y se intenta cargar desde el directorio de Windows. Si lo encuentra la configuración de ese archivo se utiliza para todas las versiones instaladas, en este caso como las versiones son 4 y 5 ocurre un error ante las diferencias.

NOTA: Estos pasos son solo una sugerencia, no me hago responsable de los errores que se puedan originar del mismo. Se probo en 2 versiones de Windows (XP Professional y 2003 Server Business) con una instalación previa y funcional de mysql 4.0.12. La información que muestro corresponde a una configuración, y por lo tanto se debe entender que solo una pequeña muestra de lo que se puede realizar con los archivos de configuración y comandos de mysql.

Instalación:

El tipo de instalación elegida fue por un archivo ZIP por hacer más sencillo (a mí parecer) el proceso.

Una vez que se ha descargado la versión se descomprime y se crea una carpeta, para este caso el nombre a utilizar será (Mysql5) y se ubicará en C:\.

La otra versión también se encuentra en C:\ hasta este paso debemos de tener 2 carpetas con mysql.

C:\

|_ mysql

|_ mysql5

Cada una con sus respectivos subdirectorios y bases de datos. Lo siguiente debería ser la instalación con la instrucción C:\mysql5\bin>mysqld -install desde la línea de comandos, sin embargo aunque se instale se obtendría un error al intentar ejecutarlo. De hecho lo más seguro es que generé un error al intentar instalarlo como un servicio si ya existe otra versión instalada. Más abajo se comenta el porque de esta situación.

Archivo de Configuración:

Las opciones por default son leídas de los siguientes archivos y en el siguiente orden:

C:\my.ini C:\my.cnf C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\Archivos de programa\
MySQL\MySQL Server 5.0\my.ini C:\Archivos de programa\MySQL\MySQL Server 5.0\my.
cnf

En nuestro caso la ruta C:\Archivos de programa\MySQL\MySQL Server 5.0 se convierte a C:\mysql5, como se menciono en la recomendación al inicio en el path de windows no debe agregar la ruta de mysql, ¿pero entonces como le indicamos la configuración al nuevo mysql?

En la carpeta mysql5 encontraremos diferentes archivos INI (configuración), tomaremos el más simple (my.ini) y le haremos los cambios necesarios. Por default el servidor de mysql se instala como servicio con el nombre MySQL y en el puerto 3306, por lo tanto el nuevo mysql debe tener otro nombre y puerto para este ejemplo quedará con el nombre MySQL5 y el puerto 3307. Si no se cambian los valores se obtendrá un error o comportamiento anormal.

Además es necesario cambiar la ruta del servidor de base de datos y el directorio de los datos. El basedir y datadir respectivamente,

  • El primero quedaría: basedir= C:/mysql5
  • El segundo sería: datadir= C:/mysql5/data

A continuación lo guardaremos con otro nombre, para este ejemplo el nombre será my5.ini, en la misma carpeta C:\mysql5

El inicio (ejecución) de mysql puede ser desde la línea de comandos (ver 5.11.1.2) o como un servicio (ver 5.11.1.2) en este caso se instalo y se inicio como un servicio con la instrucción:

C:\mysql5\bin>mysqld –install MySQL5 –defaults-file=C:\mysql5\my5.ini.

Donde la instrucción –install le indica el nombre del servicio que tomará, además omite la lectura del archivo de opciones por default, donde el nombre es mysqld. Ver  5.11.1.2 para más detalles.

Mientras que la instrucción –defaults-file= Obliga  a leer las opciones por default del archivo dado en este caso my5.ini.

Ahora solo falta reiniciar (es Windows xDD) y listo. Las dos versiones de Mysql trabajarán sin problemas, existen configuraciones del archivo INI que permiten trabajar con diferentes versiones y los mismos datos pero eso queda fuera de esta guía, además que no es nada aconsejable.

Si te sirvió deja un comentario 😀 si lo quieres compartir solo cita la fuente o sea este blog 😉

Fuente: Mysql.

Imagen: http://www.lnds.net/images/

Un comentario sobre “Diferentes versiones de Mysql en un mismo equipo

  1. Esta bueno intentare probarlo en una Maquina Virtual donde tengo XP, pero ademas quisiera conocer como instalar varias versiones/instancias pero en OS Linux, si tengo algo les aviso… ademas quisiera hacerlo con PHP y Apache.

    Si tienes razón hay que leer mucho.

    Saludos.

Deja un comentario