systemadmin.es > DBA > Actualización de MySQL 5.1 a 5.5 desde paquetes community

Actualización de MySQL 5.1 a 5.5 desde paquetes community

En el caso que necesitemos hacer una actualización desde los paquetes community de MySQL nos encontraremos que no podemos simplemente actualizarlos. Vamos a ver los pasos:

Primero deberemos parar el MySQL limpiamente (evidentemente, necesitaremos backups por si algo sale mal):

/etc/init.d/mysql stop

Si intentamos hacer la actualización directamente veremos que no nos deja:

# ls
MySQL-client-5.5.37-1.rhel5.x86_64.rpm  MySQL-server-5.5.37-1.rhel5.x86_64.rpm  MySQL-shared-5.5.37-1.rhel5.x86_64.rpm
# rpm -Uvh MySQL-*
Preparing...                ########################################### [100%]
Repackaging...              
   1:MySQL-client-community #   1:MySQL-server-community ########################################### [ 33%]
   2:MySQL-shared-community ########################################### [ 67%]
Upgrading...                
   1:MySQL-client           ########################################### [ 33%]

******************************************************************
A MySQL server package (MySQL-server-community-5.1.71-1.rhel5) is installed.

Upgrading directly from MySQL 5.1 to MySQL 5.5 may not
be safe in all cases.  A manual dump and restore using mysqldump is
recommended.  It is important to review the MySQL manual's Upgrading
section for version-specific incompatibilities.

A manual upgrade is required.

- Ensure that you have a complete, working backup of your data and my.cnf
  files
- Shut down the MySQL server cleanly
- Remove the existing MySQL packages.  Usually this command will
  list the packages you should remove:
  rpm -qa | grep -i '^mysql-'

  You may choose to use 'rpm --nodeps -ev <package-name>' to remove
  the package which contains the mysqlclient shared library.  The
  library will be reinstalled by the MySQL-shared-compat package.
- Install the new MySQL packages supplied by Oracle and/or its affiliates
- Ensure that the MySQL server is started
- Run the 'mysql_upgrade' program

This is a brief description of the upgrade process.  Important details
can be found in the MySQL manual, in the Upgrading section.
******************************************************************
error: %pre(MySQL-server-5.5.37-1.rhel5.x86_64) scriptlet failed, exit status 1
error:   install: %pre scriptlet failed (2), skipping MySQL-server-5.5.37-1.rhel5
   2:MySQL-shared           ########################################### [ 67%]

En su lugar deberemos eliminar primero los paquetes de la versión 5.1 para luego instalar los de la versión 5.5:

# rpm -e MySQL-shared-5.1.71-1.rhel5 MySQL-client-5.1.71-1.rhel5 MySQL-server-community-5.1.71-1.rhel5
# rpm -Uvh MySQL-*
Preparing...                ########################################### [100%]
   1:MySQL-shared           ########################################### [ 33%]
   2:MySQL-client           ########################################### [ 67%]
   3:MySQL-server           ########################################### [100%]

Podremos arrancar el MySQL inicialmente:

/etc/init.d/mysql start

Pero veremos en el log de error del MySQL que las tablas del sistema tienen una estructura diferente de la que espera el MySQL 5.5:

140807 19:10:58 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
(...)
140807 19:10:58 [Note] Event Scheduler: Loaded 0 events
140807 19:10:58 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.37-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)

Por lo que deberemos ejecutar el mysql_upgrade:

# mysql_upgrade -u root 
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' 
Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/var/run/mysqld/mysqld.sock' 
allfuckersdb.table1                                OK
allfuckersdb.table2                                OK
(...)
Running 'mysql_fix_privilege_tables'...
OK

Finalmente únicamente nos quedará reiniciar el MySQL y verificar que ya no se produce el error en el log:

/etc/init.d/mysql restart

Deja un comentario:

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