Linux

/
/
Обновление MySQL на AlmaLinux

Обновление MySQL на AlmaLinux

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

Внимание!

Предусмотрено обновление только с MySQL 8.0 до  MySQL 8.4 и только в стандартной конфигурации в ОС AlmaLinux 8 и 9.

Выполняя обновление СУБД по данной инструкции, вы должны понимать все действия и принимаете всю ответственность на себя!

Также крайне рекомендуется свериться с официальной документацией MySQL указанных версий до выполнения обновления для проверки совместимости директив, их значений и параметров данных баз данных.

Не используйте какой-либо режим работы сервера MySQL: директива sql-mode должна не иметь значений или должна быть удалена из конфигурации вовсе - это необходимо для обеспечения совместимости с устаревшими типами данных в базах данных.

Подготовка

Совет

В процессе обновления сервера БД панель, сайты и приложения, которые используют данный сервер баз данных, будут недоступны - для обновления выберите время с минимальной нагрузкой на сервер, а также предупредите ваших пользователей!

Убедитесь, что на диске свободно как минимум 2 ГБайта:

df -h /

Убедитесь, что свободно не менее 2 ГБайт оперативной памяти:

free -mh

Обновите все пакеты системы:

dnf update

Отключите мониторинг службы mysqld в панели в разделе Службы через кнопку Мониторинг.

Остановите работу панели ispmanager 6:

/usr/local/mgr5/sbin/mgrctl -m core --lock

Убедитесь, что процессы панели остановлены:

ps aux | grep -i ispmgr | grep -v grep

Скопируйте root-пароль СУБД из /root/.my.cnf и создайте резервную копию (дамп) всех баз данных нативной СУБД:

mysqldump -u root -p<пароль> --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql

Проверьте наличие строки "Dump completed" в дампе - она укажет на успешное создание дампа:

tail <имя_дампа>
Важно!

Наличие успешно созданного дампа критично для обеспечения сохранности всех данных СУБД - крайне не рекомендуется приступать к обновлению, если дамп не был создан корректно!

Если необходимо запустить панель после её остановки ранее, смотрите раздел Запуск и проверка.

Обновление

Остановите службу MySQL:

systemctl stop mysqld

Отключите модули mariadb и mysql из AppStream:

dnf module disable mariadb -y
dnf module disable mysql -y

Подключите репозиторий MySQL 8.4:

tee /etc/yum.repos.d/mysql-community.repo << EOF
[mysql-8.4-lts-community]
name=MySQL 8.4 LTS Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.4-community/el/\$releasever/\$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.mysql.com/RPM-GPG-KEY-mysql-2025
EOF

Ссылка на GPG-ключ может измениться. Проверить актуальный файл с ключом можно в самом репозитории.

Очистите и пересоздайте кэш пакетов:

dnf clean all
dnf makecache

Установите пакеты новой версии MySQL:

dnf install mysql-community-server mysql-community-client

Включите устаревший плагин аутентификации:

echo -e mysql_native_password=ON\\n >> /etc/my.cnf.d/mysql-server.cnf
Обратите внимание!

В MySQL 8.4 плагин mysql_native_password по-прежнему поддерживается для авторизации созданных ранее пользователей, но не может быть назначен в качестве плагина по умолчанию через директиву default-authentication-plugin.

Новые пользователи будут создаваться с авторизацией через caching_sha2_password - это является стандартом безопасности. 

Необходимо изменить метод авторизации всех пользователей MySQL на актуальный по инструкции.

Восстановите кодировку баз данных:

sed -i "s/collation-server = utf8_general_ci/collation-server = utf8mb4_0900_ai_ci/g" /etc/my.cnf.d/mysql-server.cnf
sed -i "s/character-set-server = utf8/character-set-server = utf8mb4/g" /etc/my.cnf.d/mysql-server.cnf

Запуск и проверка

Проверьте основной конфигурационный файл на ошибки:

mysqld --defaults-file=/etc/my.cnf.d/mysql-server.cnf.rpmsave --validate-config

При отсутствии ошибок в конфигурации, восстановите файл:

cp -ar /etc/my.cnf.d/mysql-server.cnf.rpmsave /etc/my.cnf.d/mysql-server.cnf
echo -e \!includedir /etc/my.cnf.d\\n >> /etc/my.cnf

Если вы используете собственные дополнительные конфигурационные файлы, проверьте, исправьте и восстановите их с помощью приведенных выше команд, указав вместо mysql-server.cnf.rpmsave и mysql-server.cnf имена ваших конфигураций.

Запустите и проверьте статус службы MySQL:

systemctl start mysqld
systemctl status mysqld

Включите службу в автозагрузку:

systemctl enable mysqld

Проверьте версию MySQL:

rpm -qa | grep -iE "(mysql|mariadb)" | grep -i server

Если служба по-прежнему не запускается, убедитесь что в конфигурационном файле назначен журнал для директивы log_error и этот журнал. По умолчанию, журнал расположен по пути /var/log/mysql/error.log и посмотреть последние записи можно через команду:

tail -n 50 /var/log/mysql/error.log

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

Проверьте авторизацию в СУБД:

mysql -u root -p

Запустите панель:

/usr/local/mgr5/sbin/mgrctl -m core --unlock

Перейдите в раздел Уведомления и удалите уведомления о решении проблемы службы mysql.

В разделе Конфигурация ПО пункт Сервер СУБД MySQL может быть неактивен - это стандартное поведение панели и связано с ручным изменением нативного ПО.

Действия после обновления

  • У сайтов работающих на PHP-FPM возможно появление ошибки 404 - это связано с отсутствием поддержки ЧПУ у сайта. Вы можете включить поддержку ЧПУ в настройках каждого конкретного сайта в разделе Сайты.
  • В AlmaLinux 8 для phpMyAdmin потребуется по инструкции изменить системный PHP на версию 7.4, поскольку нативная версия 7.2 не поддерживает работу плагина caching_sha2_password и phpMyAdmin не сможет выполнять авторизацию на новый сервер баз данных.
  • Включите мониторинг службы mysqld в панели в разделе Службы через кнопку Мониторинг.