systemadmin.es » DBA » Como actualizar de MySQL 5.0 a MySQL 5.1

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 Imprimir

10 comments to “Como actualizar de MySQL 5.0 a MySQL 5.1”

  1. 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.

  2. 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:

    rpm -e --justdb
    

    Y luego instalar el MySQL 5.1 del rpm de Sun:

    rpm -Uvh
    

    Si anteriormente ya tenias el rpm de Sun, simplemente con el rpm -Uvh tienes suficiente.

    saludos,

  3. 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.

  4. Mejor no lo hagas con el yum que suele romper más que arreglar. Con el comando que te comentava:

    rpm -e --justdb
    

    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”

  5. 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.

  6. Hola otra vez Jordi,

    ¿Funcionaría alguno de los siguientes comandos?

    $ sudo rpm -e –justdb –nodeps mysql-libs

    o

    $ sudo rpm -e –nodeps mysql-libs

    Graciasss!

  7. Para esto mejor abre un tema en el foro y adjunta el resultado de los siguientes comandos:

    rpm -ql mysql-libs
    

    Y:

    rpm -ql -p MySQL-server-community-5.1.42-0.rhel5.i386.rpm
    

    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,

  8. Muchas gracias por tu valiosa ayuda.

  9. 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.

  10. 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

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>