Несмотря на то, что на дворе 2013 год и в релизах уже давно можно найти mysql 5.6, cо стандартным дистрибутивом CentOS 6.4 все еще идет старый добрый mysql 5.1.
Поэтому будем обновляться для начала до версии mysql 5.5, основное преимущество которой: «Улучшение производительности и масштабируемости (по сравнению с веткой MySQL 5.1 производительность смешанных операций записи/чтения возросла в 3.6 раза, а операций только чтения — в 2 раза);»
Для интересующихся полный список доступен на opennet.ru.
- Для начала проверим какая версия 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
- Устанавливаем remi:
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
- Проверяем успешность установки, выводом доступных пакетов:
[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 ветки.
- Делаем бекапы баз (по желанию, но я бы рекомендовал не пропускать данный пункт, чтобы не было мучительно больно за потерянные данные) и устанавливаем обновления:
[root@host ~]# yum --enablerepo=remi update mysql*
- После успешной установки обновлений, делаем рестарт демона и наслаждаемся новой версией 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