Linux: Обновляем mysql до версии 5.5

two10

Несмотря на то, что на дворе 2013 год и в релизах уже давно можно найти mysql 5.6, cо стандартным дистрибутивом CentOS 6.4 все еще идет старый добрый mysql 5.1.

Поэтому будем обновляться для начала до версии mysql 5.5, основное преимущество которой: «Улучшение производительности и масштабируемости (по сравнению с веткой MySQL 5.1 производительность смешанных операций записи/чтения возросла в 3.6 раза, а операций только чтения — в 2 раза);»
Для интересующихся полный список доступен на opennet.ru.

  1. Для начала проверим какая версия mysql установлена у нас:
    [host]# mysql -V
    mysql  Ver 14.14 Distrib 5.5.31, for Linux (i686) using readline 5.1
    
    rpm -qa | grep mysql
    mysql-5.1.69-1.el6_4.x86_64
    mysql-devel-5.1.69-1.el6_4.x86_64
    mysql-server-5.1.69-1.el6_4.x86_64
    mysql-libs-5.1.69-1.el6_4.x86_64
  2. Устанавливаем remi:
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
  3. Проверяем успешность установки, выводом доступных пакетов:
    [root@sigma ~]# yum --enablerepo=remi list mysql mysql-server
    
    mysql.x86_64                                               5.1.69-1.el6_4                                            @updates
    mysql-server.x86_64                                        5.1.69-1.el6_4                                            @updates
    Available Packages
    mysql.x86_64                                               5.5.34-1.el6.remi                                         remi
    mysql-server.x86_64                                        5.5.34-1.el6.remi                                         remi

    Если мы сделали все верно, то увидим пакеты из 5.5 ветки.

  4. Делаем бекапы баз (по желанию, но я бы рекомендовал не пропускать данный пункт, чтобы не было мучительно больно за потерянные данные) и устанавливаем обновления:
    [root@host ~]# yum --enablerepo=remi update mysql*
  5. После успешной установки обновлений, делаем рестарт демона и наслаждаемся новой версией mysql:
    [root@host ~]# service mysqld restart
    Stopping mysqld:                                           [  OK  ]
    Starting mysqld:                                           [  OK  ]
    
    [root@host ~]# mysql -V
    mysql  Ver 14.14 Distrib 5.5.34, for Linux (x86_64) using readline 5.1

Проблемы и их решения:
Основная часть проблем описана в мануале http://dev.mysql.com/doc/refman/5.5/en/upgrading-from-previous-series.html

Наиболее частые я продублирую у себя:
Возможно после обновления база будет отлично работать, однако в логах будут сообщения вида

131016 23:05:54 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
131016 23:05:54 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
131016 23:05:54 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
131016 23:05:54 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure

Лечение достаточно простое:

#Останавливаем базу и выполняем две команды
shell> mysqld --skip-grant-tables &
shell> mysql_upgrade
Вы можете оставить комментарий ниже.