Смена основной версии MySQL

Материал из ISPWiki
Перейти к: навигация, поиск

Все описанное в статье требуется делать с полным пониманием тех действий, которые вы совершаете, необходимо обладать определенными навыками системного администрирования.

Установка на чистый сервер.

Можно поменять версию MySQL, устанавливаемую по умолчанию при установке панели ISPmanager Lite. На чистую установку операционной системы подключить репозиторий с необходимой версией MySQL. На сайте Repo MySQL предоставляют пакеты rpm и deb, из которых производится установка репозитория. На сайте Repo MariaDB есть подробная информация по установке репозитория. Рассмотрим установку репозитория MySQL 5.7 на Centos 7 и MariaDB 10.1 на Debian 8, в качестве примера.

Установка репозитория MySQL 5.7 Centos 7

Необходимо скачать и установить rpm-файл.

cd /root/
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -i /root/mysql57-community-release-el7-9.noarch.rpm
yum makecache

После установки на сервере появится файл /etc/yum.repos.d/mysql-community.repo. Содержимое файла следующее:

# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

Если понадобится установка другой версии MySQL, то выбрать ее можно в этом файле (MySQL 5.5 - 5.7), для этого у необходимой версии нужно выставить параметр enabled=1, а у остальных enabled=0.

Установка репозитория MariaDB 10.1 на Debian 8

Подключение репозитория с MariaDB

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
add-apt-repository 'deb [arch=amd64,i386] http://lon1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main'
apt-get update

Альтернативным способом является добавление в файл /etc/apt/sources.list строк:

# http://downloads.mariadb.org/mariadb/repositories/
deb [arch=amd64,i386] http://lon1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main
deb-src http://lon1.mirrors.digitalocean.com/mariadb/repo/10.1/debian jessie main

После добавления строк требуется выполнить команду

apt-get update

После подключения репозитория установите MySQL сервер. Centos 6/7

yum install mysql

Debian/Ubuntu

apt-get install mariadb-server

Установку панели ISPmanager производите по инструкции Установка и обновление ISPmanager


Скрипт автоматизации добавления сервера БД в ISPmanager для Centos 7 и MySQL 5.7. Обратите внимание, что для генерации нового пароля используется утилита pwgen. Она устанавливается вместе с панелью.

#/bin/bash
systemctl start mysqld.service
#ищем временный пароль
OLDPASS=`grep 'temporary password' /var/log/mysqld.log | awk '{ print $NF }'`
#генерируем пароль
NEWPASS=`pwgen -1sy 12 1`
#меняем пароль
mysqladmin -u root -p$OLDPASS password $NEWPASS
#Создаем сервер баз данных в панели
/usr/local/mgr5/sbin/mgrctl -m ispmgr db.server.edit host=localhost name=MySQL5.7 username=root password=$NEWPASS sok=ok type=mysql
#отключаем политики для паролей
mysql -u root -p$NEWPASS << EOF
uninstall plugin validate_password;
EOF

Смена версии на сервере с ISPmanager

Обязательно перед всеми проводимыми работами необходимо сделать копию всех баз данных сервера. Удаляем MySQL-сервер из ISPmanager раздел Возможности. Этим действием мы удаляем пакет ispmanager-pkg-mysql. Подключаем репозиторий с необходимой нам версией #Установка репозитория MySQL 5.7 Centos 7#Установка репозитория MariaDB 10.1 на Debian 8

В случае, если требуется увеличить версию в рамках одной ветки с увеличением версии (MySQL От 5.5 до 5.7, MariaDB от 10.0 до 10.2), следует выполнить команду установки:


Centos 6/7

yum install mysql

Debian/Ubuntu

apt-get install mariadb-server

После этого необходимо запустить команду

mysql_upgrade

Если осуществляется переход на версию ниже или на другую ветку продукта (MySQL -> MariaDB). Удаляем существующий сервер MySQL, при удалении обязательно следите за зависимыми пакетами.


Centos 6/7

yum remove mysql

Debian/Ubuntu

apt-get remove mysql-server mysql-client

Если по зависимостям удаляются пакеты панели (кроме coremanager-mysql), то следует удалять такой пакет через менеджер пакетов. Посмотреть пакеты для удаления можно, так же через менеджер пакетов. Посмотреть название пакетов:


Centos 6/7

rpm -qa | grep mariadb

Debian/Ubuntu

dpkg -l | grep mysql

Удалить пакеты без зависимостей:


Centos 6/7

rpm -e --nodeps mysql-server

Debian/Ubuntu

dpkg --remove --force-depends mariadb-server

Необходимо удалить все пакеты связанные с текущим MySQL-сервером. Устанавливаем сервер MySQL:


Centos 6/7

yum install mysql

Debian/Ubuntu

apt-get install mariadb-server

Далее выполняем команду

mysql_upgrade

Необходимо обновить путь до mysqld. Актуальный путь до исполняемого файла можно получить командой:

[user@domain ~]# which mysqld
/usr/sbin/mysqld

Пропишем путь в файле /usr/local/mgr5/etc/ispmgr.conf.d/mysql.conf:

path mysqld /usr/sbin/mysqld

Устанавливаем в ISPmanager в разделе Возможности сервер MySQL. После установки ISPmanager/MySQL необходимо перейти в раздел Службы и проверить, что сервер MySQL запущен, если нет - то запустить его. Затем проверить раздел Серверы баз данных. Если там нет сервера баз данных, то его следует добавить. Для этого может потребоваться сбросить пароль пользователя root MySQL.

Servermysql.png

Сброс пароля root MySQL

Прописываем в файл /etc/my.cnf опцию skip-grant-tables Запускаем mysql-сервер

В Centos 6/Debian/Ubuntu:

/etc/init.d/mysql restart

В Centos 7:

systemctl restart mariadb

или

systemctl restart mysqld

Меняем пароль root

mysql
use mysql;
UPDATE user SET Password=PASSWORD("new_password") WHERE User='root';
FLUSH PRIVILEGES;

Если версия MySQL 5.7

mysql
use mysql;
UPDATE user SET authentication_string=PASSWORD("new_password") WHERE User='root';
FLUSH PRIVILEGES;

Убираем опцию skip-grant-tables из /etc/my.cnf, перезагружаем MySQL.

В Centos 6/Debian/Ubuntu:

/etc/init.d/mysql restart

В Centos 7:

systemctl restart mariadb

или

systemctl restart mysqld

Теперь с заданным паролем MySQL создайте сервер баз данных в ISPmanager. Если сервер есть, то в Серверы баз данных открываем сервер и нажимаем кнопку Ок, таким образом мы проверяем, что подключение к серверу продходит корректно. Проверьте в разделе базы данных, что БД на месте и вы можете ими управлять. Если Базы данных удалились, вам следует восстановить БД из бэкапа. Обратите внимание, что в разных версиях MySQL разная структура системных таблиц, например в MySQL 5.7 поле Password заменено на поле authentication_strings, поэтому в дампе БД , перед восстановлением, поля системных таблиц следует привести в соответствие или не восстанавливать их.

Возможные проблемы

В панели ISPmanager возникает ошибка “Со значение “NameServer” отсутствует”

Errorservername.png

В логах при этом ошибка такого типа:

ERROR Failed to load database driver library 'libmysql.so.5.83.0'. Error: libmysqlclient.so.18: cannot open shared object file: No such file or directory

Она означает, что в процессе установки/переустановки был утрачен пакет с библиотеками MySQL. Вам следует установить его, например для Centos 7 и MySQL 5.7 этот пакет носит следующее название mysql-community-libs-compat-5.7.16-1.el7.x86_64 Также при обновлении могут возникнуть проблемы из-за Roundcube и Afterlogic, поскольку они устанавливают свои mysql-пакеты.

Не отображаются настройки сервера баз данных

Если после обновления MySQL перестали отображаться настройки сервера баз данных, проблему можно решить создав симлинку:

ln -s /usr/sbin/mysqld /usr/libexec/mysqld

Связано это с тем что в новой версии MySQL используется другой путь до исполняемого файла "mysqld".