Como actualizar de MySQL 5.0 a MySQL 5.1
MySQL 5.1 incluye nuevas funcionalidades como el event scheduler o las tablas particionadas, por lo que es una buena idea actualizar a esta versión. Veremos cómo hacerlo desde MySQL 5.0 a MySQL 5.1.
Primero de todo, como medida de seguridad, deberíamos realizar un backup de los datos, por ejemplo mediante mysqldump:
$ mysqldump --password='s3cr3t//p4ssw0rd' --all-databases --routines --opt --force | gzip -9 >/var/backup/backup.mysql.percona.51.sql
Evidentemente, si tenemos alguna tabla con problemas, tenemos que hacer el repair table antes de todo.
Seguimos con un mysqlcheck con la opción –check-upgrade de acuerdo con el procedimiento de actualización que nos ofrece la documentación de MySQL.
$ mysqlcheck --check-upgrade --all-databases --auto-repair -p smf.smf_attachments OK smf.smf_ban_groups OK smf.smf_ban_items OK smf.smf_board_permissions OK smf.smf_boards OK smf.smf_calendar OK smf.smf_calendar_holidays OK smf.smf_categories OK smf.smf_collapsed_categories OK smf.smf_log_actions OK smf.smf_log_activity OK (...)
Seguimos con mysql_fix_privilege_tables. De acuerdo con la documentación, no es necesario para versiones superiores de 5.0.10, pero no estropeará nada si lo hacemos igualmente.
$ mysql_fix_privilege_tables --password='s3cr3t//p4ssw0rd' This script updates all the mysql privilege tables to be usable by the current version of MySQL done
Ahora, ya podemos hacer el configure, para ello habilitaremos el soporte para InnoDB y tablas particionadas (no defecto no están habilitados) mediante la opción –with-plugins:
$ ./configure --prefix=/usr/local/mysql51 --exec-prefix=/usr/local/mysql51 --with-plugins=innobase,partition --enable-assembler --with-mysqld-ldflags=-all-static --with-big-tables --with-pthread (...) MySQL has a Web site at http://www.mysql.com/ which carries details on the latest release, upcoming features, and other information to make your work or play with MySQL more productive. There you can also find information about mailing lists for MySQL discussion. Remember to check the platform specific part of the reference manual for hints about installing MySQL on your platform. Also have a look at the files in the Docs directory. Thank you for choosing MySQL!
Compilamos el código y lo instalamos en su sitio:
# make && make install
Una vez finalizado el proceso, arrancamos el nuevo MySQL con el datadir anterior:
# pkill mysqld # cd /usr/local/mysql51; bin/mysqld_safe --user=mysql --datadir=/var/mysql &
Tambien debemos modificar el PATH en /etc/profile para assegurarnos que usamos los nuevos binarios y modificamos el path con las librerias del MySQL en el fichero /etc/ld.so.conf.d/mysq.conf con:
/usr/local/mysql51/lib/mysql
A continuación ejecutamos ldconfig y recargamos el profile:
# ldconfig # . /etc/profile
Ya tenemos actualizado el MySQL:
$ mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.30 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show variables like '%partitio%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | have_partitioning | YES | +-------------------+-------+ 1 row in set (0.00 sec) mysql> show engines; +------------+---------+------------------------------------------------------------+--------------+-----+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +------------+---------+------------------------------------------------------------+--------------+-----+------------+ | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | +------------+---------+------------------------------------------------------------+--------------+-----+------------+ 5 rows in set (0.00 sec) mysql>
En el caso de que tengamos replicación deberemos assegurarnos que todos los slaves tengan la misma versión.
Relacionados
Imprimir
23. December 2009 at 11:36 pm :
Saludos… vaya interesante sitio el tuyo… se te felicita.
He buscado en vano información sobre actualizar de MySQL 5.0 –> 5.1 y nada… a excepción clara de este howto. (Incluso el manual de referencia de sun no me indica los pasos claros para hacer el upgrade)
Veo que estás instalando desde el código fuente…
En mi caso tengo dudas porque tengo el siguiente escenario:
MySQL Ver. 5.0.45 que se instaló junto al OS Fedora 8. Ahora quiero actualizar a MySQL 5.1.30.
Al parecer ya no tengo actualización de paquetes para mi distro Fedora 8.
Debo hacerlo descargando el paquete desde el sitio de sun??
Muchísimas gracias por tu posible respuesta.
24. December 2009 at 8:04 am :
Hola Fliux,
Primero de todos muchas gracias.
Sobre la actualización de MySQL desde paquetes es exactamente lo mismo, simplemente deberas cambiar el “configure, make, make install” por la actualización del paquete.
En tu caso si no quieres compilar puedes eliminar el paquete del sistema (si lo tienes instalado así) sin borrar los binarios:
Y luego instalar el MySQL 5.1 del rpm de Sun:
Si anteriormente ya tenias el rpm de Sun, simplemente con el rpm -Uvh tienes suficiente.
saludos,
24. December 2009 at 6:54 pm :
Hola Jordi,
Muchas gracias por tu pronta y oportuna ayuda.
No tengo instalado el paquete así. (No usé el comando “rpm”)
Mi actual MySQL (Ver. 5.0.45) lo instalé desde el repositorio de Fedora 8 al momento de instalar el propio sistema. Los repositorios de Fedora ya no proveen actualizaciones para Fedora 8. La info. de este paquete que tengo instalado es:
———————————————————————————————————————
$ sudo yum info mysql
Contraseña:
Installed Packages
Name : mysql
Arch : i386
Version : 5.0.45
Release : 6.fc8
Size : 3.7 M
Repo : installed
Summary : Bibliotecas compartidas y programa cliente para MySQL
URL : http://www.mysql.com
License : GPLv2 with exceptions
Description: MySQL is a multi-user, multi-threaded SQL database server. MySQL is a client/server implementation consisting of a server daemon (mysqld) and many different client programs and libraries. The base package contains the standard MySQL client programs and generic MySQL files.
$ sudo yum check-update
Contraseña:
<> <========= Ya no hay actualizaciones disponibles para Fedora 8.
———————————————————————————————————————
Ahora, supongo que tengo que eliminar el paquete ‘mysql’ y sus dependencias usando el gestor de paquetes “yum” de fedora; digo que podría ser como sigue:
$ sudo yum remove mysql
Pero mis dudas al proceder así es: ¿con esto también se borran los binarios del MySQL que tengo instalado actualmente?
De ser así, ¿tendré problemas para luego instalar el rpm de Sun que tu me dices?
Otra vez, mil gracias por tu valiosa colaboración.
También, quiero aprovechar la oportunidad para desearte lo mejor en esta Navidad y para el próximo año 2010.
28. December 2009 at 12:13 pm :
Mejor no lo hagas con el yum que suele romper más que arreglar. Con el comando que te comentava:
Borras de la base de datos de paquetes, pero no los binarios del sistema. En tu caso estas substituyendo un MySQL compilado “a la Fedora” por uno compilado “a la Sun”. Como las cosas pueden tenerlas diferentes (tema paths por defecto) Andate con cuidado y pruebalo primero en un entorno de pruebas, no es lo mismo que una “actualización más”
12. January 2010 at 6:15 pm :
Hola Jordi,
Gracias por contestar…
Sigo tus pasos para intentar actualizar (upgrade) mi MySql, pero me he topado con lo siguiente…
1o. Al parecer borré los binarios satisfactoriamente:
$ sudo rpm -e –justdb –nodeps mysql
2o. Luego, intento actualizar con el comando siguiente y me da conflicots:
$ sudo rpm -Uvh MySQL-server-community-5.1.42-0.rhel5.i386.rpm
Preparando… ########################################### [100%]
el archivo /etc/my.cnf de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/charsets/Index.xml de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/charsets/README de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/charsets/ascii.xml de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/charsets/cp1250.xml de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/czech/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/danish/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/dutch/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/english/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/estonian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/french/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/german/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/greek/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/hungarian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/italian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/japanese/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/korean/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/norwegian-ny/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/norwegian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/polish/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/portuguese/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/romanian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/russian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/serbian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/slovak/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/spanish/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/swedish/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
el archivo /usr/share/mysql/ukrainian/errmsg.sys de la instalación de MySQL-server-community-5.1.42-0.rhel5.i386 entra en conflicto con el archivo del paquete mysql-libs-5.0.45-6.fc8.i386
La verdad, soy nuevo en mysql y me he bloqueado… como siempre agradaceré mucho tu ayuda.
12. January 2010 at 6:52 pm :
Hola otra vez Jordi,
¿Funcionaría alguno de los siguientes comandos?
$ sudo rpm -e –justdb –nodeps mysql-libso
$ sudo rpm -e –nodeps mysql-libsGraciasss!
13. January 2010 at 9:18 am :
Para esto mejor abre un tema en el foro y adjunta el resultado de los siguientes comandos:
Y:
La idea sería hacer un backup de los ficheros que generan conflicto y substituirlos con un force en el rpm, ya que los dos binarios usan paths comunes.
saludos,
13. January 2010 at 3:34 pm :
Muchas gracias por tu valiosa ayuda.
27. February 2010 at 1:43 am :
Algo tarde pero me parece que se estan haciendo demasiado lio sin motivo.
Si bien no conozco demasiado sobre Fedora 8, en CentOS 5 si esta instalado alguno de los paquetes mysql-* (los oficiales) simplemente te bajas los de Sun que correspondan a los que tienes instalados y ejecutas (asumiendo que los que vas a instalar son una version mas nueva que la que tienes):
rpm -Uvh –test MySQL-*.rpm
Si no te arroja errores, lo ejecutas nuevamente sin el –test.
Vale la aclaracion que el resto de los pasos mencionados en el articulo siguen siendo validos y probablemente requeridos.
Saludos.
3. March 2010 at 11:59 am :
El tema era que se pisan en los charsets, si te cargas alguno el MySQL no arranca. Los errmsg me preocupan menos porque siempre se puede usar el de ingles para todos.
Como los rpms són diferentes la actualización de unos a otros no es trivial y debemos siempre mantener la opción de “rollback” por eso comento lo de instalarlo en slot